Interior point shifting initial solution when not necessary
5 次查看(过去 30 天)
显示 更早的评论
I need to optimize a problem for which I have an already good estimate of the global optimum. I need to do this with fmincon using the interior-point algorithm.
My initial estimate x0 has some values that are exactly on the boundary (i.e. x0 == lb or x0 == ub for some elements of x0). The documentation for fmincon states that a solution x is valid with respect to the bounds when lb ≤ x ≤ ub. However, the boundary check in fmincon.m is carried out with the following two lines of code:
violatedLowerBnds_idx = XOUT(xIndices.finiteLb) <= l(xIndices.finiteLb);
violatedUpperBnds_idx = XOUT(xIndices.finiteUb) >= u(xIndices.finiteUb);
which will fail when some values are equal to the boundary.
- First of all, this seems to be in disagreement with the documentation.
- Second, this will cause fmincon to shift the initial point x0 to some other value x0' determined by the sub-function shiftInitPtToInterior, whose behavior is not documented and that will completely destroy the initial esteem (x0' <<>> x0).
Why is the initial solution shifted despite being valid? How to avoid this with the interior-point algorithm?
0 个评论
回答(0 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!