2011-05-03 52 views
4

这是我的场景,找到最佳可用时间的算法

我运行了一个提供各种类型按摩的按摩场所。说30分钟按摩,45分钟按摩,1小时按摩等。我有50个房间,100名员工和30件设备。当客户预约按摩预约时,预约需要1个房间,1个员工和1件设备能得到的。

什么是好的算法找到10个客人可用资源对于一个给定的一天

资源

房 - 50

员工 - 100

设备 - 30

营业时间:9am - 6PM

职员时间:上午9 AM- 6PM

否的客人:10

服务

5客人,(1小时按摩)

3个客人 - (45分钟按摩)

2位客人 - (1小时按摩)。

他们都在同一时间。假设有在这一天

没有其他约会是什么让::

  • 十大结果的最佳方式 - 这符合所有条件获得前10名的结果集最快的搜索。前十名由最早的可用时间来定义。 9 - 11AM是最好的结果集。 9点到5点不太好。

  • 穷举搜索(查找所有组合) - 所有集合 - 每一个可能的组合

  • 首先获得满足(只返回第一个匹配) - 停止的条件之一已经满足之后

我将不胜感激您的帮助。

感谢 尼克

+0

没有解决方案,只是一个额外的想法:将每种治疗的收益加入到算法中,因为这是您的真正目标... 3次短期按摩可能在经济上不如2次长效(或者相反... )。然后,这将是一个背包问题。 – 2011-05-03 04:38:07

+0

可能是http://stackoverflow.com/questions/3784908/effective-timetabling-algorithm的重复。 – Patrick 2011-05-03 06:51:06

回答

1

首先,它似乎的员工,房间和设备的数量是无关紧要的。看起来你只关心哪一个是最低的数字。那是你的库存。所以在你的情况下,库存= 30.

接下来,它听起来像你可以在第一个小时的业务同时服务所有10人。事实上,你可以同时服务30人。

所以,没有算法是必要的,这是一个静态的解决方案。如果您使用@Mario The Spoon的建议,并以不同的持续时间按摩和相应的利润进行加权,那么当您有超过30个客户时,您可以开始优化。

1

看起来你正试图解决一个问题,其中有相当专业化的软件应用程序。如果你的问题很小,你可以试着用一些循环和回溯来做一个暴力破解的方法,但是一旦问题变得太大,遍历所有可能性将花费太多时间。

如果问题开始变大,请寻找更专业的软件。需要注意的是“基于约束的优化”和“约束编程”。

E.g. ECLIPSe工具是一个开源的约束编程环境。你可以在http://eclipseclp.org/examples/index.html上找到一些例子。一个很好的例子,你可以在那里找到SEND + MORE = MONEY问题。在这个问题中,您有以下等式:

S E N D 
+ M O R E 
----------- 
= M O N E Y 

用数字替换每个字母,以便总和正确。 这也说明,虽然你可以解决这个蛮力,但有更多聪明的方法来解决这个问题(见http://eclipseclp.org/examples/sendmore.pl.txt)。

1

只是一个想法,以找到一个解决方案:

你可能想尝试用约束满足问题(CSP)算法来解决它。如果一般人需要解决时间表问题(例如在大学预订房间),那就是有些人所做的。

有几个技巧,以提高像前检查CSP性能,构建DAG,然后做一个拓扑排序等等...

只要让我知道,如果您需要了解CSP :)

更多信息