首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用CVXR创建MOSEK可行性报告的参数

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

Stack Overflow用户
提问于 2019-11-26 05:43:31
回答 1查看 185关注 0票数 0

我正在使用CVXR通过MOSEK求解器解决R中的一个优化问题。CVXR已经通过ANACONDA找到了MOSEK求解器,并且工作正常。然而,当模型不可行时,我不能设法生成MOSEK可行性报告。这通常是通过MSK_IPAR_INFEAS_REPORT_AUTO = " on“打开的(至少在GAMS中,我以前使用过MOSEK ),这对于识别模型设计、数据等方面的问题非常有用。然后我尝试了Python接口,它告诉我应该使用: task.putintparam(iparam.infeas_report_auto,onoffkey.on)。这似乎被我的solve命令接受了,但仍然没有输出可行性报告。下面是一个可重现的例子。我做错了什么?

代码语言:javascript
复制
# 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))

仅提供标准输出:

问题名称:

客观感觉:最小

类型: LO (线性优化问题)约束:2

圆锥体:0

标量变量:1

矩阵变量:0

整型变量:0

优化器已启动。预解析已启动。消除器已启动。消除器中释放的约束:0消除器已终止。消除器已启动。消除器中释放的约束:0消除器已终止。消除器-尝试次数:2次: 0.00

林。副警长。-尝试次数:0时间: 0.00

林。副警长。-数量:0

预解析已终止。时间: 0.00

优化器已终止。时间: 0.01

内点解决方案摘要问题状态: DUAL_INFEASIBLE解决方案状态: DUAL_INFEASIBLE_CER原始。obj:-1.0000000000e+00 nrm: 1e+00 Viol.con: 0e+00变量: 0e+00

基本解决方案摘要问题状态: DUAL_INFEASIBLE解决方案状态: DUAL_INFEASIBLE_CER原始。obj:-1.0000000000e+00 nrm: 1e+00 Viol.con: 0e+00变量: 0e+00

EN

回答 1

Stack Overflow用户

发布于 2019-11-26 15:44:17

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

代码语言:javascript
复制
sol <- psolve(problem, solver = "MOSEK", verbose = TRUE, 
       mosek_params=list("MSK_IPAR_INFEAS_REPORT_AUTO" = 1) )

但是,这将无法工作,因为

https://github.com/cvxgrp/CVXR/blob/master/inst/python/mosekglue.py#L36

存在过多的self,可能是未经测试就从CVXPY复制过来的。好的,您可以转到CVXR安装中的相同文件,删除self.,但它几乎不会工作,除了1是R中的双精度数,而不是整数,所以MOSEK不会将其作为值。

因此,最终:您必须1)对上面提到的第36行进行修复,并将其更改为

代码语言:javascript
复制
_handle_mosek_params(task, solver_opts["mosek_params"])

(删除开头的self. )然后2)编写更麻烦的代码

代码语言:javascript
复制
sol <- psolve(problem, solver="MOSEK", verbose="TRUE", 
       mosek_params=list('MSK_IPAR_INFEAS_REPORT_AUTO' = as.integer(1)))

类似的技巧适用于所有参数设置。不幸的是,字符串MSK_ON不会被接受为值,这主要是因为在CVXPY中这不是必需的(有Python枚举)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59040539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档