步骤:

  1. 首先,将m个机器初始化为空闲状态,即可用。

  2. 对作业按照加工时间从大到小进行排序,以便能够优先安排较长的作业。

  3. 对每个作业,遍历m个机器,选择最早完成的机器进行加工,即选择剩余加工时间最短的机器。

  4. 将当前作业分配给选中的机器,并更新该机器的剩余加工时间。

  5. 重复步骤3和4,直到所有作业都被分配完毕。

  6. 返回最后一台机器的剩余加工时间,即为多机调度的较短时间。

伪代码:

function scheduleJobs(jobs, machines):
    sort jobs in descending order based on processing time
    
    initialize an array of length machines to store remaining processing time for each machine
    for i from 1 to n:
        minTime = infinity
        minMachine = -1
        for j from 1 to machines:
            if remainingTime[j] < minTime:
                minTime = remainingTime[j]
                minMachine = j
        assign job i to minMachine
        remainingTime[minMachine] += processingTime[i]
    
    maxTime = -1
    for i from 1 to machines:
        if remainingTime[i] > maxTime:
            maxTime = remainingTime[i]
    
    return maxTime

注释:

  1. 对作业按照加工时间从大到小进行排序,以便能够优先安排较长的作业。

  2. 遍历m个机器,选择最早完成的机器进行加工,即选择剩余加工时间最短的机器。

  3. 将当前作业分配给选中的机器,并更新该机器的剩余加工时间。

  4. 返回最后一台机器的剩余加工时间,即为多机调度的较短时间

使用贪心法求解多机调度问题某工厂有n=12n个独立的作业由m=12m;台相同的机器进行加工处理。作业i所需的加工时间为1;lin每个作业可以在任何一台机器I加工处。任何作业在被处理时不能中断也不能进行拆分处理。现要求给出一种作业调度方案算出n个作业由m台机器加工处理的较短时间。例如n=7m-3作业号 作业的处理时间1 22 143

原文地址: https://www.cveoy.top/t/topic/hQ9G 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录