基于matlab的遗传算法程序设计new

基于matlab的遗传算法程序设计new

ID:34108874

大小:531.54 KB

页数:3页

时间:2019-03-03

基于matlab的遗传算法程序设计new_第1页
基于matlab的遗传算法程序设计new_第2页
基于matlab的遗传算法程序设计new_第3页
资源描述:

《基于matlab的遗传算法程序设计new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第29卷第1期广西物理GUANAGXIPHYSICSVol.29No.12008基于Matlab的遗传算法程序设计蓝发超,王洪(华南理工大学物理科学与技术学院,广东广州510640)摘要:遗传算法作为一种新的优化方法,广泛地用于计算科学、模式识别和智能故障诊断等方面,它适用于解决复杂的非线性和多维空间寻优问题,近年来也得到了较为广阔的应用。文章简单介绍了遗传算法的原理和特点,以及基本操作和求解步骤,再基于Matlab编写程序求解函数极值的优化问题。程序设计过程表明,用Matlab语言进行优化计算,具有编程语句简单,用法灵活,编程效率高等优点,经仿真验证,该算法是正确可行的。关键词:

2、优化;遗传算法;Matlab中图分类号:TP312文献标识码:A文章编号:1003-7551(2008)01-0032-031前言遗传算法作为一种新的优化方法,它的特点是几乎不需要所求问题的任何信息,仅需目标函数的信息,而且不受搜索空间是否连续或可微的限制就可找到最优解。因此,遗传算法广泛地应用于计算科学、模式识别和智能故障诊断等方面,适用于解决复杂的非线性和多维空间寻优问题。遗传算法在参数寻优过程中,基于生物遗传学的基本原理,模拟自然界生物种群的“物竞天选,适者生存”的自然规律。把自变量看成生物体,把它转化成由基因构成的染色体(个体),把寻优的目标函数定义为适应度,未知函数视为其

3、生存环境,通过基因操作(如复制、交换和变异等),最终求出全局最优解。2算法模型与基本操作2.1遗传算法的基本模型1)将问题的解表示为编码串(生物学术语称为染色体),每一码串代表问题的一个可行解。2)随机产生一组串长为m的初始群体,该群体就是问题的一个可行解的集合。3)分别将编码串译码成寻优参数,计算对应的目标函数并变换为适应值。4)根据码串个体适应值的高低,执行应用复制、交换和变异算子产生下一代群体。5)返回步骤3,直到满足停止准则为止。这样,反复执行步骤3到步骤5,使码串群体一代代不断进化,最后搜索到最适应问题的个体,求得问题的最优解,其流程图如图1所示。图1遗传算法流程图2.2

4、遗传算法的四种基本操作2.2.1编码及解码首先,根据希望的精度确定编码串的长度(如要求到小数点后第n位),则在自变量的区域P[a,b]内,二进制码串的最小长度为m位,满足如下关系mn−1m21()−≤−⋅ba1021≤−(1)相应地,其编码公式为*收稿日期:2007-12-1532基于Matlab的遗传算法程序设计xai−m(2)A=⋅−(21)iba−对应的解码公式为ba−xaA=+⋅(3)iim21−2.2.2复制操作首先计算当前群体中各码串Ai的适应值E(Ai),计算出群体总的适应值F,每一码串被选中的概率为nPAii()()/==EAFEAi()/i∑EA()i(4)i=1

5、典型的复制过程是执行回放式随机采样(转盘式选择)n次,每次选中一个码串组成一个新的群体。2.2.3变换操作按一定概率pc从群体中随机选择出一定数量的码串,并随机地组对,然后,从某一随机选定的位置开始交换两个码串的某些位。典型的交换方法有单点交换、两点交换和多点交换。其中pc称为交换概率。2.2.4变异操作按一定概率pm对群体中某些码位进行变异(即1变为0,或0变为1),其中pm称为变异概率。3优化实例与源程序考虑如下的一个优化问题:max{f()

6、xxX∈}(5)这里f是X上的一个函数,X是问题的解空间。它可以是一个有限集合(如组合优化问题),也可以是实空n间R的一个子集(如连接优

7、化问题)等。有了以上的理论基础,现在来举个简单的实例来说明,如优化如下的目标函数(求最大值):2fx()=+2xcos(3)xxsin(5)8x+(6)打开并进入Matlab,新建一.m文件,输入以下的程序内容,并保存名为sga.m的文件。functionresult=sga(n,a,b,pc,pm,e)wh=sort(rand(popusize,1));%从小到大排列%n—群体规模;a—搜索上限;b—搜索下限;wheel=1;fitone=1;%pc—交叉概率;pm—变异概率;e—计算精度;whilewheel<=popusize%执行转盘式选择操作fori=1:50%求出群体的

8、码串最小长度mifwh(wheel)2^(i)newpopu(wheel,:)=popu(fitone,:);m=i+1;wheel=wheel+1;elseelsei=i+1;fitone=fitone+1;endendendendpopusize=n;chromlength=m;j=1;popu=newpopu;popu=round(rand(popusize,chromlength));%随机产生nfori=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。