使用CVXR创建MOSEK可行性报告的参数

使用CVXR创建MOSEK可行性报告的参数,r,parameters,mosek,cvxr,R,Parameters,Mosek,Cvxr,我正在使用CVXR使用MOSEK解算器解决R中的一个优化问题。CVXR通过ANACONDA找到了MOSEK解算器,工作正常。然而,当模型不可行时,我无法生成MOSEK可行性报告。这通常通过MSK_IPAR_INFEAS_REPORT_AUTO=“on”(至少在GAMS中,我以前使用过MOSEK)打开,对于识别模型设计、数据等方面的问题非常有用。标准命令会给我一个错误。然后我尝试了Python接口,它告诉我使用:task.putintpram(iparam.infeas_report_auto,o

我正在使用CVXR使用MOSEK解算器解决R中的一个优化问题。CVXR通过ANACONDA找到了MOSEK解算器,工作正常。然而,当模型不可行时,我无法生成MOSEK可行性报告。这通常通过MSK_IPAR_INFEAS_REPORT_AUTO=“on”(至少在GAMS中,我以前使用过MOSEK)打开,对于识别模型设计、数据等方面的问题非常有用。标准命令会给我一个错误。然后我尝试了Python接口,它告诉我使用:task.putintpram(iparam.infeas_report_auto,onoffkey.on)。我的解决方案司令部似乎接受了这一点,但仍然没有给出可行性报告。下面是一个可复制的示例。我做错了什么


# Check solvers
installed_solvers()

# Main variable
x <- Variable(1)

# Objective function
objective <- x

# Constraint
constraint <- list(x >0, x-1>0)

# Solve
problem <- CVXR::Problem(Maximize(objective), c(constraint))
sol <- psolve(problem, solver = "MOSEK", verbose = TRUE, task.putintparam(iparam.infeas_report_auto, onoffkey.on))

#解算器
已安装的解算器()
#主要变量

我看了一遍代码。正确的语法原则上应与CVXPY中的相同,即:

sol <- psolve(problem, solver = "MOSEK", verbose = TRUE, 
       mosek_params=list("MSK_IPAR_INFEAS_REPORT_AUTO" = 1) )
(开始时删除
self.
),然后2)编写更麻烦的代码

sol <- psolve(problem, solver="MOSEK", verbose="TRUE", 
       mosek_params=list('MSK_IPAR_INFEAS_REPORT_AUTO' = as.integer(1)))

sol这看起来不太可能是通过CVXR设置MOSEK参数的正确语法,尽管说实话,我不知道正确的语法。你在什么地方找到它了吗?我注释掉了:self。在modesglue.py文件中处理mosek参数(task,solver_opts[“mosek_params]”),并尝试了你建议的代码
sol@MichielvanDijk不要注释掉整行,只需删除
self即可。
(保留函数调用的其余部分)@如果时间允许,我将在CVXR中发出一个pull请求,解决这个问题,并可能稍微改进参数处理,使其看起来更像R中的或您在GAMS中编写的。
sol <- psolve(problem, solver="MOSEK", verbose="TRUE", 
       mosek_params=list('MSK_IPAR_INFEAS_REPORT_AUTO' = as.integer(1)))