我有一份工作安排问题。我们给出了开始时间和时间 完成订单,截止日期。
给出start time + time
complete <= deadline
。
如果我不能,我也会得到失败 在截止日期前完成工作。我必须设计一种算法来减少损失。
我尝试更改动态编程的标准算法,以最大限度地提高作业调度的利润,但没有成功。
我可以使用什么算法来解决问题?
答案 0 :(得分:0)
动态编程不是基于您的目标优化的正确方法。您可以使用贪婪的方法找到优化的计划。
这是一个完整的guide,其中包含您所需语言(C ++)的示例代码,在本指南中假设每个作业只需要1个单位时间,您可以使用time_to_complete
轻松修改。
答案 1 :(得分:0)
你的问题与背包类似。如果你实际上并没有寻找最好的解决方案,那么使用贪婪的方法很方便,但只需要足够好&#34;一。
贪婪方法的最大优点是成本相当低于其他更彻底的&#34;但是,如果您需要 最佳解决方案,我会说回溯是可行的方法。
答案 2 :(得分:0)
由于可以违反期限,因此问题看起来像是 Total Weighted Tardiness 调度问题。它有很多风格,但是在这个伞下的大多数问题在计算上都很困难,因此动态编程(DP)并不是我的首选。以我的经验,DP在建模和实现过程中也会遇到困难。对数学编程“按原样”的相同注释。可以更快实施的一些方法是: