MATLAB Answers

0

Incorrect solution for symmetric problems in fmincon

Sargondjani さんによって質問されました 2019 年 4 月 22 日
最新アクティビティ Sargondjani さんによって コメントされました 2019 年 4 月 22 日
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

  0 件のコメント

サインイン to comment.

1 件の回答

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

  1 件のコメント

Sargondjani 2019 年 4 月 22 日
Thanks for the quick reply!
What I don't understand then: if the algorithm compared the change in the objective function and the linear constraint at the stationary point it should conclude that moving away from the stationary point increases the value of the objective function. It seems to me that it could conclude that from a comparison of the gradient of objective & linear constraint.
And are there any algothims that actually achieve this?

サインイン to comment.



Translated by