遗传算法遗传算法概述遗传算法的一般流程遗传算法的实现主要内容生物的遗传与进化群体种群子群选择婚配变异遭淘汰的群体遗传算法(GeneticAlgorithm)“物竞天择、适者生存”70年代,美国的密执根大学的Holland在他的著作《AdaptationinNaturalandArtificialSystems》首次提出遗传算法。作为一种有效的工具,遗传算法已广泛地应用于最优化问题的求解之中。生物进化中的概念遗传算法中的作用环境适应函数适应性函数适应值适者生存适应函数值越大的解,被保留的概率也越大个体问题的一个解染色体解的编码基因编码的元素群体被选定的一组解种群根据适应函数选择的一组解交叉以一定的方式由双亲产生后代的过程变异编码的某些分量发生变化的过程生物进化与遗传算法之间的对应关系遗传算法概述遗传算法的一般流程遗传算法的实现主要内容遗传算法的三个主要操作选择(Selection)交叉(Crossover)变异(Mutation)“轮盘赌”法:设群体的规模为N,F(xi)(i=1,...,N)是其中N个染色体的适应值。则第i个染色体被选中的概率由下式给出:NjjiixFxFxp1)()()(选择x1x2x3x4x5x6模拟“轮盘赌”算法(1)r=random(0,1),s=0,i=0;(2)如果s≥r,则转(4);(3)s=s+p(xi),i=i+1,转(2)(4)xi即为被选中的染色体,输出i(5)结束。选择——“确定性”法对于规模为N的群体,一个选择概率为p(xi)的染色体xi被选择次数的期望值e(xi):对于群体中的每一个xi,首先选择次。这样共得到个染色体。然后按照从大到小对染色体排序,依次取出个染色体,这样就得到了N个染色体。Nxpxeii)()()(ixeNiixe1)(NiixeN1)(交叉交叉发生在双亲染色体之间,经杂交以后,产生两个具有双亲的部分基因的新的染色体。a1a2...aiai+1...anb1b2...bibi+1...bna1a2...aibi+1...bnb1b2...biai+1...an交叉前交叉后交叉位置变异变异发生在染色体的某一个基因上,当以二进制编码时,变异的基因由0变成1,或者由1变成0。如对于染色体x=11001,如果变异位发生在第三位,则变异后的染色体变成了y=11101。遗传算法1)初始化群体;2)计算群体上每个个体的适应度值;3)按由个体适应度值所决定的某个规则选择将进入下一代的个体;4)按概率Pc进行交叉操作;5)按概率Pm进行变异操作;6)没有满足某种停止条件,则转第(2)步,否则进入(7)7)输出种群中适应度值最优的染色体作为问题的满意解或最优解。例:求函数的最大值其中x为[0,31]间的整数编码:采用二进制形式编码由于x的定义域是[0,31]间的整数,刚好可以用5位二进制数表示,因此可以用5位二进制数表示该问题的解,即染色体。如00000表示x=0,10101表示x=21,11111表示x=31等2)(xxf求函数的最大值(续)适应函数:•直接使用函数f(x)作为适应函数。假设群体的规模N=4,交叉概率pc=100%,变异概率pm=1%。设随机生成的初始群体为:01101,11000,01000,10011选择方法:“确定性”法序号群体适应值选择概率(%)期望次数选中次数10110116914.440.58121100057649.231.972301000645.470.22041001136130.851.231第0代情况表序号种群交叉对像交叉位子代适应值1011012401100144211000141100162531100042110117294100113210000256第0代种群的交叉情况序号群体适应值选择概率(%)期望次数选中次数1011001448.210.33021100162535.621.42131101172941.561.66241000025614.600.581第1代情况表序号种群交叉对像交叉位子代适应值1110112311001625211001131101172931101141100002564100003111011729第1代种群的交叉情况早熟现象第1代群体经交叉后虽然平均适应值由438.5提高到584.75,但最大适应值没发生变化。从得到的新群体11011,11001,11011,10000来看,第三位基因均为0,因此已不能通过交叉达到最优了。这种过早陷入局部最优解的现象称为早熟。早熟现象的解决方法扩大群体的规模。变异可提高群体的多样性。如将第1代种群的第二个染色体的第三位发生变异。序号种群是否变异变异位新群体适应值111011N729211001Y311101841311011N11011729410000N10000256第1代种群的变异情况11011序号种群交叉对像交叉位子代适应值1110112311001625211101131111196131101142110005764100003210011361第2代种群的交叉情况遗传算法的特点随机搜索算法,适用于数值求解具有多参数、多变量、多目标等复杂的最优化问题。对待求解问题的指标函数没有什么特殊的要求,比如不要求诸如连续性、导数存在、单峰值假设等。甚至于不需要显式的写出指标函数。在经过编码以后,遗传算法几乎不需要任何与问题有关的知识,唯一需要的信息是适应值的计算,是一个比较通用的优化算法。遗传算法具有天然的并行性,适用于并行求解。收敛性定理若在代的进化过程中,遗传算法每次保留到目前为止的最好解,并且算法以交叉和变异为其随机化操作,则对于一个全局最优化问题,当进化代数趋于无穷时,遗传算法找到最优解的概率为1。遗传算法概述遗传算法的一般流程遗传算法的实现主要内容遗传算法的实现问题编码评价适应函数交叉规则停止条件编码举例:旅行商问题对n城市的旅行商问题,可用矩阵来表示一个可能解。按行展开,则该可能解可用二进制向量表示为:010010000001001001001000000100104321DCBA是指一名推销员要拜访多个地点时,如何找到在拜访每个地点一次后再回到起点的最短路径二进制表示存在的问题解可能非常稀疏,交叉和变异会产生大量的非可能解。一个n×n位二进制向量,所有可能的编码个数为,而一个对称的n城市旅行商问题的可能解个数为n!/2,只占编码个数非常小的比例。nn2适应函数可直接选取问题的指标函数作为适应函数。如求函数f(x)的最大值,就可以直接采用f(x)为适应函数。但在有些情况下,函数f(x)在最大值附近的变化可能会非常小,以至于他们的适应值非常接近,很难区分出哪个染色体占优。可定义新的适应函数,要求该适应函数与问题的指标函数具有相同的变化趋势,但变化的速度更快。二进制编码的交叉规则双亲双子法a1a2...aiai+1...anb1b2...bibi+1...bna1a2...aibi+1...bnb1b2...biai+1...an交叉前交叉后交叉位置常规交叉法随机选取一个交叉位子代1•交叉位之前,选自父代1交叉位之间的基因•交叉位之后,从父代2中按顺序选取那些没有出现过的基因。子代2的产生方式相同交叉位交叉位父代1:12345678子代1:12345786父代2:52173846子代2:52173468基于次序的交叉法父代1:12345678910父代2:59246110738所选位置:****父代1中与所选位置相对应的数字为:2、3、5、8。从父代2中找出这些数字,并去除它们,其中b表示空位置:父代2:b9b461107bb用2、3、5、8依次填入上述父代2的空位置中,得到子代1:29346110758基于位置的交叉法随机产生一组位置,这些位置上的基因,子代1从父代2中直接得到。子代1的其他位置的基因,按顺序从父代1中选取不相重的基因。子代2也类似处理。如:父代1:123456789父代2:592461738****子代1:192465738基于部分映射的交叉法随机产生两个位置,两个父代在这两个位置之间的基因产生对应对。用这种对应对分别去替换两个父代的基因,从而产生两个子代。父代1:264381579父代2:851762439子代1:184762539子代2:652381479对应对:3:78:61:2变异规则二进制编码中的变异整数编码中的变异二进制编码中的变异随机的产生一个变异位被选中的基因由“0”变为“1”,或由“1”变为“0”。变异前变异后11011011101001变异位整数编码中的变异基于位置的变异随机的产生两个变异位,然后将第二个变异位上的基因移动到第一变异位之前。21364572413657变异前变异后基于次序的变异随机的产生两个变异位,然后交换这两个变异位上的基因。21364572436157变异前变异后打乱变异随机选取染色体上的一段,然后打乱在该段内的基因次序。21364572463157变异前变异后遗传算法的评价收敛性定理给保证了遗传算法的收敛性。实际计算时,希望随时了解遗传算法的进展情况,监视算法的变化趋势。在线比较法用当前代中染色体的平均指标函数值来刻划算法的变化趋势:T为当前代中染色体的个数。TtlineontfTv1_)(1离线比较法用进化过程中每代最好解的指标函数值的平均值,来评价算法的进化过程:T是到目前为止的进化代数,f*(t)是第t代中,染色体的最好指标函数值。TtlineofftfTv1*_)(1性能评价评价遗传算法的性能非常困难,要确定性能度量和一些具有代表性的函数。可用达到最优点时性能函数值的平均计算次数和计算时间来度量。测试函数集,求最值有难度多峰值不连续的有噪声的遗传算法的浅显易懂的介绍