第四章 超越经典搜索
4.0 绪论
4.1&4.2 :状态空间的局部搜索
这些算法适用于那些关注解状态,而不是路径代价的问题。
局部搜索算法包括:
- 模拟退火法
- 遗传算法
4.3&4.4
不再强求环境的确定性和可观察性。
主要思想:Agent不能准确预测传感器的接收,那么它需要考虑当传感器接收到应急情况发生时该做什么。
由于只具备部分可观察性,Agent需要跟踪可能的状态。
4.5
讨论在线搜索, Agent面对的是完全未知的空间,要从头开始搜索
4.1 局部搜索算法和最优化问题
1. 局部搜索算法从单个当前节点(不是多条路径)出发,通常只移动到它的临近状态,一般不保留搜索路径。
有两个优点:
- 只用很少的内存
- 能在系统化算法不使用的很大的或无限的(连续的)状态空间中找到合理的解。
对于解决最优化问题十分有用,其目标是根据目标函数找到最佳状态。
2. 爬山法
- 2.1—最陡上升版本
-
2.2—八皇后问题
一般使用完整状态形式化。每个状态,棋盘上都有8个皇后,每列一个。
后继函数指的是:移动某个皇后道这列的另一个可能的方格中(因此每个状态有8*7 = 56个后继)。
启发式函数h是形成相互攻击的皇后对的数量,该函数的全局最小值是0,只有在找到解时才会是这个值。 2.3 — 局部搜索发不足
爬山搜索有时也被称为贪婪局部搜索
爬山法有时会陷入困境:
(1)局部极大值,如图4.3(b)的情况。
(2)山脊。造成一系列局部极大值。
(3)高原或山肩。- 2.4 — 爬山法变形
(1) 随机爬山法:上山移动中,随机的选择下一步;被选中的概率随着上山移动的陡峭程度不同而不同。
比最陡上升算法的收敛速度慢,但是某些状态空间地形图中能找到更好的解。eg.首选爬山法
以上的所有爬山法都是不完备的
(2)随机重启爬山法
思想: 如果一开始没有成功,那么尝试,再尝试(重新开始搜索)
通过随机生成初始状态来引导爬山法搜索,直到找到目标。
完备率接近1,理由是它最终会生成一个目标状态作为初始状态。
如果每次爬山法搜索成功的概率为p,那么需要重新开始搜索的期望次数为1/p。
3. 模拟退火搜索??????????????????没看懂
- 3.1 梯度下降 — 减小代价
4. 局部束搜索法
- 4.1 记录k个状态而不是只记录一个,从k个随机生成的状态开始
每一步,全部k个状态的所有后继状态全部被生成。如果其中一个是目标状态,则算法停止。
否则,从整个后继列表中选择k个最佳的后继,重复这个过程。 - 4.2 — 随机束搜索
不是从后继集合中选择最好的K个最佳后继,而是随机选择k个后继
其中,选择给定后继状态的概率是状态值的递增函数。
随机束搜索类似于自然选择,状态(生物体)根据值(适应度)产生它的后继(子孙后代)
5. 遗传算法
- 5.1 遗传算法是随机束搜索的一个变形,它通过把两个父状态结合来生成后继,而不是通过修改单一状态进行。和随机剪枝搜索一样。
以八皇后问题为例说明 - 从k个随机生成的状态开始,称之为种群。每个状态(个体),用一个有限长度的字符串表示—通常是0、1串。
八皇后问题中,每一列有8个格子,皇后在第几个格子,就用对应的数字表示,共8列,所以每个个体是由1-8的为数字串表示。图4.6(a)即是4个个体。 - 每个状态都由适应度函数给出评估值,好的状态,适应度函数返回一个较高的值。
八皇后问题中,用不互相攻击的皇后对的数目来表示,图4.6(a)中4个个体的适应度分别为24、23、20、11。
被选择进行繁殖的概率与个体适应度成正比。 (c)中,按照(b)的概率随机选择两对进行繁殖。注意,其中一个个体被选择两次,有一个一次也没被选中。
对于,配对的每对个体,在字符串中随机选择一个位置作为杂交点。图中的第一对的杂交点位置是在第三个数字之后,第二对实在第五个数字之后。最后,(e)中每个位置都会按照某个小的独立概率随机变异。在第1、3、4个后代中都有一个数字发生了变异。八皇后问题中,相当于随机选择一个皇后并把它随机放到该列的某一个方格里。