# The solution found by the optimization function when exitflag is negative

I'm using Matlab's fmincon to solve a constrained nonlinear optimization for varying sets of parameters in the objective function. I have 2 parameters and have 400 unique combination of these 2 parameters. Within a particular combination of parameters I use a range of start points (100 start points). Trying to do rough simulation of multi-start functionality using optimization toolbox.

For a given combination of parameters in objective function, majority of the start points would solve the optimization problem and exit with a positive exitflag like 1 and in some cases 2. But for very small number of cases, the program would finish with an exitflag of -3 which corresponds to objective function at current iteration went below options.ObjectiveLimit and maximum constraint violation was less than options.TolCon.. In such cases, the output message mentions about problem might be unbounded. One example message is below

Problem appears unbounded.

fmincon stopped because the objective function value is less than the default value of the objective function limit and constraints are satisfied to within the default value of the constraint tolerance.

Stopping criteria details:

fmincon stopped because the objective function value, -5.374294e+40, is less than options.ObjectiveLimit = -1.000000e+20, and the relative maximum constraint violation, 0.000000e+00, is less than options.TolCon = 1.000000e-06.

Optimization Metric Options objective value = -5.37e+40 ObjectiveLimit = -1e+20 (default) relative max(constraint violation) = 0.00e+00 TolCon = 1e-06 (default)

Here are my questions: -

a) If the problem was able to find local minima for certain start points (as indicated by exitflag 1) within a particular combination of parameters, why does few other start points mention about problem being "unbounded" (exitflag -3).

b) When the exitflag is -3, the objective function value returned by fmincon does NOT match the explicit calculation of function value at the x point returned by fmincon. Matlab link on Current Point and Function value mentions "The function value is the value of the objective function at the current point." which does not state restriction on exitflags. On the other hand, Output Arguments states this for x "The solution found by the optimization function. If exitflag > 0, then x is a solution; otherwise, x is the value of the optimization routine when it terminated prematurely." possibly implying that if exitflag is negative then The function value is NOT the value of the objective function at the current point. I'm not sure whether it is inconsistent documentation or a mis-interpretation on my part?

Lastly, will draw attention to the statement Exit flags are not infallible guides to the quality of a solution. Many other factors, such as tolerance settings, can affect whether a solution is satisfactory to you. You are responsible for deciding whether a solver returns a satisfactory answer. Sometimes a negative exit flag does not correspond to a "bad" solution. Similarly, sometimes a positive exit flag does not correspond to a "good" solution.. I can understand +ve exitflags not being necessarily good in all scenarios, but why would a negative exitflag not necessarily mean a "bad" solution?

• Have you examined the solution returned by fmincon? Does it satisfy your constraints? Is its objective function value really -5.4e+40? – Brian Borchers Jul 30 '14 at 4:18
• Is your optimization problem actually unbounded but you want to find a local minimum point? – Brian Borchers Jul 30 '14 at 4:19
• @Brian (responding to 1st comment) - The objective function value is NOT -5.4e+40 and that is why I posed question b). The point x returned at exit of program when substituted in to objective function does not produce the function value returned by fmincon. (Do note, that the point x returned by fmincon does satisfy the constraints). – Hari Jul 30 '14 at 14:21
• There's likely a bug in your code that evaluates the objective function then. – Brian Borchers Jul 30 '14 at 16:20
• The objective function handle that I pass to fmincon is the same objective function that I use post the completion of fmincon to substitute the optimal x and compare with optimal function value. It is internally consistent. Could this be floating point issue? or as I mentioned in point b of my question could it be possible that when exitflag is negative, the optimal x returned and the optimal function value are not same – Hari Jul 30 '14 at 20:54