Matlab fmincon设置变量变化不够

时间:2017-03-01 13:20:16

标签: matlab optimization

我第一次使用fmincon。我有这个BlackBox,我不能详细说明,但它是一个数值分析,误差为〜1e-2至〜1e-4。即使我给出完全相同的输入变量。

我一直在监视fmincon变量,并且它从起点值变化很小,以便在模型中产生差异,而且可能只是试图找到数值分析误差的梯度。

mc = 0;         % My Default value
pmc = 0;        % My Default value
t = 0.1200;     % My Default value

% Setup for fmincon
ObjFcn = @run_transonic_wing_fluent_template;
X0   = [mc,    pmc,    t]; nvars = length(X0);           % Variables - Default values!
A = [];
B = [];
Aeq = []; 
Beq = [];
LB  = [0,     0,      0.07];        % Lower Boundaries
UB  = [0.095,     0.9,    0.20];        % Upper Boundaries
NONLCON = [];
OPTIONS = optimset('MaxIter',600, 'MaxFunEval',600, 'TolX',1e-4);


[X,FVAL,EXITFLAG,OUTPUT,LAMBDA,GRAD,HESSIAN] = fmincon(ObjFcn, X0, A, B, Aeq, Beq, LB,UB, NONLCON, OPTIONS);

START POINT X(0):

X(0) = [0, 0, 0.12] -> BlackBox(X(0)) = 1.704732e-02

FMINCON尝试以下几点。

X'(1) = [0, 0, 0.12]        -> BlackBox(X'(1)) = 1.704732e-02 
X'(2) = [1.49e-08, 0, 0.12] -> BlackBox(X'(2)) = 1.704732e-02 
X'(3) = [0, 1.49e-08, 0.12] -> BlackBox(X'(3)) = 1.704732e-02 
X'(4) = [0, 0, 0.12]]       -> BlackBox(X'(4)) = 1.704732e-02 

在这四点之后它说:满足约束的局部最小值并给我X = [0, 0, 0.12] 但我知道它甚至没有尝试改变t的值?并且变量m和p对我的几何不会做任何事情,除非它们都具有大于0的值。所以这四个模拟都给出完全相同的几何。

1.49e-08的这些值更改对解决方案没有实际影响。是否有可能使我所设定的边界更具侵略性?

2 个答案:

答案 0 :(得分:0)

参数MaxFunEval具有可疑的低值(10)。请将它增加到1000,看看它是怎么回事。它有什么改变吗?

答案 1 :(得分:0)

您是否尝试更改FunctionToleranceStepTolerance