Incorrect solution for symmetric problems in fmincon

3 views (last 30 days)
If I maximize XX(1)^2+XX(2)^2 subject to x1 + x2 <=1 and use starting value X0=[0.5,0.5] I get as solution X=[0.5,0.5], although the two optima are X=[1,0] and X=[0,1].
Any clue how to prevent this from happening? (Other than using an asymmetric starting value). I already tried changing algorithm to sqp but that doesn't help.
See code:
function [XX,VAL] = test_con_opt()
clc;
close all;
dbstop if error;
sum_x = 1;
AA = [1,1];
bb = sum_x; %Inequality constraint: x1 + x2 <= sum_x
lb = [0,0];
pwr = 2;
%X0 = [0.25,0.75];
%X0 = [0.75,0.025];
X0 = [0.5,0.5];
[XX,mVAL] = fmincon(@(XX)obj_fun(pwr,XX(1),XX(2)),X0,AA,bb,[],[],lb);
VAL = - mVAL;
end
function [mVAL] = obj_fun(pwr,x1,x2)
mVAL = - (x1^pwr + x2^pwr);
end

Accepted Answer

Alan Weiss
Alan Weiss on 22 Apr 2019
fmincon is a gradient-based algorithm. When your initial point is [0.5,0.5], the gradient is zero, and fmincon stops, since it is at a stationary point.
In general, you can take random initial points, which are unlikely to be exact stationary points (assuming that stationary points are isolated).
Alan Weiss
MATLAB mathematical toolbox documentation
  3 Comments
Matt J
Matt J on 18 Dec 2021
Edited: Matt J on 18 Dec 2021
It seems to me that it could conclude that from a comparison of the gradient of objective & linear constraint.
On the contrary, the gradient of the objective at your initial point is grad=[-1,-1]. Therefore in both feasible directions u= [1,-1] and u=[-1,1], the directional derivative is zero. So, the algorithm cannot see a feasible direction of increase or decrease.
Sargondjani
Sargondjani on 18 Dec 2021
Thanks Matt. I understand now it's really a second order thing.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!