ROI软件包未提供无约束QP的解决方案(qpoases求解器)

时间:2018-07-24 13:15:09

标签: r optimization quadratic-programming quadprog r-optimization

我正在设置一个简单的QP来测试ROI R软件包。但是,在不受限制的情况下,该包装无法为简单的玩具问题提供错误的解决方案。

示例

# Maximize -1/2 x^2 + x, no constraints
> x <- OP(Q_objective(as.matrix(-1), 1), maximum = TRUE, bounds = V_bound(lb = -Inf, ub = Inf, nobj = 1))
> x
> ROI Optimization Problem:

  Maximize a quadratic objective function of length 1 with
  - 1 continuous objective variable,

  subject to
  - 0 constraints
  - 1 lower and 0 upper non-standard variable bounds.

看起来不错。但是当我解决问题时,

> sol <- ROI_solve(x, solver = 'qpoases')
> sol
  No optimal solution found.
  The solver message was: Initialisation failed! QP could not be solved!
  The objective value is: 0.000000e+00
> sol$solution
  [1] 0
> sol$objval
  [1] 0
> sol$status
  $code
  [1] 1

  $msg
   solver qpoases
    code 36
   symbol RET_INIT_FAILED_HOTSTART
   message Initialisation failed! QP could not be solved!
   roi_code 1

太奇怪了。值得一提的是,当我使用Quadprog求解器时,我可以得到不受约束的解决方案(= 1),但是由于其他原因,我不得不从使用Quadprog切换到qpoases。

非常感谢您的帮助。

编辑:

这很奇怪,

> ROI_solve(OP(Q_objective(as.matrix(-1), 1), maximum = TRUE), solver = 'qpoases')
  No optimal solution found.
  The solver message was: Initialisation failed! QP could not be solved!
  The objective value is: 0.000000e+00
> ROI_solve(OP(Q_objective(as.matrix(1), -1), maximum = FALSE), solver = 'qpoases')
  Optimal solution found.
  The objective value is: -5.000000e-01

1 个答案:

答案 0 :(得分:1)

如果参数hessian_type不是由参数hessian_type提供的,则此不同结果是由参数hessian_type中设置的不同值导致的。 用户ROI.plugin.qpoases选择hessian_type = 6。而且由于 选择的第一个示例的粗麻布类型选择中的错误 对于第一个示例hessian_type = 1(未知),对于第二个示例 正确的x1 <- OP(Q_objective(as.matrix(-1), 1), maximum = TRUE, bounds = NULL) s1 <- ROI_solve(x1, solver = 'qpoases', hessian_type = 1L) solution(s1) x1 <- OP(Q_objective(as.matrix(-1), 1), maximum = TRUE, bounds = NULL) s1 <- ROI_solve(x1, solver = 'qpoases', hessian_type = 6L) solution(s1) 身份。

{{1}}

此问题已在新版本中修复,并且新版本正在向CRAN推出。