Matlab:带有active-set方法的fmincon语法和只有不等式约束?

时间:2013-10-25 21:56:13

标签: matlab math syntax warnings constraints

我正在尝试使用有效集方法为线性约束最小化问题设置 fmincon ,其中最小化目标函数 @fun ,使< / p>

enter image description here

但是这些试验在历史上更多地引发了奇怪的错误。

试用1

[x,fval]=fmincon(@fun, Guess, A, b)

试用2

options = optimoptions('fmincon','Algorithm','active-set');
[x,fval]=fmincon(@fun, Guess, A, b, options)

1 个答案:

答案 0 :(得分:2)

您使用的算法选项错误。 MATLAB查看您提供的参数并使用使用这些参数的算法。它会发出警告,因为不同的算法可能会有不同的结果(您永远不应忽略这些)'trust-region-reflective'是fmincon的默认算法。来自文档:

  

'trust-region-reflective'要求你提供渐变,和   仅允许边界或线性相等约束,但不能同时允许两者。

您对fmincon的调用文档说:

  

x = fmincon(fun,x0,A,b)从x0开始并尝试查找最小化器   有趣的x的函数受线性不等式的影响   A *x≤b。 x0可以是标量,向量或矩阵。

您可能打算使用

  

x = fmincon(fun,x0,A,b,Aeq,beq)

你将拥有A = [],b = [],并且Aeq和beq是你之前拥有A和b的任何东西(如果你想使用信任区域反射)。

您的第二次审判无效,因为您实际上是在呼叫x = fmincon(fun,x0,A,b,Aeq,beq)。相反,您尝试传递选项结构。

This page explains how to set options

编辑:如果要传递选项,则必须指定所有可选参数:

[x,fval] = fmincon(@DijIIii,x0, A , b,[], [], [], [],@nonlcon,options);