MATLAB Answers

Result of fmincon()

4 ビュー (過去 30 日間)
Maroco Sc
Maroco Sc 2019 年 10 月 2 日
Commented: Maroco Sc 2019 年 10 月 11 日
In this code:
x0 = [1 1]; % Starting point
UB = [1 1]; % Upper bound
LB = [0 0]; % Lower bound
options = optimset('LargeScale', 'off', 'MaxFunEvals', 1000, 'TolFun', 1e-6, 'TolCon', 1e-6, 'disp', 'off');
% Create constraint bound vector:
n = 50; % Number of Pareto points
eps_min = -1; eps_max = 0;
epsval = eps_min:(eps_max - eps_min)/(n-1):eps_max;
% Solve scalarized problem for each epsilon value:
xopt = zeros(n,length(x0));
for i=1:n
xopt(i,:)=fmincon('obj_eps', x0, [], [], [], [], LB, UB,...
'nonlcon_eps', options, epsval(i));
end
function [C,Ceq] = nonlcon_eps(x, epsval)
Ceq = [];
C(1) =x(2)+(x(1)-1)^3;
C(2) = -x(1) - epsval;
this solution
xopt(1,:) = [0.999999999395037, 2.08338048669441e-10]
has been obtaind by fmincon() . However, when I use it to get the constraints value, the results were:
C(1) = 2.0834e-10
C(2) = 6.0496e-10
C(1) and C(2) are > 0, the solution xopt(1,:) violated the constraints. Therefore, it should not be returned by fmincon().
I could not understand why the fmincon() returned it as a best solution?

  0 件のコメント

サインイン to comment.

件の回答 (1)

Alan Weiss
Alan Weiss 2019 年 10 月 6 日
The returned values are within the constraint tolerance. See Tolerances and Stopping Criteria.
Alan Weiss
MATLAB mathematical toolbox documentation

  2 件のコメント

Matt J
Matt J 2019 年 10 月 6 日
Note however that you can do a bit better with constraint enforcment by replacing C(2) with a bound constraint
UB = [1 1]; % Upper bound
LB = [-epsval 0]; % Lower bound
simple bound constraints can be enforced exactly by fmincon.
Maroco Sc
Maroco Sc 2019 年 10 月 11 日
Thank you. Could you please check this question

サインイン to comment.

サインイン してこの質問に回答します。

製品


リリース

R2018b

Translated by