簡體   English   中英

酒店房間優化/排序算法

[英]Hotel room optimization/sorting algorithm

有沒有眾所周知的酒店房間優化/排序算法?

問題是重新分配房間以最大化入住率。 假設我有 10 間客房,每次預訂的開始日期和結束日期。 有些房間不能重新分配,而其他房間可以(標記)。

任何關於正確方向的提示都會很棒。 謝謝你。

如果您有一組預訂和固定數量的房間,那么問題不是如何最大化利用率,而是驗證預訂是否可以真正實現。 如果實現了所有預留,則利用率顯然保持不變。

另一個可能的用例是您有一組您知道可以實現的預訂,然后您嘗試將新預訂放入其中,即新客戶想要進行新預訂並且您想檢查是否可以重新定位一些保留為新的創造空間。

在這兩種情況下,實際問題是如何檢查是否可以實現給定的保留集。

對於不可重定位的保留,這是微不足道的,因此假設它們可以實現並且您想檢查可重定位的保留是否也可以實現。

第一項檢查是計算每晚每晚的預訂數量; 如果任何一晚的預訂數量超過了可用房間數量,一旦計入固定預訂,您就無法通過任何手段實現預訂; 那天晚上你的酒店超額預訂了。

否則,您可以使用貪心算法嘗試解決方案:按預訂開始日期的順序處理預訂,並將每個預訂預訂到第一個可用的房間(例如按房間數字順序)。 如果這為您提供了解決方案,那么您已經意識到保留並且您完成了。

如果這不起作用,那么您可以使用 GRAPH COLORING 來解決問題,這就是通用的解決方案。 構建一個圖,其中每個預留都是一個節點,兩個節點(預留)連接當且僅當它們在時間上重疊。 在圖表中包括固定(不可重定位)預留。 然后嘗試使用 N colors(N = 您酒店中的房間總數)對圖表進行完整的着色,一旦您使用與它們相關的房間號對固定預訂進行預着色。

您也可以通過這種方式僅處理部分靈活的預訂,當且僅當無法在房間 n 中實現預訂(例如較低的房間等級)時,添加從預訂 r 到房間 n 的特殊 n 預着色節點的鏈接。

這種相同的圖形着色算法被成功地使用,例如在編譯器中用於寄存器分配。

當然,問題是如何有效地實現圖形着色; 為此,有現成的實現。

祝你好運!

可以使用數學規划約束規划model 您的問題,使用許多現成的工具(嘗試cplexgurobi用於 MP 和gecodecp 優化器用於 CP,僅舉幾例)來建模和解決這些類的問題。 它們通常具有可以從大多數編程語言調用的 API。

我想這個答案在很長一段時間后才出現,但我希望它仍然可以幫助其他人:-)

您要搜索 Drools-Planer: http://www.jboss.org/drools

根據我的經驗,回溯對於此類問題非常有效。 只需將第一個預訂分配給房間類型即可。 繼續分配保留,直到有一個保留未分配。 然后回溯你出錯的地方,並相應地改變之前的決定。

這樣,您將找到一個/所有可行的解決方案,或者您將證明不存在任何解決方案。

優點是可以證明不可行。 此外,回溯可以讓您找到不可行的“原因”。

參見例如http://en.wikipedia.org/wiki/Backtracking

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM