【问题标题】:mosek parameter settings in cvxpycvxpy中的mosek参数设置
【发布时间】:2020-03-09 19:15:18
【问题描述】:

我正在尝试设置“mosek_param”设置,但出现错误。比如下面这种情况

MSK_IPAR_INTPNT_SOLVE_FORM

Controls whether the primal or the dual problem is solved.
Default:
  "FREE"
Accepted:
  "FREE", "PRIMAL", "DUAL"
Example:
  param.MSK_IPAR_INTPNT_SOLVE_FORM = 'MSK_SOLVE_FREE'
Groups:
  Interior-point method

来自https://docs.mosek.com/9.0/toolbox/parameters.html --> 我试过了

prob.solve(solver=MOSEK,
mosek_params={mosek.iparam.intpnt_solve_form: mosek.solve.primal},     # mosek.iparam.presolve_use:mosek.presolvemode.off
verbose=True)

但是,遇到错误....注释部分有效。

当我在 Matlab 中工作时 --> 使用

cvx_solver_settings('MSK_IPAR_INTPNT_SOLVE_FORM','MSK_SOLVE_PRIMAL')

对我来说效果很好。但是,在目前的情况下不起作用。此外,我能够设置精度如下

cvx_precision low

但是,现在不能这样做。是否有另一种方法可以在 cvxpy 中完成这两项工作?谢谢。

PS:这个问题也发在CVXPY论坛了-->https://groups.google.com/forum/#!topic/cvxpy/MEAewGMlqjI


下面是一个例子

# Solves a bounded least-squares problem.

import mosek
from cvxpy import *
import numpy

# Problem data.
m = 10
n = 5
numpy.random.seed(1)
A = numpy.random.randn(m, n)
b = numpy.random.randn(m)

# Construct the problem
x = Variable(n)
objective = Minimize(sum_squares(A*x - b))
constraints = [0 <= x, x <= 1]
prob = Problem(objective, constraints)

prob.solve(solver=MOSEK,
mosek_params={mosek.iparam.intpnt_solve_form: mosek.solve.primal},     # mosek.iparam.presolve_use:mosek.presolvemode.off
verbose=True)

这给了我error。我也尝试使用 'MSK_IPAR_INTPNT_SOLVE_FORM' = 'MSK_SOLVE_PRIMAL' 但无济于事。

【问题讨论】:

  • 您在 cvxpy 中尝试时究竟遇到了什么错误?请发布整个错误消息。如果不知道错误是什么,谁能提供帮助?
  • 关于精度,你必须设置这里提到的参数docs.mosek.com/9.1/pythonapi/…
  • @MichalAdamaszek 我刚刚添加了一个示例以及我收到的错误消息。

标签: cvxpy cvx


【解决方案1】:

【讨论】:

  • 感谢您的帮助!你能告诉我docs.mosek.com/9.1/pythonapi/… 中的公差精度如何与cvxr.com/cvx/doc/solver.html#interpreting 中的各种cvx precision 公差相关吗?特别想知道我可以设置哪些参数来实现cvx_precision low的场景
  • @user11726509 在大多数情况下,您必须同时放宽表中提到的所有参数。问题是你为什么要这样做?
  • 我想避免调整其中的每一个 (4) 容差:ε_p、ε_d、ε_g、ε_i 因此,我正在寻找一个等效的 cvx_precision low 来调整 (3) 容差--ε_solver ,ϵ_standard,ϵ_reduced——每一个都是根据 Matlab 的机器精度定义的:ϵ。但是,我不确定这些 (3) 公差如何转换为 mosek 的 (4) 公差:?因此,我在这里查看了 cvx_precision 的文档:github.com/cvxr/CVX/blob/master/commands/cvx_precision.m 但是,并没有真正看到联系。对此的任何帮助将不胜感激。
  • 当我在 Matlab 端工作时,使用 cvx_precision low 对我来说效果很好。
  • @user11726509 您将不得不查看 cvx 代码并确切了解当精度设置为低时它会做什么。当然可以对其进行逆向工程以查看设置了哪些参数。
猜你喜欢
  • 1970-01-01
  • 2019-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多