📜  有截止日期的安排

📅  最后修改于: 2022-05-13 01:56:11.456000             🧑  作者: Mango

有截止日期的安排

先决条件:CPU调度

什么是有截止日期的调度?
调度问题的目标是调度任务以获得最大的总利润。这种有期限的调度算法不同于无期限的调度,因为这里的任务完成与利润相关。为了盈利,工作必须在截止日期之前完成。否则,工作完成根本不计入或赚取利润。这个问题的目标是构造一个可行的序列,以提供最大的利润。

如果所有作业在截止日期前结束,则序列是可行的。如果至少有一个序列是可能的,则一组作业称为可行集。与最大利润相关联的序列称为最佳序列,构成该序列的元素构成最佳工作集。

例子——
考虑下表中显示的项目和利润,让我们找到可以安排的最佳作业集,以使利润最大化。

该表描述了具有截止日期和利润的工作



JOBDEADLINEPROFIT(₨)
1260
2130
3240
4180

给定问题的目标是找到一组可行的解决方案。让我们应用贪婪的方法。

  • 最初解决方案 = NULL,然后添加作业 1,因此解决方案 = {1}。可以观察到,作业 2 在作为任务 {2, 1} 添加时是可能的,但作为任务 {1,2} 添加时则不可能。
    为什么?让我们检查一下这种情况,
  • 考虑序列{1,2}。可以安排任务 1。然而,调度任务 2 是不可能的,因为它的截止时间只有 1 个单位,这已经花费在等待时间。另一方面,{2,1,} 是可行的,因为作业 2 的截止日期没有被违反,而作业 1 的截止日期是 2 个单位。因此,在处理完作业 2 后,可以很好地容纳作业 1。类似地,可以观察到作业序列 {1,4}、{2,4}、{3,4}、{1,2,3}、{2,3,4} 和 {1,2,3 ,4} 是不可能的。

所有可能的序列是——

job sequencetotal profit
2, 190
3, 1 or 1, 3100
2, 370
4, 1140
4, 3120

最大利润与序列 {4,1} 相关联。因此,最优顺序是{4,1}。还可以观察到,虽然 {4,1} 是最优的,但由于违反了截止日期条件,因此序列 {1,4} 是不可能的。

算法 :

Step1: Sort the jobs in a non-increasing order by profit
Step2: Solution = null
Step3: For all the task do the following:
        select the next job;
        if task is feasible (i.e, the task deadline is not violated) then add this job to the solution
        EEND if
Step4: If all the instances are solved then exit.

形式上,具有期限的调度问题的算法如下:

Algorithm Schedule_with_deadline
%%Input: A set of jobs 1 to n with service item
%%Output: An optimal schedule

Begin
    s= sorted array of jobs based on profit in non-decreasing order
    i=1
    schedule=NULL
    while(i <= n) do                        %%for all jobs do
        select the next job i from S        %% selection procedure
        if(Scheduling job is feasible) then    %%Feasibility check
        solution = schedule U job i of S
        i=i+1
    End while
    return(solution)
End

可以看出,该算法首先根据利润对作业进行排序,然后在不违反期限考虑的情况下,将作业一一选择进行调度。对所有作业重复此过程,最后,算法返回解决方案。

存在一个检查作业序列可行性的原则,该原则指出,如果作业序列按照非递减期限进行调度是可行的,则该作业序列是可行的。

  • 因此,序列{1,2,3} 是可行的,因为作业是根据非递减截止日期安排的。
  • 另一方面,序列 {1,2,3,4} 是不可行的。
  • 原因是虽然有 4 个作业,但这个顺序意味着所有作业都应该在 3 个时间单位之前完成。
  • 由于每个作业至少需要 1 个时间单位,因此该顺序是不可行的。
    因此,可以使用这种观察来检查作业调度的可行性,因为这在竞争性考试期间可以节省时间。