如何在googleortools的jobshop示例中添加截止日期?

2024-04-27 03:51:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Google或工具(以及一般的约束编程)还不熟悉,我正试图在Jobshop示例中添加截止日期,但它并没有真正起作用。在

我所举的工作商店的例子可以在这里找到:https://developers.google.com/optimization/scheduling/job_shop#entire-program

我改变了一些事情:

  • 我在jobs数据和task类型namedtuple中添加了deadline参数。
  • 然后我在模型中添加了一个deadline变量。
  • 最后,我给模型添加了一个约束,其中任务.结束必须小于或等于截止日期。model.Add(all_tasks[job_id, task_id].end <= all_tasks[job_id, task_id].deadline)

但它不起作用。它确实做了一些事情,因为它输出的时间表改变了,当我输入不可能的最后期限时,它返回0个结果。但它没有适当地考虑到最后期限。我做错什么了?在

这是我修改后的版本的输出:

Optimal Schedule Length: 11
Machine 0: job_0_0   job_1_0
           [0,3]     [3,5]
Machine 1: job_2_0   job_0_1   job_1_2
           [0,4]     [4,6]     [6,10]
Machine 2: job_1_1   job_0_2   job_2_1
           [5,6]     [6,8]     [8,11]

如您所见,作业0的截止日期为7,但在计划中,截止日期为8。在

以下是我的完整修改示例:

^{pr2}$

Tags: 工具模型id示例task编程googlejob
1条回答
网友
1楼 · 发布于 2024-04-27 03:51:07

它不起作用,因为您在为引用创建的for循环中引入了约束。 创建一个新循环并从for task_id in range(len(job) - 1)中删除-1。在

您也可以在创建end_var时通过限制其上限来设置截止日期。在

另外,这个github问题有一些你可以使用的想法:https://github.com/google/or-tools/issues/960

相关问题 更多 >