我不确定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);
,一切正常。如果我想添加另一个依赖项,例如inp_2
,允许值介于0
至360
之间,则可以将向量x
设置为x(1) = inp_1;
和{{1 }}并将x(2) = inp_2
传递给fmincon。
以这种方式,选项不再正确,因为我需要设置其他选项,尤其是对于x
和DiffMinChange
。对于多重约束,哪种方法最好呢?
答案 0 :(得分:1)
据我所知,选项DiffMinChange
和DiffMaxChange
始终适用于整个矢量,并且不能按元素进行调整。
您可以做的是将所有变量标准化为单位[0,1]
的间隔,以便使用DiffMinChange
和DiffMaxChange
中的全局设置可以正常工作。然后在成本函数中应用非规范化。