當前位置:編程學習大全網 - 源碼下載 - 如何將各種算法應用到實際的電梯調度中

如何將各種算法應用到實際的電梯調度中

說明 假設大廈有31層樓.電梯每經過1層(不論上下行)的時間是4秒.也就是說,電梯從1樓到31樓且中間不停則需要(31-1)*4=120秒.電梯每次需要停10秒,因此,如果電梯每層都停壹次,就需要30*4+29*10=410秒.與此同時,員工步行壹層樓(不論上下行)需要20秒,從1樓到31樓就需要30*20=600秒.明顯,這個主意不好.因此,很多員工依賴電梯前往他們的辦公室.現在我們需要設計壹個方案,這個方案的設計目標是讓最後壹個到達辦公室的員工花費最短的時間(也就是說,他並不保證每壹位員工都能最快到達自己辦公室).比如,如果員工想到達4,5和10層,則電梯的運行方案是在4和10層停止.因為電梯在第12秒到達4層,停止10秒,則電梯到達10層需要3*4+10+6*4=46秒.按此計劃,住在4層的員工需要12秒,5層的員工需要12+20=32秒,10層的員工需要46秒.因此,最後到達辦公室的員工需要46秒.對於大家來說,這是個不錯的方案.

實現 下面就詳細說壹說我實現的具體方式,雖然花了我近2天的時間,但是其實並不是很復雜,這裏我本著拋磚引玉的原則,下面就壹起來看看吧:

我們將定義壹個名叫Case的class用來存儲壹些要測試的數據,然後再定義壹個叫CaseUtil的class用來實現我們的方案。

首先我說壹下具體得思路:這裏我只考慮從下到上的方案(從上到下其實是壹樣的,具體自己想吧)。舉個例子,假設當前的樓層是29 30 31.3個。那麽我們該如何做呢?

首先,不管怎麽說,假設最後壹層即31的到達時間為 (31-1)* 4 + (stopNums-1)*10 說明壹下,這裏為了簡單起見我們就按照案例的數據進行分析,實際上4表示電梯經過每層所需時間,而10表示電梯每層停靠的時間。上面的stopNums是什麽呢?就是電梯到達31層時所有的停靠次數,減去1是除去31層得停靠。而最後壹層到達的人則很可能為最後壹位到達的人,為什麽不是壹定呢,按照本例,上面舉得例子就可以很簡單的看出,在28、31停2次即可,此時最後壹個到達的就是地30層的人了。當然在僅僅是在本例中,實際上會由於具體數值不壹樣而有不同。所以這裏我用了可能,而它也和我們的最優解很接近了,而這給了我想法。雖然最後壹層不壹定是最後壹位,但已經很接近了,而它所花費的時間,僅僅只和壹個變量有關,即stopNums,即可以得出如下結論:

電梯的停靠次數越少,最後壹層的時間也就越少,同樣最佳時間也就越少。

假設我們有壹個方法可以根據當前的停靠次數來計算最佳的停靠方案,那麽我們該如何得到實際最佳方案呢?下面的壹段代碼很好的可以達到我們的目標。

  • 上一篇:易語言,可以把壹個編輯框裏的數字從小到大排列嗎?
  • 下一篇:報警軟件源代碼
  • copyright 2024編程學習大全網