解决计划问题

时间:2014-07-31 05:46:24

标签: algorithm artificial-intelligence

我是AI /算法领域的新手,目前正在尝试解决问题,到目前为止我还没有在2d网格阵列上实现A *路径查找。

问题是这样的:

考虑一个40名学生(20f,20m),不同身高,有自己的座位偏好(行,列或两者),教室有50个座位,每个学生必须占用座位,座位正在铺设如下:

[ ] [ ] [ ]   [ ] [ ] [ ] [ ]   [ ] [ ] [ ]
[ ] [ ] [ ]   [ ] [ ] [ ] [ ]   [ ] [ ] [ ]
[ ] [ ] [ ]   [ ] [ ] [ ] [ ]   [ ] [ ] [ ]
[ ] [ ] [ ]   [ ] [ ] [ ] [ ]   [ ] [ ] [ ]
[ ] [ ] [ ]   [ ] [ ] [ ] [ ]   [ ] [ ] [ ]

              [ WHITE BOARD ]

为理想地安排他们,选出了一个评分图表:

  1. 没有学生直接坐在前面:+4分
  2. 直接在前面的学生座位较短至少2厘米:+4分
  3. 在你旁边的学生座位是异性:+8分
  4. 4名同性别学生占据一栏:-10分
  5. 白板上升高度的列:+20点
  6. 根据个人喜好座位:+2分
  7. 目标是获得可能的最高分数。

    我的想法是使用A *修改以适应当前的问题:

    开始:所有学生离开

    路径成本:转换后的点数增量

    目标:所有学生都坐着

    这里的问题是,可能的最大点是未知的,并且我可以预见可能存在程序未能提前计划的情况(程序可能选择+8然后接着+4,其中作为更好的方法是选择+2然后选择+20),我知道我可以寻找一定深度,比如深度为5.这引发了另一个问题:我应该使用的深度是什么?我真的不想访问所有可能的州。

    1.这种问题有多难? (从解决迷宫到解决国际象棋/去的规模)

    2.我正在解决这个问题的正确道路吗?

1 个答案:

答案 0 :(得分:2)

约束6看起来暗示这个问题可能是NP完全的或NP难的。这意味着:A *算法不会对此有效(因为),因为不可能(除非P = NP)创建一个良好的可接受的启发式函数。 可接受意味着启发式函数应始终低估或等于最优解的得分,它永远不会高估。 如果您需要包含约束6,我建议使用Tabu搜索,模拟退火或延迟接受等算法,这些算法适用于类似的用例,例如Dinner party seatingCourse scheduling

没有约束6,我认为像First Fit Decreasing算法那样简单的事情可以设计得最优:

  1. 所有偶数座位均为女性,所有奇数座位均为男性(如果没有足够的席位用于1个性别,则添加其他性别的溢出)。独立安排。在安排1个性别时,请忽略其他性别的席位。
  2. 根据身高对1个性别组中的所有学生进行排序。逐渐减少高度分配它们。
  3. 对于每个步骤,将最大的未分配学生分配到最高行的未分配席位(其次是左侧最多)
  4. 约束2可能仍然不是这样的最佳方式......你可能仍然需要对它应用一些禁忌搜索或延迟接受。