《基于人工鱼群传算法的IIR数字滤波器的设计(24页).doc》由会员分享,可在线阅读,更多相关《基于人工鱼群传算法的IIR数字滤波器的设计(24页).doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于人工鱼群传算法的IIR数字滤波器的设计-第 24 页基于人工鱼群算法的IIR数字滤波 器的设计 课程名称: 数字信号处理 专业班级: 小组组员: 摘要4Abstract51 鱼群模式概论61.1 鱼群模式61.2鱼群行为分析61.3 人工鱼71.4 问题的解决82 人工鱼群算法92.1 人工鱼模型92.2 相关定义92.3行为描述102.3.1 觅食行为102.3.2 聚群行为102.3.3追尾行为102.2.4 随机行为112.2.5 行为选择112.4 算法描述113 数字滤波器143.1数字滤波器的简介143.2 FIR和IIR数字滤波器的概述143.2.1 FIR数字滤波器143
2、.2.2 IIR数字滤波器153.2.3 FIR数字滤波器与IIR数字滤波器的区别153.3 数字滤波器的设计要求163.4 数字滤波器的设计方法174基于人工鱼群算法的IIR数字滤波器的设计184.1 IIR数字滤波器优化模型184.2 IIR数字滤波器设计194.3 IIR数字滤波器的仿真结果204.3.1 仿真图形205 小结226 参考文献23附件24摘要 IIR数字滤波器设计一直是数字信号处理领域的重要课题之一。优化算法是数字滤波器设计的一种主要方法,它是在一定优化准则下,使设计的滤波器性达到最优,但由于这些算法都是非线性优化算法,优化过程中容易陷入局部最小值。近年来,随着智能优化算
3、法的广泛研究,已经有学者将遗传算法(GA)和粒子群算法(PSO)应用到IIR数字滤波器设计中。但是遗传算法运行速度慢,有时会陷入局部最优解的缺点;粒子群算法虽然运行速度快,算法简单,但是仍有很大的可能陷入局部最优解。为了克服以上的缺点,采用新的全局优化技术提高IIR数字滤波器的设计质量,是一个值得研究的课题。人工鱼群算法是新近提出的一种全局优化算法。它将基于行为的人工智能思想通过动物自治体的模式引入优化命题的解决中,构造了一种解决问题的架构一鱼群模式,并由此产生了一种高效的智能优化算法。将人工鱼群算法用于IIR数字滤波器的设计,发现该算法实现简单,有较强的跳出局部最优解的能力,并且具有算法灵活
4、,简单,收敛速度快和全局收敛性好等优点。 人工鱼群算法从具体的实施算法到总体的设计理念,都不同于传统的设计和解决方法,同时它又具有与传统方法相融合的基础,相信该算法将来会被广泛地应用于问题求解、机器学习、信号处理、智能控制和人工生命等领域。 关键词:IIR数字滤波器 人工鱼群算法 全局优化 Abstract IIR digital filter design has been an important topic in the field of digital signal processing. Optimization algorithm is a major method of digi
5、tal filter design, which is optimized under certain criteria, so that the design of the optimal filter, but because these algorithms are nonlinear optimization algorithm, the optimization process is easy to fall into local minimum. In recent years, along with a wide range of intelligent optimization
6、 algorithm, scholars have genetic algorithm (GA) and particle swarm optimization (PSO) is applied to IIR digital filter design. However, the genetic algorithm is running slow, and sometimes fall into local optimal solution; PSO algorithm although fast, simple algorithm, but there is still much more
7、likely to fall into local optima. To overcome these drawbacks, the use of a new global optimization techniques to improve the design quality IIR digital filter is a subject worthy of study. AFSA is a global optimization algorithm recently proposed. AI thought it through animal behavior-based autonom
8、ous body of the model into the optimization solution proposition, and construct a framework to solve the problem of a fish pattern, and thus produced a highly intelligent optimization algorithms. The AFSA for IIRDigital filter design, found that the algorithm is simple, there is a strong ability to
9、jump out of local optima, and has a flexible algorithm is simple and fast convergence and global convergence and good. AFSA algorithm from specific implementation into the overall design concept, are different from the traditional designs and solutions, but it also has the infrastructure and the int
10、egration of traditional methods, I believe that the future of the algorithm is widely used in problem solving, machine learning, signal processing, intelligent control and artificial life, and other fields. Keywords: IIR digital filter AFSA global optimization1 鱼群模式概论1.1 鱼群模式 在动物的进化过程中,经过漫长的自然界的优胜劣汰
11、,形成了形形色色的觅食和生存方式,这些方式为人类解决问题的思路带来了不少启发和鼓舞。鱼群模式便是一种基于鱼群行为的自治体寻优模式。 一个集群通常定义为一群自治体的集合,他们通过相互间直接的或者间接的通讯,从而通过全体的活动来解决一些分布式的难题。在集群的过程中没有所谓的领导者,单个个体的行为也相对比较简单,个体看上去是盲目与随机的,但整体的行为却是有序与有目的的。这样就使得该类问题的设计不同于传统设计方法,从而引入了自下而上的设计方法动物自治体模式。 本设计将动物自治体的概念引入优化算法中,采用了自下而上的思路,应用了基于行为的人工智能方法,形成了一种新的解决问题的模式,因为是从分析鱼类的活动
12、出发的,所以称为鱼群模式。1.2鱼群行为分析 鱼类与我们的关系相当密切,也较为我们所熟知,通常我们可以观察到如下的鱼类行为: 觅食行为:这是生物的一种最基本的行为,也就是趋向食物的一种活动;一般可以认为它是通过视觉或味觉来感知水中的食物量或浓度来选择趋向的,因此,以上所述的视觉概念可以应用于该行为。 聚群行为:这是鱼类较常见的一种现象,大量或少量的鱼都能聚集成群,这是它们在进化过程中形成的一种生存方式,可以进行集体觅食和躲避敌害。 追尾行为:当某一条鱼或几条鱼发现食物时,它们附近的鱼会尾随其后快速游过来,进而导致更远处的鱼也尾随过来。 随机行为:鱼在水中悠闲的自由游动,基本上是随机的,其实它们
13、也是为了更大范围的寻觅食物或同伴。 以上是鱼的几个典型行为,这些行为在不同时刻会相互转换,而这种转换通常是鱼通过对环境的感知来自主实现的,这些行为与鱼的觅食和生存都有着密切的关系,并且与我们优化问题的解决也有着密切的关系。1.3 人工鱼 在一片水域中,鱼往往能自行或尾随其它鱼找到营养物质多的地方,因而鱼生存数目最多的地方一般就是本水域中营养物质最多的地方。人工鱼群算法就是根据这一特点,通过构造人工鱼来模仿鱼群的各种行为,从而实现寻优。 人工鱼是真实鱼个体的一个虚拟实体,用来进行问题的分析和说明。借助于面向对象的分析方法,可以认为人工鱼就是一个封装了自身数据信息和一系列行为的一个实体,可以通过感
14、官来接收环境的刺激信息,并通过控制尾鳍来作出相应的应激活动。 人工鱼所在的环境主要是问题的解空间和其他人工鱼的状态,它在下一时刻的行为取决于目前自身的状态和目前环境的状态(包括问题当前解的优劣和其他同伴的状态),并且通过自身活动影响环境,进而影响其他同伴的活动。图1.1 人工鱼实体1.4 问题的解决 问题的解决是通过自治体在自主的活动过程中以某种形式表现出来的。在寻优过程中,通常会有两种方式表现出来: 一种形式是通过人工鱼最终的分布情况来确定最优解的分布,通常随着寻优过程的进展,人工鱼往往会聚集在极值点的周围,而且,全局最优的极值点周围通常能聚集较多的人工鱼; 另一种形式是在人工鱼的个体状态之
15、中表现出来的,即在寻优的过程中,跟踪记录最优个体的状态。 鱼群模式不同于传统的问题解决方法,提出了一种新的模式,从而在下文引出了一种新的优化模式人工鱼群算法,使得这一模式具备并行分布处理、参数和初值的鲁棒性强等能力。2 人工鱼群算法2.1 人工鱼模型 算法基于动物自治体模式,采用了自下而上的设计方法,所以,首先着重构造人工鱼的模型。这里主要采用了面向对象的技术,并用C+语言的伪代码形式来说明。通常,人工鱼的模型可以用右边的类来描述:class Artificial_fishVarious:float AF_Xn; /人工鱼的各个变量float AF_step; /人工鱼的步长float AF_
16、visual; /人工鱼的视野float try_number; /人工鱼觅食行为中尝试的次数float delta; /拥挤度因子Functions:float AF_foodconsistence();/人工鱼的食物浓度void AF_move(); /人工鱼移动到下一个位置float AF_follow(); /人工鱼的追尾行为float AF_prey(); /人工鱼的觅食行为float AF_swarm(); /人工鱼的群聚行为int AF_evaluate(); /人工鱼行为的评价与选择void AF_init(); /人工鱼的初始化artificial_fish();virtua
17、l Artificial_fish(); 这样,人工鱼的自身信息和一些行为封装在一个类里面,并且它的状态可以为其它同伴所感知到。2.2 相关定义人工鱼个体的状态可表示为向量X=(x1,x2,xn),其中xi(i=1,n)为欲寻优的变量;人工鱼当前所在位置的食物浓度表示为Y=f(X),其中Y为目标函数值;人工鱼个体的距离表示为di,j=/Xi-Xj/;Visual表示人工鱼的感知距离;Step表示人工鱼的最大步长;为拥挤度因子。在算法中设立一个公告板,定义为一条人工鱼,用于记录最优人工鱼的状态。每条人工鱼在每次行动后,将自身的当前状态与公告板的状态进行比较,如果自身状态优于公告板 ,则用自身状态
18、取代公告板状态。2.3行为描述 2.3.1 觅食行为设人工鱼的当前状态为Xi在其感知范围内随机选择一个状态Xj,如果在求极大问题中,YiYj ,因极大和极小问题可以互相转换,所以以下均以求极大问题讨论),则向该方向前进一步;反之,再重新随机选择状态Xj,判断是否满足前进条件;这样反复尝试try-number次后,如果仍不满足前进条件,则随机移动一步。2.3.2 聚群行为设人工鱼当前状态为Xi,探索当前邻域内(即di,jVisual)的伙伴数目及中心位置,如果,表明伙伴中心有较多的食物并且不太拥挤,则朝伙伴中心位置方向前进一步,否则执行觅食行为。 2.3.3追尾行为 设人工鱼当前状态为Xi,探索
19、当前邻域内(即di,j0处收敛,极点全部在z = 0处(因果系统); (3)结构上主要是非递归结构,没有输出到输入的反馈,但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。3.2.2 IIR数字滤波器IIR(Infinite Impulse Response)数字滤波器,又名“无限长冲激响应数字滤波器”,或“递归滤波器”。递归滤波器,也就是IIR数字滤波器,顾名思义,具有反馈,一般认为具有无限的冲激响应。IIR滤波器有以下几个特点: (1)封闭函数:IIR数字滤波器的系统函数可以写成封闭函数的形式。 (2)IIR数字滤波器采用递归型结构:IIR数字滤波器采用递归型结构,即结构上带有反馈环
20、路。IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。由于运算中的舍入处理,使误差不断累积,有时会产生微弱的寄生振荡。 (3)借助成熟的模拟滤波器的成果:IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。(4)需加相位校准网络:IIR数字滤波器的相位特性不好控制,对相位要求较高
21、时,需加相位校准网络。3.2.3 FIR数字滤波器与IIR数字滤波器的区别(1)单位响应IIR数字滤波器单位响应为无限脉冲序列,而FIR数字滤波器单位响应为有限的;FIR滤波器,也就是“非递归滤波器”,没有引入反馈。这种滤波器的脉冲响应是有限的。(2)幅频特性IIR数字滤波器幅频特性精度很高,不是线性相位的,可以应用于对相位信息不敏感的音频信号上;FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位,就是不同频率分量的信号经过FIR滤波器后他们的时间差不变,这是很好的性质。(3)实时信号处理FIR数字滤波器是有限的单位响应也有利于对数字信号的处理,便于编程,用于计算的时延也小,
22、这对实时的信号处理很重要。3.3 数字滤波器的设计要求实际中通常用的数字滤波器一般属于选频滤波器,数字滤波器的频响特性函数H(ejw)一般为复函数,所以通常表示为 H(ejw)=|H(ejw)|e 其中,|H(ejw)|称为幅频特性函数,(w)称为相频特性函数。幅频特性表示信号通过该滤波器后各频率成分的衰减情况,而相频特性反映各频率通过滤波器后在时间上的延时情况。一般来说,对于IIR滤波器,相频特性不做要求,而对于有线相位要求的滤波器,一般采用FIR滤波器来实现。图3.1 低通滤波器的幅值特性图3-1为低通滤波器的幅值特性,和分别称为通带截止频率和阻带截止频率。通带频率范围为,在通带中要求,阻
23、带频率范围为,在阻带中要求,从至称为过渡带。通带内所允许的最大衰减(dB)和阻带内所允许的最小衰减(dB)分别为和,分别定义为:一般要求:当时,当时,3.4 数字滤波器的设计方法 实际中的数字滤波器设计都是用有限精度算法实现的线性非移变系统。一般的设计内容和步骤包括: (1)根据实际需要确定数字滤波器的技术指标。例如滤波器的频率响应的幅度特性和截止频率等。 (2)用一个因果稳定的离散线性非移变系统函数去逼近这些性能指标。具体来说,就是用这些指标来计算系统函数H(z)。 (3)利用有限精度算法来实现这个系统函数。这里包括选择运算结构、进行误差分析和选择合适的字长等。 (4)实际的数字滤波器实现技
24、术,包括采用通用的计算机软件或专用的数字滤波器硬件来实现,或采用通用或专用的数字信号处理器(DSP)来实现。4基于人工鱼群算法的IIR数字滤波器的设计4.1 IIR数字滤波器优化模型 IIR数字滤波器的传递函数为 (1) 如果采用(1)式进行IIR数字滤波器设计,则待优化的参数共有M+N+2个,且各参数的取值范围难以确定。因此,当利用优化算法进行IIR数字滤波器设计时,通常采用(1)式的二阶节的级联结构形式: (2)式中是常数,N为二阶节的个数,,,是待优化参数。 与(2)式相对应的IIR数字滤波器的频率响应为: (3)其中: (4)假设IIR滤波器的理想幅频响应为,则IIR滤波器频域最小均方
25、差优化设计就是要求在离散频率点上,使所设计的滤波器的幅频响应与所要求的幅频响应的平方误差: (5)为最小。由(3)和(5)式可以看出,目标函数E是增益A和滤波器系数,(k=1,2,N)的非线性函数。因此E是一个有(4N+1)个未知参数的函数,用下式表示为: (6)其中向量为:对上面的函数,可以推导出最佳增益A的解析表达式,令 (7)从而有: (8)由于只考虑幅度误差,所以的正负对结果没有影响。为了保证所设计出的滤波器是稳定的,需要对优化参数范围进行限定。由(3)式可知,只要使每个二阶节的极点都在Z平面的单位圆内,即的零点满足,由此可确定、的取值范围为:若参数在此范围内取值,优化结果仍出现不稳定
26、的极点,可以用其倒数来代替该极点,从而在不改变滤波器幅频响应的情况下保证得到稳定的数字滤波器。4.2 IIR数字滤波器设计 在鱼群算法的IIR数字滤波器设计中,人工鱼个体的状态表示欲寻优的变量,即: ;人工鱼所处位置的食物浓度由目标函数表示,即: 综上所述,将人工鱼群算法用于IIR数字滤波器的设计,算法步骤如下所示: (1)设定鱼群算法的参数,包括鱼群规模的大小,最大迭代次数,人工鱼的感知范围Visual,最大移动步长Step,拥挤度因子等。 (2)在参数区间内随机生成N个人工鱼个体,作为初始鱼群。 (3)根据A的表达式计算它的模,并利用目标函数计算初始人工鱼个体当前位置的食物浓度,并比较其大
27、小,取Y值最小者进入公告板,并保存其状态。 (4)人工鱼分别模拟执行追尾行为和聚群行为,选择行动后Y值较小的行为为实际执行,本文缺省行为为觅食行为。 (5)人工鱼每行动一次后,评价自身的Y值与公告板的Y值,如果小于公告板中的值,则以自身取代之。 (6)重复(4)至(5)步,直到满足精度要求或达到最大迭代次数,则公告板上最终的结果即为我们所得到的最优解。4.3 IIR数字滤波器的仿真结果4.3.1 仿真图形5 小结近年来,随着人工智能和人工生命的兴起,出现了一些新型的仿生算法。将人工智能的思想应用于问题的寻优是一个自然而然的思路,随着计算设备和软件技术的发展,我们有能力实施一些高级的计算方法,使
28、得这一思路逐渐变得现实和实用。在数字滤波器的设计研究领域,应用遗传算法等优化算法对数字滤波器的性能指标的优化以及仿真实现IIR和FIR数字滤波器是当前的研究热点之一。鱼群模式提供了一种灵活的架构,我们可以根据问题的性质对人工鱼群算法进行相应的调整,如对于规模小或性质简单的问题,可以通过对人工鱼行为进行简化或干脆忽略某些行为来达到简化算法、提高效率的目的;对于规模大或性质复杂的问题,可以添加相应的有效行为或参数来更好的解决问题,如基于分解协调的人工鱼群算法中引入协调行为,解决了子系统之间的协调问题;对于非连续形式的优化命题或者非数值型的优化命题,可以相应的转化一下视野等概念的表示方法来使得算法可
29、行,并达到解决问题的目的,如组合优化问题的解决。 然而,随着优化命题的复杂程度和规模的不断提高,使用某一单一的优化算法而使问题得到满意的解决。最重要的是随机性太强,既是优点也是缺点,造成最有的选择也很随机,而不是每次都能现实最优结果。在以后的研究上,将成熟的算法进行良好的融合,利用它们的优势互补,共同来解决问题不失为一个好的选择。鱼群模式就为鱼群算法与其他一些优秀算法进行融合和互补提供了一个良好的架构。6 参考文献1 刘泉,阙大顺,郭志强.数字信号处理原理与实现(第二版).电子工业出版社.20092 李晓磊,钱积新.基于分解协调的人工鱼群优化算法研究J.电路与系统学报. 2003(01)3 殷
30、志锋,田亚菲.基于人工鱼群算法的IIR数字滤波器设计.信息技术.2006(07)4 邹理和.数字滤波器M.北京:国防工业出版社,1979.5 董长虹,余啸海,高成等.Matlab信号处理与应用M.北京:国防工业出版社,2004.附件普通算法设计IIR滤波器的MATLAB程序fs=20000;fp=2000;fst=4000;wp=fp/fs*2*pi;ws=fst/fs*2*pi;Ap = 3;As = 20; % 频率预畸omegap = (2*fs)*tan(wp/2); % Prewarp Prototype Passband freqomegas = (2*fs)*tan(ws/2);
31、 % Prewarp Prototype Stopband freq%设计巴特沃斯低通滤波器原型N = ceil(log10(10(Ap/10)-1)/(10(As/10)-1)/(2*log10(omegap/omegas);omega0 = omegap/(10(Ap/10)-1)(1/(2*N);z,p,k = buttap(N); %获取零极点参数p = p*omega0;k = k*omega0N;B = real(poly(z);b0 = k;cs = k*B;ds = real(poly(p);b,a = bilinear(cs,ds,fs); %双线性变换freqz(b,a,f
32、s); %绘制结果遗传算法设计IIR数字滤波器的MATLAB程序 I 相关函数% 初始化(编码)% initpop.m函数的功能是实现群体的初始化,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),% 长度大小取决于变量的二进制编码的长度(在本例中取10位)。%遗传算法子程序%Name: initpop.m%初始化function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength); % rand随机产生每个单元为 0,1 行数为popsize,列数为chromlength
33、的矩阵,% roud对矩阵的每个单元进行圆整。这样产生的初始种群。% 计算目标函数值%将二进制数转化为十进制数(1)%遗传算法子程序%Name: decodebinary.m%产生 2n 2(n-1) . 1 的行向量,然后求和,将二进制转化为十进制function pop2=decodebinary(pop)px,py=size(pop); %求pop行和列数for i=1:pypop1(:,i)=2.(py-i).*pop(:,i);endpop2=sum(pop1,2); %求pop1的每行之和% 将二进制编码转化为十进制数% decodechrom.m函数的功能是将染色体(或二进制编码
34、)转换为十进制,参数spoint表示待解码的二进制串的起始位置% (对于多个变量而言,如有两个变量,采用160为表示,每个变量10为,则第一个变量从1开始,另一个变量从11开始。本例为1),% 参数1ength表示所截取的长度(本例为10)。%遗传算法子程序%Name: decodechrom.m%将二进制编码转换成十进制function pop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);pop2=decodebinary(pop1);% 计算目标函数值% calobjvalue.m函数的功能是实现目标函
35、数的计算,其公式采用本文示例仿真,可根据不同优化问题予以修改。%遗传算法子程序%Name: calobjvalue.m%实现目标函数的计算function objvalue=calobjvalue(pop)temp1=decodechrom(pop,1,10); %将pop每行转化成十进制数x1=temp1*10/1023; %将二值域中的数转化为变量域的数temp2=decodechrom(pop,1,10); x2=temp2*10/1023;temp3=decodechrom(pop,1,10); x3=temp3*10/1023;temp4=decodechrom(pop,1,10);
36、 x4=temp4*10/1023objvalue=impz(x1,x2,x3,x4); %计算目标函数值% 计算个体的适应值%遗传算法子程序%Name:calfitvalue.m%计算个体的适应值function fitvalue=calfitvalue(objvalue)global Cmin;Cmin=0;px,py=size(objvalue);for i=1:pxif objvalue(i)+Cmin0temp=Cmin+objvalue(i);elsetemp=0.0;endfitvalue(i)=temp;endfitvalue=fitvalue;% 选择复制% 选择或复制操作是
37、决定哪些个体可以进入下一代。程序中采用赌轮盘选择法选择,这种方法较易实现。% 根据方程 pi=fi/fi=fi/fsum ,选择步骤:% 1) 在第 t 代,由(1)式计算 fsum 和 pi % 2) 产生 0,1 的随机数 rand( .),求 s=rand( .)*fsum% 3) 求 fis 中最小的 k ,则第 k 个个体被选中% 4) 进行 N 次2)、3)操作,得到 N 个个体,成为第 t=t+1 代种群%遗传算法子程序%Name: selection.m%选择复制function newpop=selection(pop,fitvalue)totalfit=sum(fitval
38、ue); %求适应值之和fitvalue=fitvalue/totalfit; %单个个体被选择的概率fitvalue=cumsum(fitvalue); %如 fitvalue=1 2 3 4,则 cumsum(fitvalue)=1 3 6 10 px,py=size(pop);ms=sort(rand(px,1); %从小到大排列fitin=1;newin=1;while newin=pxif(ms(newin)fitvalue(fitin)newpop(newin)=pop(fitin);newin=newin+1;elsefitin=fitin+1;endend%交叉% 交叉(cro
39、ssover),群体中的每个个体之间都以一定的概率 pc 交叉,即两个个体从各自字符串的某一位置% (一般是随机确定)开始互相交换,这类似生物进化过程中的基因分裂与重组。例如,假设2个父代个体x1,x2为:% x1=0100110% x2=1010001% 从每个个体的第3位开始交叉,交又后得到2个新的子代个体y1,y2分别为:% y10100001% y21010110% 这样2个子代个体就分别具有了2个父代个体的某些特征。利用交又我们有可能由父代个体在子代组合成具有更高适合度的个体。% 事实上交又是遗传算法区别于其它传统优化方法的主要特点之一。%遗传算法子程序%Name: crossove
40、r.m%交叉function newpop=crossover(pop,pc)px,py=size(pop);newpop=ones(size(pop);for i=1:2:px-1if(randpc)cpoint=round(rand*py);newpop(i,:)=pop(i,1:cpoint),pop(i+1,cpoint+1:py);newpop(i+1,:)=pop(i+1,1:cpoint),pop(i,cpoint+1:py);elsenewpop(i,:)=pop(i);newpop(i+1,:)=pop(i+1);endend%变异% 变异(mutation),基因的突变普遍存在于生物的进化过程中。变异是指父代中的每个个体的每一位都以概率 pm 翻转,即由“1”变为“0”,% 或由“0”变为“1”。遗传算法的变异特性可以使求解过程随机地搜索到解可能存在的整个空间,因此可以在一定程度上求得全局最优解。%遗传算法子程序%Name: mutation.m%变异function newpop=mutation(pop,pm)px,py=size(pop);newpop=ones(size(pop);for i=1:pxif(randpm)mpoint=round(rand*py);if mpoint=0mpoint=1;endnew