【发布时间】:2019-08-31 00:06:40
【问题描述】:
我正在将一些代码从 OPL 传输到 docplex,但我遇到了切片语法问题。我正在尝试创建一组约束,其中包含与另一个决策变量连接的所有值的总和。
我已经尝试过add_constraints 和add_constraint(在 for 循环中),但我遇到了无效的语法错误。我在 Google OR 中使用了这种格式,所以我希望它可以工作。
这是我的 OPL 代码:
forall(<var1,var3> in Index2)
sum(<var1,var2,var3> in Index1)
dev_var[var1,var2,var3] == cec_var2[<var1,var3>];
我在 docplex 中尝试了以下内容:
for row2 in df1.itertuples():
solver.add_constraint(solver.sum(dec_var[row.var1,row.var2,row.var3]
for row in df2.itertuples()) == dec_var2[row2.var1,row2.var3]
if row2.var1 = row.var1 and row2.var3 = row.var3)
我希望为每个 var1,var3 组合创建一个约束,其中包括在另一个索引/数据框中找到的 var1,var2,var3 的所有相关索引。如果包含“if”语句,我会收到“无效语法”错误,但如果没有它,我会得到包含另一个索引的完整笛卡尔连接的约束,而没有任何过滤。
【问题讨论】:
标签: docplex