多重约束到fmincon?马特拉布



我不确定fmincon是使用多个参数进行优化的最佳解决方案。

我想优化两个参数:inp_1 12 之间允许的值,我使用了这段代码

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);

一切正常。如果我想添加另一个依赖项,例如允许值在 0360 之间的inp_2,我可以将向量x设置为 x(1) = inp_1;x(2) = inp_2 并将x传递给 fmincon。

这样选项就不再正确了,因为我需要设置其他选项,尤其是对于DiffMinChangeDiffMaxChange。对于多种不同的约束,哪个是最佳解决方案?

据我所知,选项 DiffMinChangeDiffMaxChange 始终适用于整个向量,并且不能按元素进行调整。

您可以做的是将所有变量规范化为单位[0,1]区间,以便您可以接受DiffMinChangeDiffMaxChange的全局设置。然后在成本函数中应用非规范化。

最新更新