0

我在通过Yalmip设置Quadprog求解器选项时遇到问题。

Options = sdpsettings('solver','quadprog','quadprog.Algorithm', ... 
                      'interior-point-convex','quadprog.Display', ...
                      'iter','quadprog.Diagnostics', 'on');
diagnostics = solvesdp(Constraints , Objective, Options);

但是这些选项设置都不起作用。特别是,它不会迭代地显示进度。文档或常见问题解答也没有太大帮助。

4

1 回答 1

2

要使用与求解器无关的一致方式来控制显示级别,始终通过详细选项进行控制。将其设置为 2,您将设置迭代显示选项。在调用 quadprog 之前,YALMIP 内部的代码如下所示

switch options.verbose
case 0
    options.quadprog.Display = 'off';
case 1
    options.quadprog.Display = 'final';
otherwise
    options.quadprog.Display = 'iter';
end

话虽如此,它不会让你更进一步。在最新版本的 MATLAB 中,出于某种奇怪的原因,他们删除了迭代显示。如果您阅读有关 quadprog 的帮助,它会指出 目前,只有 'final' 和 'off' 是参数 Display 的有效值('iter' 不可用)。

最后,如果您在学术界并且除了较小的 QP 之外,请安装更好的 QP 求解器。Quadprog 充其量是平庸的。cplex、gurobi、xpress 和 mosek 等求解器都有(全功能)免费的学术版本。

于 2012-08-11T06:34:03.563 回答