MATLAB.遗传算法和粒子群算法程序设计及实例应用
时间:2025-07-09
时间:2025-07-09
计算智能中的遗传算法和粒子群算法的程序设计及实例应用,实现基本算法
1
计算智能程序设计
遗传算法和群智能算法程序设计及实例应用
天天向尚磊lei_tech@http://
摘要
本文主要包含以下内容:
遗传算法和粒子群算法的程序设计的一般结构。主要介绍两类算法的程序设计中的主要思想。
介绍在Matlab编程中一些需要注意的细节。在实际编程实现中,结合Matlab语言的特色,可以将程序效率发挥到极致。
一个遗传算法实例和一个粒子群算法实例。
目录
一、遗传算法和粒子群算法 (2)
1.1 遗传算法 (2)
1.1.1算法 (2)
1.1.2注意事项 (2)
1.1.3Matlab编程注意事项 (2)
1.2粒子群算法 (3)
1.2.1算法 (3)
1.2.2注意事项 (3)
1.2.3Matlab编程注意事项 (3)
二、遗传算法和粒子群算法编程实例 (3)
2.1遗传算法实例 (3)
2.1.1解决的问题 (4)
2.1.2Matlab程序主体构成 (4)
2.1.3程序运行示例 (5)
2.2粒子群算法实例 (6)
2.2.1解决的问题 (6)
2.2.2Matlab程序主体构成 (6)
2.2.3程序运行示例 (7)
三、参考文献 (8)
附录 (8)
1遗传算法Matlab程序调用子函数 (8)
2粒子群算法Matlab程序调用子函数 (10)
计算智能中的遗传算法和粒子群算法的程序设计及实例应用,实现基本算法
2
一、遗传算法和粒子群算法
1.1遗传算法
对于遗传算法,本文主要是介绍简单遗传算法的主体思想。
1.1.1算法
1.1.2注意事项
针对遗传算法下面作几点说明:
1.适应度与编码
针对具体问题,遗传算法首要面对的是:编码方式的选择和适应度函数的选择。两者的影响主要有两方面:一是对结果好坏的影响;二是对计算复杂度的影响。
2.概率常数设置
接下来就是概率常数的设置。一是染色体杂交时所设置的概率,二是染色体变异时所设置的概率。概率设置的不同对算法的收敛快慢影响比较大,针对一类问题,可以根据经验获取经验参数。
3.迭代终止条件的选取
上述算法时采取的既定迭代次数停止作为终止,另外还可以设置迭代多少次适应度值改变不大而跳出循环,也可设置达到预定使用度值即可跳出循环。即一类是既定次数停止,一类是根据适应度值停止,根据具体问题可自定义设置迭代终止条件,以避免死循环。
1.1.3Matlab编程注意事项
1.适应度函数选取
适应度函数的选取要作到在对结果影响预估不会太大的情况下,尽量选择简单的函数,即计算量小的函数。其原因在于,Matlab在执行遗传算法时,函数的计算量占据了很大一部分时间。
1.分多文档保存各部分程序
分多个文档可提高程序运行效率,另外也可将各部分职能更加清晰的呈现,也使得程序的
计算智能中的遗传算法和粒子群算法的程序设计及实例应用,实现基本算法
3
调试简化。
2.编码
若是用遗传算法求解函数优化问题,Matlab中有自带的二进制字符串和十进制之间的转换函数。编码多用向量或矩阵计算,因此特别注意尽量多的采用向量或者矩阵的方式计算,而不是采用循环,Matlab中循环结构效率并不高。即便是采用循环也尽量做到列优先。
1.2粒子群算法
粒子群算法相对于上节的遗传算法在编程实现上简单。在某些注意事项上和遗传算法相同之处。
1.2.1算法
1.2.2注意事项
1.领域拓扑结构选取
即粒子之间互换信息的单位或结构,思路最简单的即以整个群为一个互换信息单位,互换信息主要涉及到适应度函数值的计算,另外,结构的选取,直接关系到每一步粒子位置和速度的更新情况。因此,它一方面影响收敛速度,一方面对计算复杂度和计算量有很大影响。2.在参数设置和适应度函数选择上和遗传算法类似。
1.2.3Matlab编程注意事项
1.适应度函数的计算
在粒子群间信息互换时,主要涉及到的计算量就是适应度函数值的计算,可采取向量化计算。即每个粒子信息交换的最小单位的适应度函数值可实现一次性计算,这就极大的提高了程序的效率。
此处涉及的向量化计算优势将在后面的实例中得到淋漓精致的体现。
2.另外,适应度函数可单独编写function或者采用匿名函数。其余事项和遗传算法类似。
二、遗传算法和粒子群算法编程实例
2.1遗传算法实例
本例选自《计算智能》2.2的案例作为编程实现对象。
计算智能中的遗传算法和粒子群算法的程序设计及实例应用,实现基本算法
4 2.1.1解决的问题
maxf(x1,x2)=21.5+x1sin(4πx1)+x2sin(20πx2),
−3.0≤x1≤12.1,
4.1≤x2≤
5.8.
程序设计中选择的二进制编码,种群规模二20,染色体杂交时的概率为0.25,变异时概率为0.01,适应度函数为函数本身,终止条件为达到预定最大迭代次数。
2.1.2Matlab程序主体构成
Objective function (4)
Initial group (4)
Loop for better result (5)
计算智能中的遗传算法和粒子群算法的程序设计及实例应用,实现基本算法
5
2.1.3程序运行示例
4.559407s。
后面几乎是浪费时间。由此看来,并不是迭代次数越多越好,同时也体现了遗传算法的随机性。因此,选择好的终止条件 …… 此处隐藏:907字,全部文档内容请下载后查看。喜欢就下载吧 ……