- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
应用篇-第15章-遗传算法的仿真与实现
第15章 遗传算法的仿真与实现;15.1 遗传算法介绍;
使用遗传算法需要决定的运行参数有:编码串长度、种群大小、交叉和变异概率。编码串长度由优化问题所要求的求解精度决定。种群大小表示种群中所含个体的数量,种群较小时,可提高遗传算法的运算速度,但却降低了群体的多样性,可能找不出最优解; 种群较大时,又会增加计算量,使遗传算法的运行效率降低。一般取种群数目为20 ~ 100。交叉概率控制着交叉操作的频率,由于交叉操作是遗传算法中产生新个体的主要方法,所以交叉概率通常应取较大值;但若过大的话,又可能破坏群体的优良模式。一般取0.4 ~ 0.99。变异概率也是影响新个体产生的一个因素,变异概率小,产生新个体少;变异概率太大,又会使遗传算法变成随机搜索。一般取变异概率为0.0001 ~ 0.1。遗传算法常采用的收敛判据有:规定遗传代数;连续几次得到的最优个体的适应值没有变化或变化很小等。
;15.2遗传算法基本原理;15.2.1编码;15.2.2 适应度评价函数;15.2.3选择算子;15.2.4交叉算子;15.2.5 变异算子;15.2.6 终止代数;15.3遗传算法的数学模型15.3.1Matlab遗传算法工具箱简介;3 选择函数
选择函数决定哪些个体进入下一代。
选择函数:Funtion[newPop]=selectFuntion(oldPop,options).
其中 newPop是被选择的新种群,oldPop是当前种群,options是其他可选参数向量。
遗传算法工具箱给出了roulette.m,normGeomSelect.m,tourn.m等3个选择函数。
4 初始化函数和终止函数
遗传算法工具箱给出了initializega.m,initializeoga.m,2个种群初始化函数和maxGenTerm.m,optMaxGenTerm2个终止函数。
遗传算法工具箱已经在多维变量优化。非线性规划、参数优化和动态系统最优控制等一系列领域有了很好的应用。;15.4遗传算法的MATLAB实现;在上面的代码中,首先根据各决策变量的下界(min_var)、上界(max_var)及其搜索精度scale_var来确定表示各决策变量的二进制串的长度bits,然后随机产生一个种群大小为popsize的初始种群bin_gen。编码后的实际搜索精度为scale_dec= (max_var-min_var)/(2^bits-1),该精度会在解码时用到。
2 解码
编码后的个体构成的种群bin_gen必须经过解码???转换成原问题空间的决策变量构成的种群var_gen,方能计算相应的适应值。
3 选择
选择过程是利用解码后求得的各个体适应值大小,淘汰一些较差的个体而选出一些比较优良的个体,已进行下一步的交叉和变异操作。
4 交叉
下面采用单点交叉的方法来实现交叉算子,即按选择概率PC在两两配对的个体编码串cpairs 中随机设置一个交叉点cpoints ,然后在该点相互交换两个配对个体的部分基因,从而形成两个新的个体,
5 变异
对于二进制的基因串而言,变异操作就是按照变异概率pm 随机选择变异点 mpoints,在变异点出将去位取反即可。
;15.5遗传算法实例及Matlab实现;1.1初始化(编码)
% initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),
% 长度大小取决于变量的二进制编码的长度(在本例中取10位)。
%遗传算法子程序
%Name: initpop.m
%初始化
function pop=initpop(popsize,chromlength)
pop=round(rand(popsize,chromlength)); % rand随机产生每个单元为 {0,1} 行数为popsize,列数为chromlength的矩阵,
% round对矩阵的每个单元进行圆整。这样产生的初始种群。
% 1.2 计算目标函数值
% 1.2.1 将二进制数转化为十进制数(1)
%遗传算法子程序
%Name: decodebinary.m
%产生 [2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制;% 1.2.2 将二进制编码转化为十进制数(2)
% decodechrom.m函数的功能是将染色体(或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的起始位置
% (对于多个变量而言,如有两个变量,采用20为表示,每个变量10为,则第一个变量从1开始,另一个变量从11开始。本例为1),
% 参数1ength表示所截取的长度(本例为10)。
%遗传算法子程序
%Na
文档评论(0)