【问题标题】:How we can use a decision variable as an index of another decision variable using ILOG CP optimizer in python?我们如何在 python 中使用 ILOG CP 优化器将决策变量用作另一个决策变量的索引?
【发布时间】:2021-06-14 11:32:51
【问题描述】:

我正在使用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)

感谢您在这方面帮助我

【问题讨论】:

    标签: python constraint-programming ilog docplex cp-optimizer


    【解决方案1】:

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

    这意味着您应该写成y = model.element(x, i),而不是y = x[i],其中i 是一个变量。

    【讨论】:

    • 感谢您的回复。但是,不幸的是,我无法理解如何使用它我阅读了文档但我无法解决它。 @Dekker1 你能否为这个约束举例说明我如何使用元素: 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]])
    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 2019-12-12
    相关资源
    最近更新 更多