您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 人工智能导论第三章1
第三章高级搜索主要内容局部搜索方法模拟退火算法遗传算法优化与组合优化问题很多问题属于优化问题,或者可以转化为优化问题如TSP问题,皇后问题优化问题的描述设x是决策变量,D是x的定义域,f(x)是指标函数,g(x)是约束条件集合。则优化问题可以表示为,求解满足g(x)的f(x)最小值问题。如果在定义域D上,满足条件g(x)的解是有限的,则优化问题称为组合优化问题。)(|)(minxgxfDx算法的时间复杂度对于组合优化问题,由于其可能的解是有限的,当问题的规模比较小时,总可以通过枚举的方法获得问题的最优解,但当问题的规模比较大时,就难于求解了。常用的算法复杂度函数)(),!(),(),2(),(),log(),(),(loglog2nnnnOnOnOOnOnnOnOnO输入量n复杂性函数10203040100n10ns20ns30ns40ns100nsnlogn10ns26.0ns44.3ns64.1ns200nsn2100ns400ns900ns1.6us10us2n1.0us1.0ms1.1s18.3min4.0世纪n!3.6ms77.1年8.4×1013世纪2.6×1029世纪3.0×10139世纪时间复杂性函数比较(10亿次/秒)一些难的组合优化问题旅行商问题背包问题装箱问题...寻求在可以接受的时间内得到满意解的方法邻域的概念邻域,简单的说就是一个点附近的其他点的集合。在距离空间,邻域就是以某一点为中心的圆。在组合优化问题中的定义:设D是问题的定义域,若存在一个映射N,使得:则称N(S)为S的邻域。领域中的元素称为邻居。DSNDSN2)(:例:皇后问题S={Si}表示一个可能解,其中Si表示在第i行,第Si列有一个皇后。如四皇后问题的一个解:S=(2,4,1,3)QQQQ定义映射N为棋盘上任意两个皇后的所在行或列进行交换,即S中任意两个元素交换位置。例:当S=(2,4,1,3)时,其邻域为:N(S)={(4,2,1,3),(1,4,2,3),(3,4,1,2),(2,1,4,3),(2,3,1,4),(2,4,3,1)}例:旅行商问题用一个城市的序列表示一个可能的解。通过交换两个城市的位置获取S的邻居例:简单交换方法设S=(x1,x2,…xi-1,xi,xi+1,…,xj-1,xj,xj+1,…,xn)则通过交换xi和xj两个城市的位置可以得到S的一个邻居:S'=(x1,x2,…xi-1,xj,xi+1,…,xj-1,xi,xj+1,…,xn)x1x2xnxj+1xjxj-1xi-1xixi+1x1x2xnxj+1xjxj-1xi-1xixi+1例:逆序交换方法设xi、xj是选取的两个城市,所谓的逆序交换方式是指,通过逆转xi、xj两个城市之间的城市次序来得到S的邻居。设:S=(x1,x2,…xi-1,xi,xi+1,…,xj-1,xj,xj+1,…,xn)则:S'=(x1,x2,…xi-1,xi,xj-1,xj-2…,xi+1,xj,xj+1,…,xn)x1x2xnxj+1xjxj-1xi-1xixi+1x1x2xnxj+1xjxj-1xi-1xixi+1局部搜索算法基本思想:在搜索过程中,始终向着离目标最接近的方向搜索。目标可以是最大值,也可以是最小值。在后面的介绍中,如果没有特殊说明,均假定是最小值。局部搜索算法(LocalSearch)1,随机的选择一个初始的可能解x0∈D,xb=x0,P=N(xb);2,如果不满足结束条件,则3,Begin4,选择P的一个子集P',xn为P'中的最优解5,如果f(xn)f(xb),则xb=xn,P=N(xb),转2;f(x)为指标函数。6,否则P=P–P',转2。7,End8,输出计算结果9,结束例:5城市旅行商问题●●●●●ABCDE71361071010965设初始的可能解:x0=(a,b,c,d,e)f(xb)=f(x0)=38通过交换两个城市获得领域P={(a,c,b,d,e),(a,d,c,b,e),(a,e,c,d,b),(a,b,d,c,e),(a,b,e,d,c),(a,b,c,e,d)}设每次随机从P中选择一个邻居。第一次循环从P中选择一个元素,假设xn=(a,c,b,d,e),f(xn)=42,f(xn)f(xb),P=P–{xn}={(a,d,c,b,e),(a,e,c,d,b),(a,b,d,c,e),(a,b,e,d,c),(a,b,c,e,d)}第二次循环从P中选择一个元素,假设xn=(a,d,c,b,e),f(xn)=45,f(xn)f(xb),P=P–{xn}={(a,e,c,d,b),(a,b,d,c,e),(a,b,e,d,c),(a,b,c,e,d)}第三次循环从P中选择一个元素,假设xn=(a,e,c,d,b),f(xn)=44,f(xn)f(xb),P=P–{xn}={(a,b,d,c,e),(a,b,e,d,c),(a,b,c,e,d)}第四次循环从P中选择一个元素,假设xn=(a,b,d,c,e),f(xn)=44,f(xn)f(xb),P=P–{xn}={(a,b,e,d,c),(a,b,c,e,d)}第五次循环从P中选择一个元素,假设xn=(a,b,e,d,c),f(xn)=34,f(xn)f(xb),xb=(a,b,e,d,c),P={(a,e,b,d,c),(a,d,e,b,c),(a,c,e,d,b),(a,b,d,e,c),(a,b,c,d,e),(a,b,e,c,d)}第六次循环从P中选择一个元素,假设xn=(a,e,b,d,c),f(xn)=44,f(xn)f(xb),P=P–{xn}={(a,d,e,b,c),(a,c,e,d,b),(a,b,d,e,c),(a,b,c,d,e),(a,b,e,c,d)}第七次循环从P中选择一个元素,假设xn=(a,d,e,b,c),f(xn)=39,f(xn)f(xb),P=P–{xn}={(a,c,e,d,b),(a,b,d,e,c),(a,b,c,d,e),(a,b,e,c,d)}第八次循环从P中选择一个元素,假设xn=(a,c,e,d,b),f(xn)=38,f(xn)f(xb),P=P–{xn}={(a,b,d,e,c),(a,b,c,d,e),(a,b,e,c,d)}第九次循环从P中选择一个元素,假设xn=(a,b,d,e,c),f(xn)=38,f(xn)f(xb),P=P–{xn}={(a,b,c,d,e),(a,b,e,c,d)}第十次循环从P中选择一个元素,假设xn=(a,b,c,d,e),f(xn)=38,f(xn)f(xb),P=P–{xn}={(a,b,e,c,d)}第十一次循环从P中选择一个元素,假设xn=(a,b,e,c,d),f(xn)=41,f(xn)f(xb),P=P–{xn}={}P等于空,算法结束,得到结果为xb=(a,b,e,d,c),f(xb)=34。存在的问题局部最优问题解决方法每次并不一定选择邻域内最优的点,而是依据一定的概率,从邻域内选择一个点,指标函数优的点,被选中的概率比较大,而指标函数差的点,被选中的概率比较小。选择概率的计算设求最大值时:)(3)()()()(maxxNxjiijxfxfxP选择概率的计算当求最小值时:)4()(11)(1))(1()(1)(max)(maxmaxminixNxjiixPxNxPxPxPj局部搜索算法1(LocalSearch1)1,随机的选择一个初始的可能解x0∈D,xb=x0,P=N(xb)2,如果不满足结束条件,则3,Begin4,对于所有的x∈P计算指标函数f(x),并按照式(3)或者式(4)计算每一个点x的概率5,依计算的概率值,从P中随机选择一个点xn,xb=xn,P=N(xb),转26,End7,输出计算结果8,结束存在的问题步长问题初始值搜索到的最优解解决方法变步长初始值搜索到的最优解局部搜索算法2(LocalSearch2)1,随机的选择一个初始的可能解x0∈D,xb=x0,确定一个初始步长计算P=N(xb)2,如果不满足结束条件,则3,Begin4,选择P的一个子集P',xn为P'中的最优解5,如果f(xn)f(xb),则xb=xn6,按照某种策略改变步长,计算P=N(xb),转27,否则P=P–P',转2。8,End9,输出计算结果10,结束存在问题起始点问题AB全局最大值局部最大值解决方法随机的生成一些初始点,从每个初始点出发进行搜索,找到各自的最优解。再从这些最优解中选择一个最好的结果作为最终的结果。局部搜索算法3(LocalSearch3)1,k=02,随机的选择一个初始的可能解x0∈D,xb=x0,P=N(xb)3,如果不满足结束条件,则4,Begin5,选择P的一个子集P',xn为P'中的最优解6,如果f(xn)f(xb),则xb=xn,P=N(xb),转37,否则P=P–P',转3。8,End9,k=k+110,如果k达到了指定的次数,则从k个结果中选择一个最好的结果输出,否则转(2)11,输出结果12,结束多种方法的集成以上几种解决方法可以结合在一起使用,比如第一、第二种方法的结合,就产生了我们将在后面介绍的模拟退火方法。皇后搜索算法(QueenSearch)1,随机地将n个皇后分布在棋盘上,使得棋盘的每行、每列只有一个皇后。2,计算皇后间的冲突数conflicts。3,如果冲突数conflicts等于0,则转(6)4,对于棋盘上的任意两个皇后,交换他们的行或者列,如果交换后的冲突数conflicts减少,则接受这种交换,更新冲突数conflicts,转3。5,如果陷入了局部极小,既交换了所有的皇后后,冲突数仍然不能下降,则转1。6,输出结果7,结束。不同规模下皇后问题的平均求解时间皇后数1005001000200050001000030000平均时间(秒)55122817090010000说明:早期比较慢的机器的结果(PIII)模拟退火算法是局部搜索算法的一种扩展最早由Metropolis在1953年提出,Kirkpatrick等人在1983年成功地将模拟退火算法用于求解组合优化问题。基本思想是借用金属的退火过程改进局部搜索算法固体退火过程溶解过程:随着温度的不断上升,粒子逐渐脱离开其平衡位置,变得越来越自由,直到达到固体的溶解温度,粒子排列从原来的有序状态变为完全的无序状态。退火过程:随着温度的下降,粒子的热运动逐渐减弱,粒子逐渐停留在不同的状态,其排列也从无序向有序方向发展,直至到温度很低时,粒子重新以一定的结构排列。粒子不同的排列结构,对应着不同的能量水平。如果退火过程是缓慢进行的,也就是说,温度的下降如果非常缓慢的话,使得在每个温度下,粒子的排列都达到一种平衡态,则当温度趋于0(绝对温度)时,系统的能量将趋于最小值。如果以粒子的排列或者相应的能量来表达固体所处的状态,在温度T下,固体所处的状态具有一定的随机性。一方面,物理系统倾向于能量较低的状态,另一方面,热运动又妨碍了系统准确落入低能状态。Metropolis准则从状态i转换为状态j的准则:如果E(j)≤E(i),则状态转换被接受;如果E(j)>E(i),则状态转移被接受的概率为:其中E(i)、E(j)分别表示在状态i、j下的能量,T是温度,K>0是波尔兹曼常数。KTjEiEe)()(在给定的温度T下,当进行足够多次的状态转换后,系统将达到热平衡。此时系统处于某个状态i的概率由波尔兹曼(Boltzmann)分布给出:(6)其中为归一化因子,S是所有可能状态的集合。TKTiEiZeTP)(SjKTjETeZ)(考察一下式(6)随温度T的变化情况:–同一温度下,两个能量不同的状态–高温下的情况–低温下的情况–当温度下降时的情况在给定的温度T下,设有i、j两个状态,E(i)<E(j):
本文标题:人工智能导论第三章1
链接地址:https://www.777doc.com/doc-2704058 .html