2
$\begingroup$

I am using FindMinimum to get a local minimum to a non-liner function of 50 variables on [0,1]^50 with some additional constraints. I provide FindMinumum with a feasible point which reaches a function value of 0.74 and surprisingly FindMinimum get me as answer another feasible but with a worse value of 0.81 (after 500 iterations with the message: FindMinimum::cvmit: Failed to converge to the requested accuracy or precision within 500 iterations.

I do not understand why the algorithm is providing a worse answer than the one provided by the initial point. I have tried different choices for the Method but with similar behavior, so:

Can someone provide an explanation or suggest how to proceed?

Many thanks in advance.

$\endgroup$
  • 5
    $\begingroup$ No, probably nobody can explain that without having a look at the actual code you have used. Moreover, not all minimization algorithms are driven by creating a sequence that is monotonically decreasing w.r.t. the objective function, the Newton algorithm being a prominent example. In particular those methods that can treat inequality constraints often lack this monotonicity property. These try to solve the KKT conditions, and in that respect, the obtained point (along with its Lagrange multipliers that are not returned by FindMinimum) may be better than the starting value. $\endgroup$ – Henrik Schumacher Aug 26 '18 at 11:46
  • 2
    $\begingroup$ I ran into this many years ago, using FindMinimum to post-process NMinimize. Wolfram Support even called me up to discuss it, but they seemed uninterested in unreliability (as I saw it) of FindMinimum to do no harm; however, they were quite proud to find an undocumented option that gave a better result from NMInimize. So the issue has been around a while. I think @Henrik's remark points to the likely problem, but it also seems that with two lines of code in the internal function one could fix the problem. $\endgroup$ – Michael E2 Aug 26 '18 at 13:51