【问题标题】:R Mosek using quadratic programmingR Mosek 使用二次规划
【发布时间】:2019-03-01 15:47:30
【问题描述】:

我找到了 RMosek 库来解决优化问题。就我而言,我将使用二次优化。这是有关 Rmosek 上的二次优化的文档:https://docs.mosek.com/9.0/rmosek/tutorial-qo-shared.html#

比如我有这个问题:

min y1^2 + y2^2 x1 + y1 - x2 - y2 > 0 x1+x2=2

我不明白如何将我的公式转换为矩阵公式。我认为文档中的示例不是很清楚。有人能帮我吗?

【问题讨论】:

  • 如果没有经验,您可能想使用更高级的东西,例如cvxr
  • 好的!谢谢!我会检查的:)

标签: r optimization


【解决方案1】:

我假设您的变量按 (x1,x2,y1,y2) 排序,即 x1 的索引为 1,依此类推,直到 y2 的索引为 4。然后您的二次目标指定为

prob$qobj$i <- c(3, 4)
prob$qobj$j <- c(3, 4)
prob$qobj$v <- c(2, 2)

对于线性部分,您应该使用矩阵

1 -1 1 -1
1 1 0 0 

边界是

prob$bc <- rbind(blc=c(0,2), buc=c(Inf,2))

顺便说一句,如果您真的只想最小化向量的范数,最好使用二次圆锥和圆锥优化,而不是将其公式化为二次项。

【讨论】:

  • 谢谢米哈尔! :) 我将研究二次圆锥和圆锥优化。 :)
  • 你能解释一下对象 i 和对象 j 的区别吗?对象 v 包含我认为的指数。
  • @TheAvenger v 包含系数并且 (i,j) 是索引。例如,如果您有一个二次项 10 * x9 * x7(或对称形式 0.5*(10*x9*x7+10*x7*x9)),则 i=9, j=7, v=10(仅下三角形部分已指定)。如果你有 1*x5^2(即 0.5*(2*x5*x5)),那么 i=5, j=5, v=2。
猜你喜欢
  • 2012-09-03
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多