1

我正在使用CP. 我有2种决策变量,即每个节点的排序和开始时间。

排序变量包含节点编号,每个节点的开始时间取决于它的行进顺序。因此,我需要使用排序变量作为开始时间变量的索引。

但我得到了这个错误:

 <docplex.cp.expression.CpoIntVar object at 0x0000022A9E070C70>

这就是我编写代码的方式:

x={d:sub.integer_var_list(n[d],0, len(I)-1,"X") for d in D}
start={d:{i:sub.interval_var(start=[t[0][i],T-p[i,d]-t[i][len(I)-1]],size=p[i,d]) for i in C[d]} for d in D}

sub.add(sub.sum(sub.end_of(start[d][x[d][n[d]-2]]),t[x[d][n[d]-2]][x[d][n[d]-1]])<=T)

感谢您在这方面帮助我

4

1 回答 1

0

在约束编程中使用决策变量的索引操作可以使用element全局约束来实现。elementCP Optimizer 的 Python 接口中的约束文档可在此处找到: https ://ibmdecisionoptimization.github.io/docplex-doc/cp/docplex.cp.modeler.py.html#docplex.cp.modeler.element

这意味着不是y = x[i]wherei是一个变量,而是写y = model.element(x, i).

于 2021-03-17T23:15:23.517 回答