{"action":"created","issue":{"url":"https://api.github.com/repos/scipy/scipy/issues/7648","repository_url":"https://api.github.com/repos/scipy/scipy","labels_url":"https://api.github.com/repos/scipy/scipy/issues/7648/labels{/name}","comments_url":"https://api.github.com/repos/scipy/scipy/issues/7648/comments","events_url":"https://api.github.com/repos/scipy/scipy/issues/7648/events","html_url":"https://github.com/scipy/scipy/issues/7648","id":245066330,"number":7648,"title":"minimize_constrained interface","user":{"login":"antonior92","id":16557411,"avatar_url":"https://avatars0.githubusercontent.com/u/16557411?v=4","gravatar_id":"","url":"https://api.github.com/users/antonior92","html_url":"https://github.com/antonior92","followers_url":"https://api.github.com/users/antonior92/followers","following_url":"https://api.github.com/users/antonior92/following{/other_user}","gists_url":"https://api.github.com/users/antonior92/gists{/gist_id}","starred_url":"https://api.github.com/users/antonior92/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/antonior92/subscriptions","organizations_url":"https://api.github.com/users/antonior92/orgs","repos_url":"https://api.github.com/users/antonior92/repos","events_url":"https://api.github.com/users/antonior92/events{/privacy}","received_events_url":"https://api.github.com/users/antonior92/received_events","type":"User","site_admin":false},"labels":[{"id":37340735,"url":"https://api.github.com/repos/scipy/scipy/labels/enhancement","name":"enhancement","color":"bfe5bf","default":true},{"id":37341011,"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":null,"comments":4,"created_at":"2017-07-24T12:37:33Z","updated_at":"2017-07-25T10:17:50Z","closed_at":null,"body":"Hi all!\r\n\r\nI am working on a constrained optimizer solver for my GSoC project. I started on a separate repository and I am working now on a pull request to integrate it to SciPy. In order to prooced we have to make the following decision: should we fit the constrained solver to the ``minimize`` interface or should we create a new one?\r\n\r\nThe best idea we came up with to try to fit the new solver into the ``minimize`` interface is to create a ``Constraints`` class and use it to pass the constraints specifications.\r\n\r\nI am, however, more and more conviced that the best option would be to create a new function ``minimized_constrained``. This new interface would be used to constrained minimization problems and I would include both SLSQP and COBLYA to it. The ``minimize`` interface would be reserved for unconstrained and bound-constrained problems.\r\n\r\n\r\nI think it would be better for the following reasons:\r\n\r\n1. The ``minimize`` interface would be kept simple and reserved for unconstrained problems and problems with simple bound constraints.\r\n2. We would have more freedom designing a ``minimize_constrained`` interface that best suit our needs.\r\n3. The burden of implementing and including SLSQP and COBLYA to a new interface is not much greater than the burden of fitting the constrained solver being implemented into minimize.\r\n4. This new interface could be used for new constrained solvers included to scipy.\r\n\r\nLet me elaborate on 1: I want to include finite-derivative options, quasi-newton options, different ways of passing constraints, different ways of passing second order information... All of that requires a great deal of documentation and the need of including several arguments to the function signature. And my point is: why to complicate ``minimize`` interface for something that will only be used by a single solver method?\r\n\r\nThe idea is to create a new interface so we keep ``minimize`` interface clean and easy to use. It would also give us more freedom for creating a better ``minimize_constrained`` interface.\r\n\r\nI would much appreciate any feedback on this.\r\n"},"comment":{"url":"https://api.github.com/repos/scipy/scipy/issues/comments/317694452","html_url":"https://github.com/scipy/scipy/issues/7648#issuecomment-317694452","issue_url":"https://api.github.com/repos/scipy/scipy/issues/7648","id":317694452,"user":{"login":"pv","id":35046,"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},"created_at":"2017-07-25T10:17:50Z","updated_at":"2017-07-25T10:17:50Z","body":"As I see it the broad intent of minimize() had two aims (i) provide a \nsingle \"domain-specific language\" for specifying the optimization \nproblem, and (ii) unify the naming conventions of several solver tuning \noptions such as termination tolerances insofar as it's possible.\n.\nAn optimization problem DSL is something that many optimization packages \nhave. Now, one concern in adding a new entry point is that then you have \ntwo incompatible ways of specifying constrained problems.\n.\nOf course, it may be the minimize() way of problem specification is not \nso convenient. But if this is the problem, maybe there is some way to \naddress it?\n"}}
{"actor":{"display_login":"pv"}}