{"action":"created","issue":{"url":"https://api.github.com/repos/scipy/scipy/issues/8098","repository_url":"https://api.github.com/repos/scipy/scipy","labels_url":"https://api.github.com/repos/scipy/scipy/issues/8098/labels{/name}","comments_url":"https://api.github.com/repos/scipy/scipy/issues/8098/comments","events_url":"https://api.github.com/repos/scipy/scipy/issues/8098/events","html_url":"https://github.com/scipy/scipy/pull/8098","id":269352754,"node_id":"MDExOlB1bGxSZXF1ZXN0MTQ5MzU2OTQ2","number":8098,"title":"ENH: Add shgo for global optimization of NLPs.","user":{"login":"Stefan-Endres","id":8235072,"node_id":"MDQ6VXNlcjgyMzUwNzI=","avatar_url":"https://avatars2.githubusercontent.com/u/8235072?v=4","gravatar_id":"","url":"https://api.github.com/users/Stefan-Endres","html_url":"https://github.com/Stefan-Endres","followers_url":"https://api.github.com/users/Stefan-Endres/followers","following_url":"https://api.github.com/users/Stefan-Endres/following{/other_user}","gists_url":"https://api.github.com/users/Stefan-Endres/gists{/gist_id}","starred_url":"https://api.github.com/users/Stefan-Endres/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Stefan-Endres/subscriptions","organizations_url":"https://api.github.com/users/Stefan-Endres/orgs","repos_url":"https://api.github.com/users/Stefan-Endres/repos","events_url":"https://api.github.com/users/Stefan-Endres/events{/privacy}","received_events_url":"https://api.github.com/users/Stefan-Endres/received_events","type":"User","site_admin":false},"labels":[{"id":37340735,"node_id":"MDU6TGFiZWwzNzM0MDczNQ==","url":"https://api.github.com/repos/scipy/scipy/labels/enhancement","name":"enhancement","color":"bfe5bf","default":true},{"id":37341011,"node_id":"MDU6TGFiZWwzNzM0MTAxMQ==","url":"https://api.github.com/repos/scipy/scipy/labels/scipy.optimize","name":"scipy.optimize","color":"207de5","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/scipy/scipy/milestones/36","html_url":"https://github.com/scipy/scipy/milestone/36","labels_url":"https://api.github.com/repos/scipy/scipy/milestones/36/labels","id":3257163,"node_id":"MDk6TWlsZXN0b25lMzI1NzE2Mw==","number":36,"title":"1.2.0","description":"","creator":{"login":"pv","id":35046,"node_id":"MDQ6VXNlcjM1MDQ2","avatar_url":"https://avatars1.githubusercontent.com/u/35046?v=4","gravatar_id":"","url":"https://api.github.com/users/pv","html_url":"https://github.com/pv","followers_url":"https://api.github.com/users/pv/followers","following_url":"https://api.github.com/users/pv/following{/other_user}","gists_url":"https://api.github.com/users/pv/gists{/gist_id}","starred_url":"https://api.github.com/users/pv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pv/subscriptions","organizations_url":"https://api.github.com/users/pv/orgs","repos_url":"https://api.github.com/users/pv/repos","events_url":"https://api.github.com/users/pv/events{/privacy}","received_events_url":"https://api.github.com/users/pv/received_events","type":"User","site_admin":false},"open_issues":10,"closed_issues":285,"state":"open","created_at":"2018-04-10T20:26:02Z","updated_at":"2018-11-07T04:51:51Z","due_on":"2018-11-09T08:00:00Z","closed_at":null},"comments":28,"created_at":"2017-10-28T21:49:18Z","updated_at":"2018-11-07T05:50:51Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/scipy/scipy/pulls/8098","html_url":"https://github.com/scipy/scipy/pull/8098","diff_url":"https://github.com/scipy/scipy/pull/8098.diff","patch_url":"https://github.com/scipy/scipy/pull/8098.patch"},"body":"Hello everyone.\r\n\r\nAs has been alluded to in previous e-mails to the SciPy mailing lists, we introduce the simplicial homology global optimisation (shgo) algorithm; a global optimisation (GO) algorithm written in pure Python (MIT license).\r\n\r\nIntroduction\r\n----\r\nshgo solves general black box problems of the following form:\r\n\r\n       minimize f(x) subject to\r\n\r\n       g_i(x) >= 0,  i = 1,...,m\r\n       h_j(x)  = 0,  j = 1,...,p\r\n\r\nwhere x is a vector of one or more variables.\r\n   ``f(x)`` is the objective function ``f: R^n -> R``.\r\n   ``g_i(x)`` are the inequality constraints ``g: R^n -> R^m``.\r\n   ``h_j(x)`` are the equality constraints  ``h: R^n -> R^p``.\r\n\r\n\r\nThe project website provides a quick overview of the algorithm, it's usage and performance (and some aesthetically pleasing figures): https://stefan-endres.github.io/shgo/\r\n\r\nInstallation, usage and testing\r\n---\r\nThe shgo module is published on PyPi under a MIT license and can be installed on your system for immediate use:\r\n\r\n```$ pip install shgo```\r\n\r\nThe latest version can be cloned from this GitHub repository: https://github.com/Stefan-Endres/shgo\r\n\r\nFor a quick example using non-linear inequality and equality constraints see this subsection:\r\nhttps://stefan-endres.github.io/shgo/#cattle-feed-hs73-problem-with-non-linear-constraints\r\n\r\nAs you can see the input is very similar to [`scipy.optimize.minimize`](https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.optimize.minimize.html) using the `SLSQP` method.\r\n\r\nNote that while the test suite for shgo is relatively extensive and covers every method currently available in `scipy.optimize.minimize`, it is probably inevitable that there are many more bugs and issues that will arise. Aside from issues in this PR, please raise any issues on the [repository](https://github.com/Stefan-Endres/shgo) or e-mail them to me directly stefan.c.endres@gmail.com.\r\n\r\nPerformance\r\n---\r\nThis link contains the performance profiles for shgo:\r\nhttps://stefan-endres.github.io/shgo/#performance-summary\r\n\r\nFrom the figures shgo compares very favourably to the other GO algorithms currently available in SciPy:\r\nhttps://stefan-endres.github.io/shgo/#open-source-black-box-algorithms\r\n\r\nNote that shgo is a deterministic algorithm so you should be able to replicate these results on your own system using the SciPy GO benchmarking suite. *Note, however, that 3 of these test problems take a very long time to run so I highly recommend using the `maxtime` option for shgo.* (I have never had a successful run with any of the other GO algorithms currently available in SciPy on these problems).\r\n\r\nFurther results against cutting edge blackbox GO algorithms that allow for constraints, also reveal a competitive performance for shgo. The algorithms in these tables were previously shown to be very competitive against the black box algorithms implemented in MATLAB. The MATLAB implementations were shown to have the best performance in an extensive study comparing a large number of popular and recent commercial and open source black box solvers (see this subsection for references to these publications):\r\n\r\nhttps://stefan-endres.github.io/shgo/#recently-published-black-box-algorithms\r\n\r\nScope\r\n---\r\nAs with most black box algorithms. The shgo is most algorithm is generally applicable to low dimensional black box problems ([~10-dimensional problems](https://www.youtube.com/watch?v=fhNuspYbMeI)) unless more information can be supplied to the algorithm. This is not necessarily only gradients and hessians. For example, if it is known that the decision variables of the objective function are symmetric, then the symmetry option can be used in order to solve problems with hundreds of variables.\r\n\r\nMaintenance and further work\r\n---\r\nIf accepted into SciPy the code will be maintained there and/or in the PyPi module by [me](https://github.com/Stefan-Endres/shgo) and [my adviser](https://github.com/alchemyst). If shgo is wanted, I also assume there will be many additional changes requested, especially with respect to documentation, code style and additional unit tests in this PR.\r\n\r\nThank you for taking your time to read this PR.\r\n"},"comment":{"url":"https://api.github.com/repos/scipy/scipy/issues/comments/436512729","html_url":"https://github.com/scipy/scipy/pull/8098#issuecomment-436512729","issue_url":"https://api.github.com/repos/scipy/scipy/issues/8098","id":436512729,"node_id":"MDEyOklzc3VlQ29tbWVudDQzNjUxMjcyOQ==","user":{"login":"rgommers","id":98330,"node_id":"MDQ6VXNlcjk4MzMw","avatar_url":"https://avatars3.githubusercontent.com/u/98330?v=4","gravatar_id":"","url":"https://api.github.com/users/rgommers","html_url":"https://github.com/rgommers","followers_url":"https://api.github.com/users/rgommers/followers","following_url":"https://api.github.com/users/rgommers/following{/other_user}","gists_url":"https://api.github.com/users/rgommers/gists{/gist_id}","starred_url":"https://api.github.com/users/rgommers/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rgommers/subscriptions","organizations_url":"https://api.github.com/users/rgommers/orgs","repos_url":"https://api.github.com/users/rgommers/repos","events_url":"https://api.github.com/users/rgommers/events{/privacy}","received_events_url":"https://api.github.com/users/rgommers/received_events","type":"User","site_admin":false},"created_at":"2018-11-07T05:50:51Z","updated_at":"2018-11-07T05:50:51Z","author_association":"MEMBER","body":"- @ilayn's comments have not yet been addressed, but as I commented before they can be fixed later.\r\n- latest commits look good, code is quite clean now.\r\n- many commits are merged or fixes, history is not so clean. it'll be hard to clean that up, so I'll go for a squash merge.\r\n- the benchmark results look quite good, however `shgo` isn't yet added to the SciPy benchmark suite. Let's do this the same as for `dual_annealing`, adding it in a separate PR.\r\n\r\nIn it goes. It took a while, but it'll be a highlight of the 1.2.0 release. Thanks a lot @Stefan-Endres, @alchemyst, all!"}}
{"actor":{"display_login":"rgommers"}}