1.15k likes | 1.23k Views
第三章 搜索技术. 第一节 引言 一、搜索 对于无成熟方法可用的问题求解,必须一步步地摸索求解,这种问题求解过程就是搜索。 注:搜索技术是人工智能的核心技术之一。 二、研究和选用搜索算法的原则 1 、有限搜索还是无限搜索? 若搜索空间有限,则任何一种穷举算法均能完成任务。. 第三章 搜索技术. 第一节 引言 二、研究和选用搜索算法的原则 2 、搜索空间是静态的还是动态生成的? 在人工智能中,搜索的对象 ( 常称状态 ) 是在搜索过程中逐步生成的,需将搜索对象的生成和评估的代价计算在内。
E N D
第三章 搜索技术 第一节 引言 一、搜索 对于无成熟方法可用的问题求解,必须一步步地摸索求解,这种问题求解过程就是搜索。 注:搜索技术是人工智能的核心技术之一。 二、研究和选用搜索算法的原则 1、有限搜索还是无限搜索? 若搜索空间有限,则任何一种穷举算法均能完成任务。
第三章 搜索技术 第一节 引言 二、研究和选用搜索算法的原则 2、搜索空间是静态的还是动态生成的? 在人工智能中,搜索的对象(常称状态)是在搜索过程中逐步生成的,需将搜索对象的生成和评估的代价计算在内。 对于一般搜索,搜索空间基本是静态的,或表或数组或数据库。 3、已知目标还是未知目标? 4、只要目标还是也要路径? 路径是解题过程中应用的操作序列。
第三章 搜索技术 第一节 引言 二、研究和选用搜索算法的原则 5、状态空间搜索还是问题空间搜索? 在解题过程中的每一时刻,所要解决的问题均处于一定的状态,搜索过程只是将一个状态变成另一个状态(如,一盘棋局变成另一盘棋局),则称为状态空间搜索。 若搜索的对象是问题,搜索的原则是把一个复杂的问题化为一组比较简单的子问题(如把一个复杂的下棋策略分为几个子策略),则称为问题空间搜索。 注:问题空间搜索常常比状态空间搜索有效,但算法要复杂些。
第三章 搜索技术 第一节 引言 二、研究和选用搜索算法的原则 6、有约束还是无约束? 问题空间搜索时,若子问题间互相无约束关系,则求接比较简单,否则,一般需要回溯,即,放弃已解决的子问题,走回头路,寻找新的解法。 7、数据驱动还是目标驱动? 数据驱动是向前搜索,目标驱动是向后搜索。 8、单向搜索还是双向搜索?
第三章 搜索技术 第一节 引言 二、研究和选用搜索算法的原则 9、盲目搜索还是启发式搜索? 按照预定的控制策略实行搜索,在搜索过程中获取的中间信息不用来改进控制策略,称为盲目搜索,反之,称为启发式搜索。 注:关于“启发式”,可有两种看法:1)任何有助于找到问题的解,但不能保证找到解的方法均是启发式方法;2)有助于加速求解过程和找到较优解的方法是启发式方法。
第三章 搜索技术 第一节 引言 二、研究和选用搜索算法的原则 10、有对手搜索还是无对手搜索? 若有两个控制源均能改变同一状态空间,并且任何一方向目标前进时,另一方均试图将它从目标拉开,则称为有对手搜索,通常称为博弈搜索。 注:博弈搜索算法可以看成是一种特殊的问题空间搜索。
第三章 搜索技术 第一节 引言 三、一般搜索方法分类 1、盲目搜索 1)无变量的盲目搜索 状态空间、问题空间的盲目搜索 深度优先、广度优先、代价优先、混合 向前、向后、双向 2)有变量的盲目搜索 通代 2、启发式搜索
第三章 搜索技术 第二节 启发式搜索 一、启发式搜索 把要求解的问题的具体领域的知识加进搜索算法中,控制搜索过程,以提高算法效率的搜索方法,称为启发式搜索。 注:1)这里,搜索的对象(常称状态)往往是边搜索边生成,因此在考虑这种搜索的复杂性时,必须将搜索对象的生成和评估的代价计算在内。
第三章 搜索技术 第二节 启发式搜索 一、启发式搜索 注:2)根据启发性信息(特定领域的知识信息),在生成搜索树时可考虑种种可能的选择: a)下一步展开哪个节点? b)是部分展开还是全部展开? c)使用哪个规则(算子)? d)怎样决定舍弃还是保留新生成的节点? e)怎样决定舍弃还是保留一棵子树? f)怎样决定停止或继续搜索? g)如何定义启发函数(估值函数)? h)如何决定搜索方向?
第三章 搜索技术 第二节 启发式搜索 二、有序搜索算法 1、基本思想 a)对于每个在搜索过程中遇到的新状态,计算一个估计值,根据估计值的大小,确定下一步将从哪一个状态开始继续前进。 b)一般以估计值小者作为较优的状态,以此实现最佳优先搜索。 c)计算状态估计值的函数是确定的,但每个状态的估计值的大小与初始状态到该路径有关。
第三章 搜索技术 第二节 启发式搜索 二、有序搜索算法 2、算法 1)建立一个空的状态序列SS 2)建立一个空的状态库SB 3)定义一个估值函数f 4)若初始状态为S0,则定义初始状态S0(0,f(0))为当前新状态 5)将当前新状态按估计值从小到大的顺序插入到SS中,若新状态为目标状态,则将相应状态插入到具有相同估计值的状态的最前面;否则将相应状态插入到具有相同估计值的状态的最后面
第三章 搜索技术 第二节 启发式搜索 二、有序搜索算法 2、算法 6)若在SS或SB中原有一个状态与当前新状态共一个状态,则删去原有状态 7)若新状态在SS的最前面,则转11) 8)若某种状态极限已达到,则搜索失败,算法运行结束,无解
第三章 搜索技术 第二节 启发式搜索 二、有序搜索算法 2、算法 9)若任何规则均不能应用于状态序列SS中的第一个状态,或者虽能应用,但不能产生合适的新状态(在SS或SB中均没有者,称为新),或虽能产生合适的新状态S(path2,f(path2)),但不是改进型的(若SS和SB中已有状态S(path1,f(path1)),它与新状态共一个状态S,且f(path2)f(path1),则称新状态不是改进型的),则将此第一个状态从SS中除去,送入SB中,否则转12)
第三章 搜索技术 第二节 启发式搜索 二、有序搜索算法 2、算法 10)若SS成为空序列,则搜索失败,算法运行结束,无解 11)若SS中第一个状态已是目标状态,则搜索成功,算法运行结束(若该状态形如S(path,f(path)),则解就是(path));否则转9) 12)取一个可应用于SS的第一个状态S(path,f(path)),并产生改进型的合适新状态的规则Rn,产生新状态T(path,n,f(path)),定义它为当前新状态,转5) #算法完
第三章 搜索技术 第二节 启发式搜索 二、有序搜索算法 2、算法 注:1)状态是带路径和估计值的状态,而状态只是一个状态 2)对当前生成的新状态是否是目标状态的判断需要两次 3)这里每次只生成一个后代 4)给定估计值函数f的意义,则有序搜索就可归结为已知的搜索,如令f为状态节点的深度,则有序搜索就成为广度优先搜索
第三章 搜索技术 第二节 启发式搜索 二、有序搜索算法 2、算法 注:5)有序搜索算法不一定找到解,即使有解 6)有序搜索算法的特点是使用启发式信息(表现在估计值函数f上),可是启发式信息也会骗人,会引人误入歧途 7)有序搜索即使能找到解,也未必一定是最优的
第三章 搜索技术 第二节 启发式搜索 二、有序搜索算法 3、算法改进 1)用多个估计值函数来“层层设卡” 2)对估计值函数的形式加以限制,以保证它一定能找到解,甚至一定能找到最优解。
第三章 搜索技术 第二节 启发式搜索 三、估计值函数的改进 令S为初始节点,ti为一组目标节点, n,ni,nj为任意节点 k*(ni,nj)为从ni到nj的最小代价 g*(n)=k*(S,n)为从初始节点S到节点n的最小代价 h*(n)=min k*(n,ti)为从节点n到一个目标节点ti的最小代价 f*(n)=g*(n)+h*(n)为从初始节点出发,经过节点n,到达一个目标节点的最小代价 ti
第三章 搜索技术 第二节 启发式搜索 三、估计值函数的改进 g(n)为对g*(n)的估计,g(n)0 h(n)为对h*(n)的估计,h(n)0 f(n)=g(n)+h(n)为每个节点n处的估计值函数
第三章 搜索技术 第二节 启发式搜索 四、H算法 使用上述改进的估计值函数f的有序搜索算法就是H算法。 注:1) g(n)是容易找到的,如将从初始节点到节点n实际上走过的路径的代价作为g(n),且永远有g*(n)g(n)。g(n)不断改进,随着更多的搜索信息的获取,g(n)的值呈下降趋势。 2)h(n)的选取要与具体问题领域的启发信息相关。 3)由于h(n)的选择仍有很大的随意性,因此,H算法并不能保证找到一个解,更不能保证找到最优解。从而需要改进。
第三章 搜索技术 第二节 启发式搜索 五、H*算法 1. 在H算法中规定h(n)h*(n) 2. 推广k*(ni,nj)的定义:令k*(n1,n2,…,nm)为从n1出发,经过n2,…,到达nm的最小代价,规定存在一个正整数e>0,使得对任意的ni,nj,nm(njnm)均有k*(ni,nj,nm)-k*(ni,nj)>e 3.经过如此限制以后的H算法就是H*算法。 注:1)可以证明:只要目标状态存在,并且从初始状态到目标状态有一条通路,则H*算法一定在有限步内终止,并找到一个最优解(即代价为最低的解)。
第三章 搜索技术 第二节 启发式搜索 五、H*算法 注:2)H*算法的搜索效率在很大程度上取决于函数h(n)的选择,它要求h(n)h*(n),但若h(n)太小,则启发信息就很少。 3)若h(n)0,g(n)为搜索深度或代价,则H*算法将退化为广度优先搜索或代价优先搜索。 4)h(n)的值在满足小于或等于h*(n)的前提下越大越好,启发式信息多(即h值大)的H*算法展开的节点是启发式信息少(即h值小)的H *算法展开的节点的子集。
第三章 搜索技术 第二节 启发式搜索 五、H*算法 注:5)若估计值函数h(n)满足单调条件: h(ni)-h(nj) k*(ni,nj)(其中k*(ni,nj)是从ni到nj的最小代价,nj是ni的后续节点), 则H*算法是循着从初始状态通向该节点的最优路径到达该节点的。 6)在H*算法中,每次只生成一个后续节点。
第三章 搜索技术 第二节 启发式搜索 六、完全展开的有序搜索算法 1)建立一个空的状态序列SS 2)建立一个空的状态库SB 3)定义一个估值函数f 4)若初始状态为S0,则定义初始状态S0(0,f(0))为当前新状态 5)将所有当前新状态按估计值从小到大的顺序插入到SS中
第三章 搜索技术 第二节 启发式搜索 六、完全展开的有序搜索算法 6)若在SS或SB中原有一个状态与当前某个新状态共一个状态,则删去原有状态 7)若SS的第一项是一个新状态,则转11) 8)若某种状态极限已达到,则搜索失败,算法运行结束,无解
第三章 搜索技术 第二节 启发式搜索 六、完全展开的有序搜索算法 9)若任何规则均不能应用于状态序列SS中的第一个状态,或者虽能应用,但不能产生改进型的合适新状态,则将此第一个状态从SS中除去,送入SB中,否则转12) 10)若SS成为空序列,则搜索失败,算法运行结束,无解 11)若SS中第一个状态已是目标状态,则搜索成功,算法运行结束(若该状态形如S(path,f(path)),则解就是(path));否则转9)
第三章 搜索技术 第二节 启发式搜索 六、完全展开的有序搜索算法 12)取所有可应用于SS的第一个状态S(path,f(path)),并产生各不相同的改进型的合适新状态的规则Ri(iI),产生新状态集T(path,i,f(path)), 其中对属于同一状态的各个状态只取一个最优者,转5) #算法完
第三章 搜索技术 第二节 启发式搜索 七、A算法 使用估计值函数f(n)=g(n)+h(n)的完全展开的有序搜索算法。
第三章 搜索技术 • 第二节 启发式搜索 • 八、A*算法 • 在A算法规定:h(n)h*(n), • k*(ni,nj,nm)-k*(ni,nj)>e,则A算法成为A*算法 • 注:1)A*算法与H*算法的主要区别有 • a)在H*算法中每次只生成一个后继节点,而在A*算法中每次生成一个节点的所有节点 • b)在H*算法中,每生成一个新节点,就询问它是否是目标节点,而在A*算法中,只询问栈顶节点是否是目标节点 • 2)在A*算法中,估计值函数f(n)=g(n)+h(n)的选择是一个关键
第三章 搜索技术 第二节 启发式搜索 八、A*算法 注:3)A*算法一定能保证找到最优解 4)若按展开的节点个数来估计它的效率,则当启发式函数h的值单调上升时,它的效率只会上升,不会下降,且有较合理的渐近性质 5)若不是考虑被展开的节点个数,而是考虑各节点被展开的次数,则A*算法在最坏情况下表示出很高的复杂性 6)为了避免不正常的h值对解题路径的影响,Martelli提出了B算法,基本思想是h(n)可动态修改,在h值不正常时,只根据g的值来选择展开的节点。
第三章 搜索技术 第二节 启发式搜索 八、A*算法 注:7)在f(x)=g(x)+h(x)中,g(x)是“经验”项,起着稳定形势的作用,而h(x)是“冒险”项。 九、双向启发式搜索 十、几种特殊的启发式搜索 1、生成与测试方法 穷举?仍需要经验知识的指导 2、并行搜索法 3、爬山法 4、黄金分割法 十一、与或树的启发式搜索 AO*算法
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 1、基本概念 模拟生物在自然环境中的遗传和进化过程而形成的一种自适应全局优化概率搜索算法。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 2、基本思想 对于一个求函数最大值的优化问题,一般可描述为下述数学规划模型:
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 2、 基本思想 式中, 为决策变量,f(X)为目标函数,U是基本空间,R是U的一个子集。 遗传算法中,将n维决策向量用n个记号 所组成的符号串X来表示:
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 2、 基本思想 把每一个 看作一个遗传基因,它的所有可能取值称为等位基因,这样,X就可看作是由n个遗传基因所组成的一个染色体。染色体的长度可以是固定的,也可以是变化的。等位基因可以是一组整数,也可以是某一范围内的实数值,或者是记号。最简单的等位基因是由0和1这两个整数组成的,相应的染色体就可表示为一个二进制符号串。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 2、 基本思想 这种编码所形成的排列形式X是个体的基因型,与它对应的X值是个体的表现型。染色体X也称为个体X,对于每一个个体X,要按照一定的规则确定出其适应度。个体的适应度与其对应的个体表现型X的目标函数值相关联,X越接近于目标函数的最优点,其适应度越大;反之,其适应度越小。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 2、 基本思想 遗传算法中,决策变量X组成了问题的解空间。对问题最优解的搜索是通过对染色体X的搜索过程来进行的,从而由所有的染色体X就组成了问题的搜索空间。 生物的进化是以集团为主体的。与此相对应,遗传算法的运算对象是由M个个体所组成的集合,称为群体。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 2、 基本思想 与生物一代一代的自然进化过程相似,遗传算法的运算过程也是一个反复迭代过程,第t代群体记做P(t),经过一代遗传和进化后,得到第t+1代群体,它们也是由多个个体组成的集合,记做P(t+1)。这个群体不断地经过遗传和进化操作,并且每次都按照优胜劣汰的规则将适应度较高的个体更多地遗传到下一代,这样最终在群体中将会得到一个优良的个体X,它所对应的表现型X将达到或接近于问题的最优解 。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 2、 基本思想 生物的进化过程主要是通过染色体之间的交叉和染色体的变异来完成的。遗传算法中最优解的搜索过程也模仿生物的这个进化过程,使用所谓的遗传算子(genetic operators)作用于群体P(t)中,进行下述遗传操作,从而得到新一代群体P(t+1)。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 2、 基本思想 • 选择(selection):根据各个个体的适应度,按照一定的规则或方法,从第t代群体P(t)中选择出一些优良的个体遗传到下一代群体P(t+1)中。 • 交叉(crossover):将群体P(t)内的各个个体随机搭配成对,对每一个个体,以某个概率(称为交叉概率,crossover rate)交换它们之间的部分染色体。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 2、 基本思想 • 变异(mutation):对群体P(t)中的每一个个体,以某一概率(称为变异概率,mutation rate)改变某一个或一些基因座上基因值为其它的等位基因。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 3、 特点 遗传算法是一类可用于复杂系统优化计算的鲁棒搜索算法,与其他一些优化算法相比,主要有下述几个特点: • 遗传算法以决策变量的编码作为运算对象。传统的优化算法往往直接利用决策变量的实际值本身进行优化计算,但遗传算法不是直接以决策变量的值,而是以决策变量的某种形式的编码为运算对象,从而可以很方便地引入和应用遗传操作算子。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 3、 特点 • 遗传算法直接以目标函数值作为搜索信息。传统的优化算法往往不只需要目标函数值,还需要目标函数的导数等其它信息。这样对许多目标函数无法求导或很难求导的函数,遗传算法就比较方便。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 3、 特点 • 遗传算法同时进行解空间的多点搜索。传统的优化算法往往从解空间的一个初始点开始搜索,这样容易陷入局部极值点。遗传算法进行群体搜索,而且在搜索的过程中引入遗传运算,使群体又可以不断进化。这些是遗传算法所特有的一种隐含并行性。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 3、 特点 • 遗传算法使用概率搜索技术 。遗传算法属于一种自适应概率搜索技术,其选择、交叉、变异等运算都是以一种概率的方式来进行的,从而增加了其搜索过程的灵活性。实践和理论都已证明了在一定条件下遗传算法总是以概率1收敛于问题的最优解。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 3、 应用 遗传算法提供了一种求解复杂系统优化问题的通用框架,它不依赖于问题的具体领域,对问题的种类有很强的鲁棒性,所以广泛应用于很多学科。下面列举一些遗传算法的主要应用领域。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 3、 应用 • 组合优化:遗传算法是寻求组合优化问题满意解的最佳工具之一,实践证明,遗传算法对于组合优化问题中的NP完全问题非常有效。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 3、 应用 • 生产调度问题:生产调度问题在很多情况下所建立起来的数学模型难以精确求解,即使经过一些简化之后可以进行求解也会因简化得太多而使求解结果与实际相差太远。现在遗传算法已经成为解决复杂调度问题的有效工具。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 3、 应用 • 自动控制:遗传算法已经在自动控制领域中得到了很好的应用,例如基于遗传算法的模糊控制器的优化设计、基于遗传算法的参数辨识、基于遗传算法的模糊控制规则的学习、利用遗传算法进行人工神经网络的结构优化设计和权值学习等。
第三章 搜索技术 第二节 启发式搜索 十二、遗传算法 3、 应用 • 机器人学:机器人是一类复杂的难以精确建模的人工系统,而遗传算法的起源就来自于对人工自适应系统的研究,所以机器人学自然成为遗传算法的一个重要应用领域。