gpt4 book ai didi

or-tools - 使用 OR-Tools CP Solver 应用约束条件

转载 作者:行者123 更新时间:2023-12-03 16:40:35 28 4
gpt4 key购买 nike

我正在为 Job-Shop 问题实现一个类似的解决方案,但有一个区别:我不知道必须执行每项任务的机器。解决这个问题也是问题的一部分。事实上,我们可以说,我正在尝试解决护士问题和工作车间问题的组合。

更具体地说,我有一些持续时间为 D 的任务 T,由于他们的性质 N(假设前端任务、后端任务等),这些任务必须由某些特定员工 E 以特定顺序 O 执行。

我有:

  • 可以获取 E 范围内的值的 T int vars 数组(将要执行任务的员工)。
  • 一组固定的持续时间间隔变量(以知道它的持续时间 D 来安排它们)。
  • E 序列变量,它应该是员工将要执行的任务序列(间隔变量)。
  • 任务和员工之间关系 N 的一些约束。
  • 订单 O 的一些其他约束。

  • 解决这个问题的一种方法是:先解决分配问题,然后安排任务。我已经做到了这一点。

    但是我想将它作为一个独特的解决方案来实现。

    我被困在这个:如何创建一个依赖于我之前创建的 int vars 的析取约束?

    对于那些需要查看代码的人:
    for i in range(number_employees):
    disj = solver.DisjunctiveConstraint([interval_var[task_id] if int_var[task_id] == i] ,'i_name')
    [...]

    当然,那是行不通的。

    我真的很感激任何建议。

    最佳答案

    应该看看 CP-SAT 求解器。
    它支持半具体化的约束。
    也就是说,(在python中):

    model.AddNoOverlap([list of intervals]).OnlyEnforceIf(boolvar)

    model.Add(x == i).OnlyEnforceIf(boolvar)

    model.Add(x != i).OnlyEnforceIf(boolvar.Not())


    见: https://github.com/google/or-tools/blob/master/ortools/sat/doc/index.md

    关于or-tools - 使用 OR-Tools CP Solver 应用约束条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51357851/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com