问题示例

问题求解的方法已经被应用于大量任务环境中。我们这里列出一些典型问题,区分为标准化问题和真实世界问题。标准化问题常用于说明或训练各种问题求解方法。它具有简洁、准确的描述,因此适合作为研究人员比较算法性能的基准。真实世界问题,如机器人导航,则意味着这一问题的解是人们实际使用的,且问题的形式化是独特的而非标准化的,因为例如在机器人导航问题中,每个机器人具有不同的传感器,产生不同的数据。

网格世界问题是一个由正方形单元格组成的二维矩形阵列,在这个阵列中,智能体可以从一个单元格移动到另一个单元格。一般来说,智能体可以水平或者垂直地移动到任何无障碍的相邻单元格,在某些问题中还可以沿对角线移动。单元格中可以包含智能体能拿起、推开或施加其他动作的物体,也可以存在阻止智能体进入单元格内的墙壁或其他不可逾越的障碍。

  • 状态:即哪些对象在哪些单元格中。在真空吸尘器世界中,对象就是智能体和灰尘。对于只有两个单元格的简单情形,智能体可以位于这两个单元格中的任何一个,每个单元格都可能存在灰尘,所以共有 2 × 2 × 2 = 8 个状态。一般来说,存在 n 个单元格的真空吸尘器环境有 n ×2n 个状态。
  • 初始状态: 任一状态都可以被指定为初始状态。
  • 动作: 在只有两个单元格的情形中,我们可以定义3种动作,即吸尘、向左移动和向右移动。在二维多单元格世界中,我们则需要更多种移动动作。我们可以增加向上和向下的动作。从而得到4种绝对的移动动作,或者可以将其转换为以自我为中心的的动作,即从相对于智能体的角度来定义,例如向前,向后,右转和左转。
  • 转移模型:吸尘将去除单元格内的任何的灰尘;向前将智能体朝它所面对的方向向前移动一个单元格,除非它撞到墙。向后让智能体朝相反的方向移动一个单元格,而右转和左转则将智能体的朝向旋转90°
  • 目标状态: 每个单元格都保持干净的状态
  • 动作代价:每个动作代价都是 1

另一种类型的网格世界是推箱子问题,在这个问题种,智能体的目标是将一些散落在网格中的箱子推到指定的存储位置,每个单元格最多容纳一个箱子。当智能体向前移动到方有一个箱子的单元格,而箱子另一侧的单元格为空时,箱子和智能体都向前移动一格。智能体不能把箱子推到另外一个箱子上或者墙上。对于存在n个无障碍单元格和b个箱子的世界,共有 n×n!/(b!(n-b)!)个状态;例如,在一个存在12个箱子的8×8网格中,有超过200万亿个状态。

在滑块问题中,若干滑块排列在一个有若干空白区域的网格中,其中滑块可以滑进空白区域。它的一个变体是汽车华容道问题,在这个问题中,我们需要在6×6的网格中滑动汽车和卡车,目标是将一辆汽车从交通堵塞中解救出来。滑块中最出名的变体是8数码问题,它由一个3×3的网格,8个带编号的滑块和一个空格组成,目标是达到指定的状态。类似的还有由4×4的网格组成的15数码问题。对8数码问题做如下形式化处理。

  • 状态:指定每个滑块位置的状态描述。
  • 初始状态:任何状态都可以被指定为初始状态。
  • 动作:虽然在真实世界中是滑块在移动,但描述动作的最简单方法是假设空格执行 Left、Right、Up或Down动作。如果空格位于边缘或者角落,则不是所有的动作都可用。
  • 转移模型:将状态和动作映射为一个结果状态。
  • 目标状态:尽管任何状态都可用作为目标状态,但我们通常用有序编号指定目标状态
  • 动作代价:每个动作的代价都为1

[1]


  1. 从明天起做一个快乐的 agent 工程师! ↩

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容