我正在尝试使用有效集方法为线性约束最小化问题设置 fmincon ,其中最小化目标函数 @fun ,使< / p>
但是这些试验在历史上更多地引发了奇怪的错误。
试用1
[x,fval]=fmincon(@fun, Guess, A, b)
试用2
options = optimoptions('fmincon','Algorithm','active-set'); [x,fval]=fmincon(@fun, Guess, A, b, options)
答案 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);