【问题标题】:How to declare two dimensional and three dimensional vector in Pyomo如何在 Pyomo 中声明二维和三维向量
【发布时间】:2018-08-11 17:44:01
【问题描述】:

我正在尝试使用 Pyomo 解决优化问题。为此,我需要声明一个二维向量和一个三维向量。两个向量都只能存储[0,1]。

Sri 和 Xrij

R=3 V=8 1

我尝试在 pyomo 中使用 range

model.IDXV = range(v+1)
model.IDXR = range(r+1)
model.x=Var(model.IDXR,model.IDXV,model.IDXV,within=Binary,initialize=0)
model.s=Var(model.IDXR,model.IDXV,within=Binary,initialize=0) 

我正在使用“ipopt”求解器,但执行后 X 和 S 的值是分数而不是 0 或 1。

请帮我做这件事。

【问题讨论】:

  • 正如here 所讨论的:IPOPT 不适用于整数和二进制问题。它将二进制变量视为实数。

标签: python-3.x nonlinear-optimization pyomo


【解决方案1】:

Axel Kemper(在 cmets 中)是正确的。 ipopt 是一个非线性规划求解器,它会自动假设您打算放宽离散值。

对于线性离散问题,有cbcglpk 免费求解器。 gurobicplex 是主要的商业解决者。

对于非线性离散问题,couennebonmin 是免费求解器。其他几个商业和学术求解器也可用。

【讨论】:

  • 感谢Qi Chen的帮助我已经尝试了couenne solver,但是评估结果需要花费很多时间(4小时)。我的问题是非线性的,它有 445 个约束、248 个二进制变量和 8 个整数变量,范围为 1 到 8。他们还有其他方法可以快速获得结果吗?
  • 您需要保证全局最优结果吗?
  • 是的,我需要全局最优。
  • scip 有一个免费的学术许可证,所以你可以试试。否则,baron 是一个不错的商业选择。你的问题也是非凸的吗?
  • 是的,我的问题是非凸的。除了这两个之外,还有哪些可能的选择来完成这项工作?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-01
  • 2013-05-05
相关资源
最近更新 更多