【问题标题】:optimize with non-linear constraint in python - division by sum of variables在python中使用非线性约束进行优化-除以变量的总和
【发布时间】:2019-08-10 12:21:32
【问题描述】:

我有一个优化问题。我所有的其他约束都是线性的,但我有一个这样的约束:

在这个等式中,s 和 r 和 k 是我有值的常数,a 和 s 是未知参数。

其实目标函数是:

它还有一些其他的线性约束。

我正在寻找一个 python 包,它可以解决这个问题,并且可以将我上面提到的那个约束作为优化问题的参数。 我首先搜索了线性规划解决方案,但是当我尝试在纸浆中进行该约束时,我得到了这个错误:

TypeError: Non-constant expressions cannot be multiplied

【问题讨论】:

  • 尝试非线性规划。如果一个约束是非线性的,则不能使用 LP。
  • p 值是已知的还是未知的?
  • 可以引入一个辅助变量t > 0,将约束替换为C_i = t * a_i * p_i^(1-r)
  • @GZ0 他们在我有值的数组中已知。

标签: python optimization linear-programming


【解决方案1】:

PySCIPOpt 可以做到这一点:

from pyscipopt import Model
model = Model()
x = model.addVar("x")
y = model.addVar("y")
z = model.addVar("z")
model.setObjective(c)
model.addCons(x / (y*z) >= 0)
model.optimize()

您可以用这种方式制定任何多项式表达式。

【讨论】:

    猜你喜欢
    • 2014-03-13
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    相关资源
    最近更新 更多