⑴ 问题描述
有m个完全相同的机器(同型机)M
i(i=1,2,…,m),有n个作业J
j(j=1,2,…,n)需要加工。每个作业的释放时间r
j可能不同,作业J
j可以在任意某一机器上加工,加工时间均为p
j(p
j>0)。同一作业在任意某一时刻只能在某一个机器上加工,同一机器在某一时刻只能加工一个作业。作业允许中断(某一作业完工或有新的作业释放,引起中断)。Online。调度的目标是加工完所有n个作业,且使得最大的作业完工时间最小化。
题目:释放时间不同可中断平行机问题在线算法
⑵ 算法描述
每次有新作业释放,执行如下步骤:
Step 1. 将当前未加工作业(未加工完的作业将其未完成部分看做新作业)按照长作业优先排序;
Step 2. 计算D=max{max{p
j}, ∑p
j/m};
Step 3. 如果D=∑p
j/m,将作业依次放入各机器[0,D]时间区间,超出部分中断后,在另外一个机器继续加工;否则,优先加工最长作业,去除该作业和对应机器,形成作业数和机器上均减1的新问题,转Step 2。
⑶ 程序要求
①输入数据采用随机生成和手动输入两种形式。
②输入数据参数包括:机器数、作业数、作业信息(加工时间、释放时间)。
③输出数据参数包括:每个作业的每一段对应机器、在该机器上加工位置、开始加工的时间、完工时间,每个作业最终的完工时间,所有作业中最大完工时间专业程序代写
c++程序代写