慕晓耳鸣 2023-06-15 09:36 采纳率: 0%
浏览 25

分支限界法求解批处理任务调度问题

有n个任务(编号为1~n)要在由两台机器M1和M2组成的流水线上完成加工。每个任务加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工任务i所需的时间分别为ai和bi(1≤i≤n),要求确定这n个任务的最优加工顺序,使得从第一个任务在机器M1上开始加工,到最后一个任务在机器M2上加工完成所需的时间最少。

  • 写回答

1条回答 默认 最新

  • 玥轩_521 新星创作者: 网络协议与安全技术领域 2023-06-15 11:11
    关注

    这是一个经典的工厂调度问题,被称为"流水线调度问题"。可以使用贪心算法解决。

    一种可行的做法是:将所有的任务在M1和M2上各处理一遍,得到在M1和M2上的处理时间分别为Ti和Ui,记录当前的加工顺序为S(即第i个任务是S[i]),则从M1到M2的总处理时间即为T1+T2,其中:

    T1 = max(ai1, ai2+bi1, ai3+bi1+bi2, ..., ai(n-1)+bi1+bi2+...+bi(n-2), ain+bn-1+bn)

    T2 = max(bn, bn-1+an, ..., b2+a3+...+an, b1+a2+...+an)

    上述计算过程中,T1计算了从M1到M2完整处理整个任务序列(从左到右)所需的最短时间,T2计算了从M2到最后(从右到左)完成所有任务所需的最短时间。

    现在的问题是确定任务的最优加工顺序。由于我们的目标是使总处理时间最小,那么可以考虑使用贪心策略,优先加工处理时间短的任务。

    具体做法是:首先计算每个任务在M1和M2上分别所需的时间,即Ti = ai + ui(i=1, 2, ..., n),其中ui表示在它前面的任务在M1和M2上加工所需的时间。由于T1和T2都是最大值,因此可以考虑从Ti的最大值开始(即从处理时间最长的任务开始),将任务依次加入到加工序列S中。

    评论

报告相同问题?

问题事件

  • 创建了问题 6月15日