【问题标题】:R language how to do optimization with either/or constraints? [closed]R语言如何使用/或约束进行优化? [关闭]
【发布时间】:2018-04-21 15:49:08
【问题描述】:

我正在尝试使用 R 进行约束优化。我的约束不是连续的。这是一个例子:

minimize: f(x,y)=(x-2)^2+y^2
st. x=0 or x>=3
y=0 or y>=2

这是什么类型的优化问题?

【问题讨论】:

  • 如果你绘制域我想你会发现它是连续的。
  • 它是连续的但不再是凸的。有趣的是,凸性可以通过离散优化技术来处理。

标签: r optimization constraints


【解决方案1】:

这些被称为半连续变量。一些求解器直接支持这些,但也可以使用额外的二进制变量来制定它们:

 3*d <= x <= 1000*d
 d binary

无论如何,您最终都会得到一个 MIQP 模型(混合整数二次规划)。像 Gurobi 和 Cplex 这样的求解器支持这一点并具有 R 接口。

【讨论】:

  • 感谢欧文的回复!我有几个问题。既然 x 大于 3,我们还能用二进制编码吗?似乎它只适用于
  • d 只能假设两个值:0 或 1。如果为 0,则遵循 x=0。如果 1 我们有3&lt;=x&lt;=1000。这是一个非常标准的公式。如何告诉求解器变量d 是二进制的,取决于求解器和API。
  • 谢谢欧文。如果 x 落在 3 和 1000 之间,我看到二进制工作得很好。但是如果我只想将 x 设置为 0 或 >=1000,我们还可以使用二进制编码吗?
  • 半连续变量允许边界[L,Infinity)。二元变量方法需要一些上限,例如1000*d &lt;= x &lt;= 100000*d。在实际应用中,我们总是知道一个合理的上限。
  • 有道理。半连续变量似乎适用于我的情况。我发现 LpSolve 可以解决这个问题。但是,我的目标函数是非线性的,但不一定是二次的(可以是 y^4.5 而不是 y^2)。似乎包括 Gurobi 在内的许多求解器只处理线性和二次函数,而不是更复杂的目标函数?有没有其他 R 包可以处理它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-05
  • 2020-09-26
  • 1970-01-01
  • 2012-12-08
  • 2011-07-23
相关资源
最近更新 更多