对fmincon有多重约束? MATLAB

时间:2019-02-08 15:38:11

标签: matlab optimization

我不确定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);

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

以这种方式,选项不再正确,因为我需要设置其他选项,尤其是对于xDiffMinChange。对于多重约束,哪种方法最好呢?

1 个答案:

答案 0 :(得分:1)

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

您可以做的是将所有变量标准化为单位[0,1]的间隔,以便使用DiffMinChangeDiffMaxChange中的全局设置可以正常工作。然后在成本函数中应用非规范化。