我正在使用 CVXR 使用 MOSEK 求解器解决 R 中的优化问题。CVXR 通过 ANACONDA 找到了 MOSEK SOLVER 并且工作正常。但是,当模型不可行时,我无法生成 MOSEK 可行性报告。这通常通过 MSK_IPAR_INFEAS_REPORT_AUTO = "ON" 开启(至少在 GAMS 中,我之前使用过 MOSEK)并且对于识别模型设计、数据等方面的问题非常有用。标准命令给了我一个错误。然后我尝试了 Python 接口,它告诉我使用:task.putintparam(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))
仅给出标准输出:
问题名称:
客观意义:min
类型:LO(线性优化问题) 约束:2 个
锥体:0
标量变量:1
矩阵变量:0
整数变量:0
优化器启动。预求解开始。消除器启动。消除器中释放的约束:0 消除器终止。消除器启动。消除器中释放的约束:0 消除器终止。消除器 - 尝试:2 次:0.00
林。部 - 尝试:0 次:0.00
林。部 - number : 0
Presolve 终止。时间:0.00
优化器终止。时间:0.01
内点解决方案摘要 问题状态:DUAL_INFEASIBLE 解决方案状态:DUAL_INFEASIBLE_CER 原始。obj:-1.0000000000e+00 nrm:1e+00 Viol。缺点:0e+00 变量:0e+00
基本解决方案摘要 问题状态:DUAL_INFEASIBLE 解决方案状态:DUAL_INFEASIBLE_CER 原始。obj:-1.0000000000e+00 nrm:1e+00 Viol。缺点:0e+00 变量:0e+00