0

我正在尝试使用 active-set 方法设置fmincon以解决线性约束最小化问题,其中最小化目标函数@fun使得

在此处输入图像描述

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

试验 1

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

试验 2

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

1 回答 1

2

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

'trust-region-reflective' 要求您提供渐变,并且只允许边界或线性等式约束,但不能同时提供。

您致电 fmincon 的文档说:

x = fmincon(fun,x0,A,b) 从 x0 开始,并尝试找到 fun 中描述的函数的最小化函数 x 服从线性不等式 A*x ≤ b。x0 可以是标量、向量或矩阵。

您可能打算使用

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

您将拥有 A = []、b = [],并且 Aeq 和 beq 是您之前拥有的 A 和 b(如果您想使用 trust-region-reflective)。

您的第二次试用没有成功,因为您实际上是在打电话x = fmincon(fun,x0,A,b,Aeq,beq)。相反,您尝试传递一个选项结构。

本页说明如何设置选项

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

[x,fval] = fmincon(@DijIIii,x0, A , b,[], [], [], [],@nonlcon,options);
于 2013-10-26T02:44:37.587 回答