10

我正在使用带有 CVXOPT 二次规划的可选 MOSEK 求解器,即

sol = cvxopt.solvers.qp(-Q,-p,G,h,A,b,solver='mosek')

现在不使用 MOSEK 求解器,即

sol = cvxopt.solvers.qp(-Q,-p,G,h,A,b)

CVXOPT 产生的终端输出可以用命令抑制

cvxopt.solvers.options['show_progress'] = False

但是,这在使用 MOSEK 求解器选项时不起作用。我在几个循环中拥有的 MOSEK 求解器会产生很多我不感兴趣的输出,这意味着我看不到我感兴趣的输出(即我选择使用“打印”输出的内容)。

有谁知道是否可以抑制 MOSEK 输出?或者,如果没有,可能的解决方法(将输出通过管道传输到文件或其他东西)?

非常感谢!

ps 抱歉,我无法包含更具体的标签(我不允许创建新标签)。

4

2 回答 2

4

我不知道如何通过 CVXOPT 传递这些选项,但是在对 CVXOPT 的源代码进行了一些筛选之后,我想出了这个解决方案:

from cvxopt import matrix, solvers
from mosek import iparam
solvers.options['MOSEK'] = {iparam.log: 0}

它适用于 mosek 6。

于 2013-09-13T23:14:54.263 回答
0

这个问题应该在 CVXOPT google-group 上提问(链接自 CVXOPT 主页):

http://groups.google.com/forum/?fromgroups#!forum/cvxopt

无论如何,从文档字符串中:

>>> help(cvxopt.msk.qp)
.
.
   Options are passed to MOSEK solvers via the msk.options dictionary, 
    e.g., the following turns off output from the MOSEK solvers

        >>> msk.options = {mosek.iparam.log: 0} 

    see chapter 15 of the MOSEK Python API manual.
于 2012-06-12T13:03:34.863 回答