What's the best way to initialize a simplex for use in a Nelder-Mead simplex search from a user's 'guess' vertex?
相关问题
- How do I speed up profiled NumPy code - vectorizin
- parallel/multithread differential evolution in pyt
- NLopt SLSQP discards good solution in favour of ol
- Element-wise constraints in scipy.optimize.minimiz
- How to solve Absolute Value abs() objective with P
相关文章
- Scipy.optimize.minimize method='SLSQP' ign
- How to perform discrete optimization of functions
- C# - Finding Peaks within a Given Width via Quadra
- NMinimize eats all memory b/c of unnecessary symbo
- How to use constraint programming for optimizing s
- Resuming an optimization in scipy.optimize?
- Minimize quadratic function subject to linear equa
- Matrix completion in Python
I'm not sure if there is a best way to choose the initial simplex in the Nelder-Mead method, but the following is what is done in common practice.
The construction of the initial simplex
S
is obtained from generatingn+1
verticesx0,..,xn
around what you call a user's "guess" vertexxin
in aN
dimensional space. The most frequent choice isand the remaining
n
vertices are then generated so thatwhere
ej
is the unit vector of thej
-th coordinate axis inR^n
andhj
is a step-size in the direction ofej
.with (x0)j the j-th component of x0. Note that this is the choice in Matlab's fminsearch routine, which is based on the Nelder-Mead scheme.
You can find some more information in
F. Gao, L. Han, "Implementing the Nelder-Mead simplex algorithm with adaptive parameters", Comput. Optim. Appl., DOI 10.1007/s10589-010-9329-3
I think there is no general rule to determine best the initial simplex of the Nelder-Mead optimization because this required at least a vague knowledge of the response surface.
However, it can be a reasonable policy to set the points in such a way that the simplex covers virtually the entire possible range. The algorithm of Nelder-Mead will shrink automatically the simplex and aproximate to the optimum. The practical advantage of this policy is that you will obtain a better overall-knowledge of the response-function.
We have done some tests with HillStormer("http://www.berkutec.com"). This program permits to test these policies on testfunctons and we found that this plicy works rather well.
Please remember that the first simplex-opereation is añways a reflection. If the starting simplex covers the whole permitted range the reflection necessarily will give a point off limits. But HillStormer allows to use linear constraints and can avoid this problem.
You can find some more information in the system-help of HillStormer.
B. Kühne