【发布时间】:2019-06-28 09:22:26
【问题描述】:
我想构建一个 Google OR Tools 模型,以将 linear_solver 用于 CBC_MIXED_INTEGER_PROGRAMMING。
在Google tutorial 之后,我学会了构建约束,但我有一个问题......是否有必要手写每个约束?
我的意思是,我有以下 DataFrame df_constraint,其中包含 ax+by<=c 形式的约束系数。
+---+---+---+
| A | B | C |
+---+---+---+
| 1 | 5 | 7 |
| 2 | 9 | 3 |
| 3 | 0 | 4 |
+---+---+---+
表格可以翻译成以下约束
# 1x+5y<=7
constraint1 = solver.Constraint(-solver.infinity(), 7)
constraint1.SetCoefficient(x, 1)
constraint1.SetCoefficient(y, 5)
# 2x+9y<=3
constraint2 = solver.Constraint(-solver.infinity(), 3)
constraint2.SetCoefficient(x, 2)
constraint2.SetCoefficient(y, 9)
# 3x<=4
constraint3 = solver.Constraint(-solver.infinity(), 4)
constraint3.SetCoefficient(x, 3)
我想要这样的东西,而不是写每一行:
for index, row in df.iterrows():
constraint = solver.Constraint(-solver.infinity(), row['C'])
constraint.SetCoefficient(x, row['A'])
constraint.SetCoefficient(y, row['B'])
我的 sn-p 不起作用,因为每个约束都必须有不同的名称(例如 constraint1、constraint2、...)。
【问题讨论】:
-
你能用完整的模型和数据框创建一个最小的 sn-p 吗?
-
不明白你可以使用约束数组来存储它们,如果你需要在循环之外访问它们?
标签: python python-3.x pandas constraints or-tools