1. 程式人生 > >排程演算法學習_MIN-MIN及MAX-MIN演算法

排程演算法學習_MIN-MIN及MAX-MIN演算法

Min-Min演算法

Min-Min演算法是一種實現起來很簡單的演算法,演算法的執行時間也很快。演算法的思想是首先對映小的任務,並且對映到執行快的機器上。

執行過程為:計算要參與對映事件的每個任務在各個機器上的期望完成時間,找到每個任務的最早完成時間及其對應的機器;從中找出具有最小最早完成時間的任務,將該任務指派給獲得它的機器;指派完成後,更新機器期望就緒時間並將已完成對映的任務從任務集合中刪除。重複上面的過程,直到所有的任務都被對映完。

該演算法形式化描述如下:

M為所有未排程的任務的集合
(1)判斷任務集合M是否為空,不為空,執行(2);否則跳到步驟(7)。
(2)對於任務集中的所有任務,求出它們對映到所有可用機器上的最早完成時間cij。
(3)根據(2)的結果,找出最早完成時間最小的那個任務mi和所對應的機器hj。
(4)將任務mi對映到機器hj上;並將該任務從任務集合中刪除。
(5)更新機器hj的期望就緒時間rj。
(6)更新其它任務在機器hj上的最早完成時間;回到(1)。
(7)此次對映事件結束,退出程式。

 

Max-Min演算法

Max-Min演算法非常類似於Min-Min演算法。同樣要計算每一任務在任一可用機器上的最早完成時間,不同的是Max-Min演算法首先排程大任務,任務到資源的對映是選擇最早完成時間最大的任務對映到所對應的機器上。

該演算法形式化描述如下:

M為所有未排程的任務的集合
(1)判斷任務集合M是否為空,不為空,執行(2);否則跳到步驟(7)。
(2)對於任務集中的所有任務,求出它們對映到所有可用機器上的最早完成時間cij。
(3)根據(2)的結果,找出最早完成時間最大的那個任務mi和所對應的機器hj。
(4)將任務mi對映到機器hj上;並將該任務從任務集合中刪除。
(5)更新機器hj的期望就緒時間rj。
(6)更新其它任務在機器hj上的最早完成時間;回到(1)。
(7)此次對映事件結束,退出程式。

 

 

轉自http://blog.sina.com.cn/s/blog_76aa914301017iyc.html