算法 - 多个研讨会之间的理想分配和时限

时间:2012-01-17 16:40:49

标签: php actionscript-3 algorithm math prolog

我正在寻找一种算法来解决以下问题:

假设我正在组织一个有300名与会者和6个研讨会的课程,分为3个时间框架。

每位与会者都必须在网站上注册,并选择他想参加的3个工作坊,以及2个预备选择。

研讨会在时间范围内随机分配,大多数研讨会在多个时间框架内进行。与会者在研讨会之后的时间框架无关紧要。

该算法需要在不同的时间范围内生成理想的与会者分布,以便他们尽可能地获得最喜欢的研讨会......

我可以使用哪种技术来产生这种传播?我可以使用ActionScript或PHP来完成吗?有没有人有一个好榜样?

非常感谢你的帮助!

3 个答案:

答案 0 :(得分:2)

要了解的一些基本方向:

Genetic Algorithms是解决此问题的典型方法。虽然他们无法承诺最好的时间表。他们可以确保一个足够好的。

需要注意的事项。所有预订完成后,您都希望运行此功能。你不能动态地为每个新人提供预定座位的时间表。事实上,没有任何方法可以实现这一点并达到问题的最佳解决方案。

Genetic Programming也是通用调度程序的常用方法。但是,这可能有点过头了,因为您不需要通用解决方案,只需要一种特定于您的会议格式的解决方案。

答案 1 :(得分:2)

假设这不是真正问题的玩具版本(即只有6个课程和3个时间框架),我会进行详尽的搜索。总解决方案的数量是6!/(2!2!2!)= 90种不同的调度选项。对于每个选项,您可以计算某种适合度并选择最适合的选项。

然而,如果这是一个真实问题的玩具版本(100个课程和10个时间框架),那么问题就很困难,贪婪搜索和模拟退火的组合应该会非常有用。

另一个选择是规范用户行为(通过使用奖励/惩罚),以便他们选择对您有利的事情:)

答案 2 :(得分:0)

我们的最终解决方案可在此处找到:

https://github.com/jeroendv/workshopLp