0

我正在计划一个童子军营地,需要自动化计划。

我有一组侦察兵需要被分组到具有一定能力的帐篷中,受到许多限制。

在这些限制中:

  • 帐篷的可用性(它们在整个夏天都设置和取消设置)
  • 侦察员的可用性
  • 帐篷的颜色
  • 球探喜欢的颜色
  • 等等

我有超过 500 名侦察员和大约 20 个帐篷。

我正在寻找一个好的算法来解决这个问题。
我可以将其建模为 MILP,但它太大而无法有效解决,并且无法给出近似解,这基本上使它成为不行。

关于我应该看什么的任何建议?禁忌?模拟退火?其他启发式方法?

4

2 回答 2

1

好吧,如果您说有很多限制,那么 MILP 将是解决此问题的最佳方法。但是,如果您提到的约束是唯一的,那么可以考虑以下方法。

将此建模为运输问题。

首先,您过滤掉不可用的帐篷和不可用的侦察兵。

对于每种颜色的帐篷,计算每个颜色帐篷的总容量 = summation( tentCapacity )。这些颜色应为目的地。

根据学生喜欢的帐篷颜色对他们进行分组。这些应该是来源。

在源/目的地矩阵中,将学生运送到其首选颜色帐篷的成本为零,其他颜色的成本为 1。

IMO 这可以使用运输问题解决技术来解决:http ://www.me.utexas.edu/~jensen/models/network/net8.html

编辑:上面描述的运输问题公式是一种非常通用的方法,您可以在其中处理不同优先级的多个偏好。如果每个侦察兵只有一个偏好,那么我认为问题是微不足道的,只需先将所有喜欢的彩色帐篷填满,然后将剩余的侦察兵分配给其他不喜欢的帐篷。

于 2013-11-08T11:33:01.713 回答
1

这与医院床位规划(以及监狱床位分配和酒店房间分配)非常相似。基本上,病人是侦察兵,床是睡袋,房间是帐篷。寻找 INRC2011 的实现,例如这个

在此处输入图像描述

模拟退火禁忌搜索延迟验收都适用于医院病床规划。一般来说,延迟验收OptaPlanner目前针对该用例的基准测试中获胜。

于 2013-11-08T12:48:25.187 回答