我第一次使用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
的这些值更改对解决方案没有实际影响。是否有可能使我所设定的边界更具侵略性?
答案 0 :(得分:0)
参数MaxFunEval
具有可疑的低值(10)。请将它增加到1000,看看它是怎么回事。它有什么改变吗?
答案 1 :(得分:0)
您是否尝试更改FunctionTolerance
和StepTolerance
?