Pair Project II 電梯排程介面的實現

2022-02-16 12:43:43 字數 1260 閱讀 8745

第乙個3d遊戲的pair project結束後,我們又進行了新的結對程式設計練習。與上次不同,這次老師為我們提供了完整的test framework,我們無需對整個程式進行設計,只需要實現framework中的排程介面就可以了。具體的作業要求在此:

sen為我們完成了framework的編寫,在此表示感謝~

整個framework的框架如下

test framework定義了若干的模擬如building和passenger以及介面ielevator、ischeduler,ielevator的介面已經由sen在framework中實現,我們要做的主要就是實現ischeduler。

在介面實現的過程中,我們定義了乙個一維陣列來記錄某層是否有服務請求以及請求的型別(向上或向下),定義了乙個二維陣列,記錄每部電梯在每一層是否需要停止以響應乘客的下電梯請求。整個排程的思路如下:

(1)     電梯上行。在上行過程中不斷檢查其上樓層是否有服務請求,包括上行請求和下電梯請求,選擇符合停止條件的最近樓層作為下一次停止的目標樓層。若某層只有上行請求且電梯已滿,電梯將不會把該層作為下一目標樓層。如果已經到達最高層或者某層之上已無服務請求,電梯當前執行方向設為no。

(2)     電梯下行。在下行過程中不斷檢查其下樓層是否有服務請求,包括下行請求和下電梯請求,選擇符合停止條件的最近樓層作為下一次停止的目標樓層。若某層只有下行請求且電梯已滿,電梯將不會把該層作為下一目標樓層。如果已經到達最底層或者某層之下已無服務請求,電梯當前執行方向設為no。

(3)     電梯當前執行方向為no。電梯內此時無乘客。首先檢查是其上樓層是否有上行請求,然後檢查其下樓層是否有下行請求,若有,選擇兩者中的最近樓層作為下一目標樓層,否則,檢查其上樓層是否有下行請求,其下樓層是否有上行請求,若有,選擇兩者中的最近樓層作為下一目標樓層。

結對程式設計體驗:

前期我們對framework的設計進行了討論,這是我第一次去思考如何去設計介面,從hao同學身上學到了許多,比如說嚴謹的思維,對全域性的把握等等。後期由於我要回學校考體育耽誤了三天時間,回來後我們又對排程的演算法進行了討論。我覺得我們的演算法存在的乙個問題是存在多個電梯同時響應乙個服務請求的狀況,也就是說電梯之間的協調工作有待完善,hao同學的觀點是要保證電梯執行的穩定,我提出的一些想法則往往會導致晚到的人很快得到服務早到的人則會陷入長期的等待,顯然是不合理的。通過此次練習,我發現結對程式設計可以幫我們少走彎路,對於拓寬思維提高效率大有裨益。感謝hao同學的辛勤工作!

by hao & kai

怎麼開始做Pair Project II

項森的elevatorframework是唯讀的,為了怎麼把自己的scheduler加進去,費了好大的勁,幸而得到許曉彬大神的指點,終於找到solution。獨樂樂不如人樂樂,特分享一下。開啟vs2010,連線到msra tfs1 ieg的elevatorframework解決方案,開啟source...

你的電梯,我的電梯,大家的電梯

目錄實時電梯排程演算法 群控電梯排程演算法 參考我們作業的電梯 當電梯們不再相同 結語 每個程式設計師看見電梯,都會想電梯的排程演算法怎麼這麼蠢 先來先服務 fcfs first come first serve 演算法,是一種隨即服務演算法,它不僅僅沒有對尋找樓層進行優化,也沒有實時性的特徵,它是...

小型電梯尺寸 小型電梯尺寸與電梯的分類

別墅安裝小型電梯已經普及,業主可根據家中的大小確定小型電梯的尺寸。小型電梯的尺寸再確定之後,基本上就確定了小型電梯的分類。那就來向大家介紹一下小型電梯尺寸與電梯分類。1.選擇家用電梯時,必須要檢視電梯的配置以及尺寸等。測量人員根據具體的情況確定挑選電梯的型別。2.再安裝家用小型電梯時,必須要提前預留...