電梯排程演算法簡述

UDvoid發表於2014-10-19

  0x00 簡述

  該演算法基於BUS演算法的結構,增加了在中間樓層是否停靠的判斷和在頂、底層時下一個停靠點的尋找;

  1.如果電梯在頂層,遍歷請求佇列中的所有請求,記錄在執行方向上的:最近的同方向外部請求、最近的同方向內部請求、最遠的反方向外部請求;

   排程時,增加對電梯是否滿員的判斷,如果滿員,則只滿足內部請求,下一個停靠點定為最近的同方向內部請求;如果電梯未滿,同時存在同方向的外部請求和內部請求時停靠在最近的請求樓層,不存在同方向請求時停靠在最遠反方向外部請求樓層;

   在底層時同理;

  2.在中間樓層時,判斷下一個可停靠點是否開關門,條件包括是否滿員、是否在該樓層有請求;

 

  0x01 演算法的獨到之處:

    i.相對於BUS演算法,靈活地利用了已知的資訊(包括請求資訊、電梯的容量、剩餘空間等狀態資訊),減少了不必要的停靠開關門的時間;

    ii.由於每一趟都儘量優先解決同方向上的請求,整個排程過程不會存在某個乘客等待過長時間的情況(最多是來回一趟的時間),這樣設計的實用性是優秀的的,這一點也算是對BUS演算法的學習和借鑑;

    iii.電梯滿員時不停靠的策略比較貼近現實,減少了大量的超載拒絕,在上下班高峰期時能大幅提升電梯排程執行的效率。

 

相關文章