繁体   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