Interior point shifting initial solution when not necessary

5 views (last 30 days)
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?

Answers (0)

Products


Release

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!