Algorithm 解决规划问题

Algorithm 解决规划问题,algorithm,artificial-intelligence,Algorithm,Artificial Intelligence,我是AI/算法领域的新手,目前正在尝试解决一个问题,到目前为止,我只在2d网格阵列上实现了a*路径查找 问题是这样的: 假设一个班级有40名学生(20f,20m),身高不同,有自己的座位偏好(行、列或两者),教室有50个座位,每个学生必须占据一个座位,座位布置如下: [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [

我是AI/算法领域的新手,目前正在尝试解决一个问题,到目前为止,我只在2d网格阵列上实现了a*路径查找

问题是这样的:

假设一个班级有40名学生(20f,20m),身高不同,有自己的座位偏好(行、列或两者),教室有50个座位,每个学生必须占据一个座位,座位布置如下:

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

              [ WHITE BOARD ]
为了给他们提供理想的座位,我们选择了一个评分图:

  • 没有学生直接坐在前面:+4分
  • 直接坐在前排的学生座位至少缩短2厘米:+4分
  • 坐在你旁边的学生是异性:+8分
  • 4名同性别学生占据一列:-10分
  • 从白板上升高度的列:+20点
  • 根据个人喜好选择座位:+2分
  • 目标是获得尽可能多的分数

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

    开始:所有学生退席

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

    目标:所有学生就座

    这里的问题是,可能的最大点数未知,我可以预见可能会有这样的情况:程序无法提前计划(程序可能选择+8,然后再选择+4,更好的方法是选择+2,然后再选择+20),我知道我可以寻找某个深度,比如说深度5。这引出了另一个问题:我应该使用什么深度?我真的不想访问所有可能的州

    1.这类问题有多难?(从解决迷宫到解决国际象棋/围棋)


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

    约束6看起来似乎意味着这个问题可能是NP完全问题或NP难问题。这意味着:A*算法在这方面不起作用,因为不可能(除非P=NP)创建一个好的可接受的启发式函数。容许性意味着启发式函数应该总是低估或等于最优解的分数,它永远不会高估。 如果您需要包含约束6,我建议使用禁忌搜索、模拟退火或延迟接受等算法,这些算法在类似的用例(如和)中运行良好

    如果没有约束6,我认为像算法这样简单的东西可以被设计成最优:

  • 所有偶数座位都给女性,所有奇数座位都给男性(如果没有足够的座位容纳一种性别,则在另一种性别中添加多余的座位)。单独安排两者。在安排1个性别时,忽略其他性别的席位
  • 根据身高将所有学生分为1个性别组。以递减的高度逐个指定它们
  • 对于每一步,将最大的未分配学生分配到最高一排的未分配座位(其次是左边的未分配座位)

  • 虽然如此,约束2可能仍然不是最优的。。。您可能仍然需要对其应用禁忌搜索或延迟接受。

    算法是否知道学生的身高和性别分布?A*可能不是一个好方法。至少我不知道启发式是什么样子的。对于这个问题,A*看起来像是一个圆孔里的方钉。A*是关于最小化成本,同时你试图最大化收益,它不允许负成本。我不认为有什么好方法可以将此转化为最小化机会成本的问题,也不认为有什么好方法可以解决分数上下波动的问题。@user2357112通常直接否定地陈述所有约束条件。例如:与“直接坐在前面的学生座位至少短2厘米:+4”不同,应说明“直接坐在前面的学生座位至少短2厘米:-4”。@GeoffreyDeSmet:再次查看评分标准,我不确定我的担忧。我认为将这样的翻译应用到这个问题上会导致成本结构,在这个结构中,所有的移动都有大致相等的高成本,由所有你没有得到的奖金主导,导致搜索倾向于退化为广度优先。在对评分标准进行二读时,奖金似乎并不是这样起作用的。你在优化问题上比我有更多的经验,所以你可能对事情的运作有更好的了解。约束6如何使它成为NP完全的?状态的数量不是有限的吗?所有的NP完全问题都有有限数量的状态(还有许多NP难问题)。但它们的状态数呈指数增长,没有已知的多项式时间方法来遍历它们以找到最优状态。至于约束6使其NP完全,这是我有根据的猜测。对约束的形式化描述和对NP完全问题的形式化放松可以证明/反驳这一点。