我对Google或工具(以及一般的约束编程)还不熟悉,我正试图在Jobshop示例中添加截止日期,但它并没有真正起作用。在
我所举的工作商店的例子可以在这里找到:https://developers.google.com/optimization/scheduling/job_shop#entire-program
我改变了一些事情:
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}$
它不起作用,因为您在为引用创建的
for
循环中引入了约束。 创建一个新循环并从for task_id in range(len(job) - 1)
中删除-1
。在您也可以在创建end_var时通过限制其上限来设置截止日期。在
另外,这个github问题有一些你可以使用的想法:https://github.com/google/or-tools/issues/960
相关问题 更多 >
编程相关推荐