- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Matlab学习系列37.遗传算法分析
37. 遗传算法一、算法概述遗传算法(Genetic Algorithm),是由美国的J. Holland教授于1975年首先提出的,是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启发式搜索算法。遗传算法的生物背景知识: 基因 (Gene):一个遗传因子,染色体上一个单元(解中的一个参数);染色体/个体(Chromosome):由一组基因构成(问题可能的一个解);种群(Population):由一系列染色体组成的一个集合; 生存竞争,适者生存:对环境适应度高的个体参与繁殖的机会比较多,后代就会越来越多。适应度低的个体参与繁殖的机会比较少,后代就会越来越少。 遗传与变异:新个体会遗传父母双方各一部分的基因,同时有一定的概率发生基因变异。 简单说来就是:繁殖过程,会发生基因交叉(Crossover),基因突变(Mutation),适应度(Fitness)低的个体会被逐步淘汰,而适应度高的个体会越来越多。那么经过N代的自然选择后,保存下来的个体都是适应度很高的,其中很可能包含史上产生的适应度最高的那个个体。遗传算法思想:借鉴生物进化论,遗传算法将要解决的问题模拟成一个生物进化的过程。问题域中的可能解被看作是种群的个体,对于一个最优化问题,一定数量的候选解的抽象表示(个体)的种群向更好的解进化。每一代中种群的各个个体会被评价适应度,基于个体的适应度,从当前种群中随机择优选择多个个体,通过交叉、突变产生新的个体,逐步淘汰掉适应度函数值低的解,增加适应度函数值高的解。这样进化若干代后就很有可能会进化出适应度函数值很高的个体。二、算法步骤1. 基本步骤(1) 初始化:初始化进化代数计数器t←0,最大进化代数T(一般100~500),初始化变异概率α(一般0.0001~0.2)、交叉概率β(一般0.4~0.99),随机生成M个(一般10~100)个体作为初始群体P(t);(2) 个体评价:计算P(t)中各个个体的适应度值;(3) 选择运算:将选择算子作用于群体;(4) 交叉运算:将交叉算子作用于群体;(5) 变异运算:将变异算子作用于群体;(6) 终止条件:若t≤T,则t←t+1, 并转到第(2)步;否则输出P(t)中的最优解。2. 基本操作(1) 编码遗传算法中,首要问题就是如何对解进行编码(解的形式),编码影响到交叉、变异等运算,很大程度上决定了遗传算法的效率。二进制编码:每个基因值为符号0和1所组成的二值制数;格雷编码:与二进制编码类似,连续两个整数所对应编码仅一码之差;实数编码:每个基因值用某一范围内的一个实数来表示;符号编码:染色体编码串中的基因值取自一个无数值含义,而只有代码含义的符号集。(2) 适应度函数也称评价函数,是根据目标函数确定的用于区分群体中个体好坏的标准,适应度函数值的大小是对个体的优胜劣汰的依据。通常适应度函数可以由目标函数直接或间接改造得到。比如,目标函数或目标函数的倒数/相反数经常被直接用作适应度函数。一般情况下适应度是非负的,并且总是希望适应度越大越好(适应度值与解的优劣成反比例)。比较好的适应度函数应:单值、连续、非负、最大化。适应度函数不应过于复杂,越简单越好,以便于计算机的快速计算。(3) 选择选择运算的作用是对个体进行优胜劣汰:从父代群体中选取一些适应度高个体(遗传到下一代的概率大),遗传到下一代群体。轮盘赌法:又称比例选择算子,个体i被选中的概率Pi与其适应度成正比:例如,种群规模为5,各个个体的适应度归一化后为p=[0.16, 0.39, 0.11, 0.14, 0.20]则累加得到cump=[0.16, 0.55, 0.66, 0.8, 1.0], 则可以通过生成[0,1]间的随机数rand来决定选择哪些个体:若rand∈[0, 0.16), 则第1个个体被选中;若rand∈[0.66, 0.8), 则第4个个体被选中。以[0 0.16 0.55 0.66 0.8 1.0]为自变量, [1:6]为因变量,进行线性插值,在随机生成的5个[0,1]间的随机数rand处,插值出5个因变量值,再向下取整作为被选中的个体。例如,若rand(1)介于[0,0.16), 则插值因变量介于[1,2), 向下取整得到的“1”,作为被选中的个体。两两竞争:从父代中随机地选取两个个体,比较适应度值,保存优秀个体,淘汰较差的个体;排序选择:根据各个体的适应度大小进行排序,然后基于所排序号进行选择。(4) 交叉是指对两个相互配对的染色体,依据交叉概率按某种方式相互交换其部分基因,从而形成两个新的个体。交叉运算是遗传算法区别于其它进化算法的重要特征,在遗传算法中起关键作用,是产生新个体的主要方法。两点交叉示例(9个城市):索引位置(j):1 2 3 4 5 6 7 8 9父代1(P1):48
文档评论(0)