[SciPy-Dev] Using global minimizer methods from `optimize.minimize` function

Andrew Nelson andyfaff at gmail.com
Tue Apr 28 19:52:36 EDT 2020


`optimize.minimize` offers a choice of many different methods for
multivariate scalar minimisation. These methods are chosen using the
`method` keyword.

There are also different global minimisation routines that one can use
(differential_evolution, basinhopping, dual_annealing, shgo). These
minimisers have the same overall objective as `minimize`, just with a
different approach to finding a minimum. The global minimiser routines are
called individually, and are not accessible through the `minimize` function
as different methods. A PR is open at
https://github.com/scipy/scipy/pull/10778 which proposes to add a
`differential-evolution` method to `minimize` that would permit this. This
is a fairly straightforward change as the call interfaces are almost
identical, and the problems are posed in similar ways.

There are obviously pros and cons to this:

Pros
------
- One could call any of the multivariate scalar minimizers through one
function.
- In user code this could simplify code significantly (code that offers all
the different minimizers has to use if/elif constructs to call different
functions depending on the method to be used).

Cons
-------
- A user may not appreciate the differences of how local and global
minimisers work. e.g. a lot of the global minimisers are stochastic and
some use local minimisers to polish the end solution.

Could we have a discussion as to whether people think this is a good/bad
idea? Would it confuse users, would it make `minimize` too convoluted, etc?

A.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/scipy-dev/attachments/20200429/d5096e15/attachment.html>


More information about the SciPy-Dev mailing list