最大最小和最小最小算法实现

时间:2019-04-05 07:55:15

标签: algorithm scheduling jobs

我正在尝试模拟最大-最小和最小-最小调度算法,并自己在仿真中进行编码。但是真的不了解如何实现它们在代码中的工作方式。

例如,在FCFS算法中,我使用3台服务器(vms),每台服务器都比其他服务器和5台具有不同到达时间的任务更快。因此,第一个任务将检查第一个服务器并安排在该服务器上,第二个任务如果到达而第一个尚未完成,则将检查可用性并安排在第二个服务器上。如果所有3台服务器都被占用,则下一个任务将排定在最小的执行时间上。

现在对于Min-Min和Min-Max,这是理论背景:

Min-Min: 阶段1:首先计算每台计算机上每个任务的完成时间,然后为每个任务选择在尽可能短的时间内处理任务的计算机。 阶段2:在Meta任务的所有任务中,选择具有最短完成时间的任务,并将其分配给期望最短执行时间的计算机。该任务将从“元任务”列表中删除,该过程继续进行,直到“元任务”列表为空。

最大-最小: 阶段1:首先计算每台计算机上每个任务的完成时间,然后为每个任务选择在尽可能短的时间内处理任务的计算机 阶段2:在元任务中的所有任务中,具有最大完成时间的任务被选择并分配给计算机。该任务将从“元任务”列表中删除,该过程继续进行,直到“元任务”列表为空。

我获得了两种算法的阶段1,我需要检查任务的突发时间和服务器的加速->突发/加速=执行时间。我将为每个任务找到最好的服务器。 但是我无法理解第2阶段。对于Min-Min,我每次都必须选择最快的任务,当我找到它时,我必须将其计划到更快的服务器。但是工作量会不平衡,因为我说过3台服务器,至少有1台是速度更快的服务器,比如说ID为1的服务器,所以每次将任务调度到这台服务器时,我还需要另外2台才能工作。

Max-Min出现相同问题,找到最差的任务,将其调度到最差的服务器,但是只有一台服务器最差,因此其他两台将无法工作。我应该如何进行平衡,还要考虑到任务在不同的时间到达?

如果您还需要其他任何信息,请提前告知我!

1 个答案:

答案 0 :(得分:1)

您可以在A Comparative Analysis of Min-Min and Max-Min Algorithms based on the Makespan Parameter中找到这两种算法的漂亮描述:

我在此处粘贴Min-Min的伪代码。 ET ij 是资源R j 上任务t i 的执行时间。并且r j 是R j 的准备时间。

enter image description here

您的负载可能不均衡,因为所有小任务都将首先执行。 Max-Min算法克服了这一缺点。

  

Max-Min算法执行与Min-Min算法相同的步骤,但是主要区别在于第二阶段,其中选择任务t i ,该任务的完成时间最大而不是最小完成时间(以分钟-分钟为单位),并分配给资源R j ,它给出了最短的完成时间。