我不确定fmincon
是使用多个参数进行优化的最佳解决方案。
我想优化两个参数:inp_1
1
和 2
之间允许的值,我使用了这段代码
inp_1 = 1
Ub= 2*inp_1 ; Lb= 0.5*inp_1;
options = optimoptions('fmincon',...
'FiniteDifferenceType','central',...
'DiffMaxChange',0.5,...
'DiffMinChange',1e-1,...
'MaxIter',20,...
'MaxFunEvals',200,...
'Display','iter',... % 'iter'
'OptimalityTolerance',1e-13);
[param,distance,exitflag,output,lambda,grad,hessian] = fmincon(@optimization_func,inp_1 ,[],[],[],[],[],Lb,Ub,options);
一切正常。如果我想添加另一个依赖项,例如允许值在 0
到 360
之间的inp_2
,我可以将向量x
设置为 x(1) = inp_1;
和 x(2) = inp_2
并将x
传递给 fmincon。
这样选项就不再正确了,因为我需要设置其他选项,尤其是对于DiffMinChange
和DiffMaxChange
。对于多种不同的约束,哪个是最佳解决方案?
据我所知,选项 DiffMinChange
和 DiffMaxChange
始终适用于整个向量,并且不能按元素进行调整。
您可以做的是将所有变量规范化为单位[0,1]
区间,以便您可以接受DiffMinChange
和DiffMaxChange
的全局设置。然后在成本函数中应用非规范化。