为我的侦察营规划heusristic

时间:2013-11-08 11:01:13

标签: algorithm mathematical-optimization

我正在计划一个侦察营,需要自动规划。

我有一组侦察兵需要按照一定数量的帐篷进行分组,但受到许多限制。

在约束中:

  • 帐篷的可用性(整个夏天都设置和未设置)
  • 侦察兵的可用性
  • 帐篷的颜色
  • 侦察兵首选的颜色

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

我正在寻找一个很好的算法来解决这个问题 我可以将它建模为MILP,但它太大而无法有效地解决,并且无法提供近似解决方案,这基本上使它成为一个禁忌。

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

2 个答案:

答案 0 :(得分:1)

如果你说有很多限制,那么MILP将是最好的方法。但是,如果您提到的约束是唯一的,那么可以考虑采用以下方法。

将此建模为运输问题。

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

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

根据帐篷的首选颜色对学生进行分组。这些应该是来源。

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

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

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

答案 1 :(得分:1)

这与hospital bed planning(监狱病床分配和酒店房间分配)非常相似。基本上,患者是侦察员,床是睡袋,房间是帐篷。寻找INRC2011的实现,例如this one

enter image description here

模拟退火禁忌搜索延迟接受在医院病床规划方面都很有效。一般来说,延迟接受OptaPlanner目前针对该用例的基准测试中获胜。