使用可变资源映射对作业调度问题建模

Modeling a job-scheduling problem with variable resource mapping

我是 google or-tools 的新手,我正在尝试解决以下问题:

我想找到一个最小的完工时间并且我想知道:

我通过以下方式实现了优先约束:

from ortools.sat.python import cp_model

njobs = 5
precedence_constraints = [
    (0, 3),
    (0, 2),
    (1, 2),
    (2, 3),
    (2, 4)
]

model = cp_model.CpModel()

job_time = [ model.NewIntVar(0, njobs-1, 'j{}'.format(i)) for i in range(njobs) ]

for p, n in precedence_constraints:
    model.Add(job_time[p] < job_time[n])

model.Minimize(sum(job_time))

solver = cp_model.CpSolver()
status = solver.Solve(model)

for i in range(0, njobs):
    print('j{} = {}'.format(i, solver.Value(job_time[i])))

我不明白如何实现资源映射。

您可以尝试将其建模为近乎经典的灵活作业车间:

https://github.com/google/or-tools/blob/stable/examples/python/flexible_job_shop_sat.py

此外,您还添加了一个累积资源来帮助传播(请参阅 or-tools 邮件列表上正在进行的讨论:https://groups.google.com/forum/?hl=kn#!topic/or-tools-discuss/0syUImixcFI),并且活动副本的总和可能会更大比 1.

这不是最有效的方法,但以这种方式开始更容易。如果所有持续时间不相等,它会更健壮。