1. 前言
本次作業由我和焦任戰同學結對完成,我們選擇的題目是電梯調度算法,我作為駕駛員,他作為領航員。
2. 題目要求
現有一新建辦公大廈,共有21層,共有四部電梯,所有電梯基本參數如下表所示,其使用規定如下:
- 樓層號為0~20,其中0號為地下一層
- 有樓層限制的電梯不在相應樓層停靠,如單雙層
- 所有電梯采用統一按鈕控制
- 請根據上述要求設計並實現一個電梯控制程序,使得用戶平均等待時間盡可能小,如果有圖形顯示就更好了。
- 算法設計方面問題,大家也可以咨詢助教,或者參考這篇文章 https://www.jianshu.com/p/eec35bd4e0df
- 另外大家也可以參考鄒老師的這篇文章 https://www.cnblogs.com/xinz/archive/2011/03/20/1989662.html
3.完成情況
(1)解題思路
采用java自帶的GUI組件,繪制用戶界面,通過多線程和按鈕監聽模擬電梯運行
(2)運行程序
(3)圖形化界面

(4)算法思路
為選擇電梯函數(search)添加同步鎖,多個電梯線程搶占search()函數,根據電梯上行、停止、下行狀態以及到目標樓層的距離選擇最優解對電梯進行調度。
4.總結
本次作業由於時間倉促筆者僅通過面向對象方式完成了整個程序,導致整體耦合性較高,對后期測試帶來一些麻煩,接下來將會向面向接口或切面方式改進。用戶界面通過swing組件和多線程之間調度勉強模擬出電梯的運行效果,但java自帶的swing組件比較過時,后期可以采用JS代替。
