3

我正在尝试使用 ortools 为作业车间问题设置自定义目标函数,但我对如何实现它感到困惑。我正在尝试将所有工作的迟到最小化,但是我不确定如何创建一个迟到系数来最小化。

我的理解是,我需要创建一个具有范围的 intvar 才能进入目标监视器。这个对吗?如果是这样,任何人都可以指出如何创建它的方向吗?我目前的目标是获取一系列到期日期,并将其从每个作业的最后一次操作的结束时间中减去,我只是不确定如何将其输入求解器。

以下来自谷歌教程:

  obj_var = solver.Max([all_tasks[(i, len(machines[i])-1)].EndExpr()  
                        for i in all_jobs])



  objective_monitor = solver.Minimize(obj_var - obj_end, 1)
4

1 回答 1

1

为记录作答。

  1. 请使用 CP-SAT 求解器。
  2. 迟到是通过加权迟到示例 (C++) 实现的。

https://github.com/google/or-tools/blob/stable/examples/cpp/weighted_tardiness_sat.cc

于 2019-03-23T10:37:19.347 回答