Incorrect solution for symmetric problems in fmincon

조회 수: 1 (최근 30일)
Sargondjani
Sargondjani 2019년 4월 22일
댓글: Sargondjani 2021년 12월 18일
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

채택된 답변

Alan Weiss
Alan Weiss 2019년 4월 22일
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
Matt J
Matt J 2021년 12월 18일
편집: Matt J 2021년 12월 18일
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 2021년 12월 18일
Thanks Matt. I understand now it's really a second order thing.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by