2008,44(9)-10
-5
05
10
6420-2-4
-6
x1
x2
(a)随机生成初始种群-10
-5
05
10
6420-2-4-6x1
x2
(b)均匀生成初始种群
图1初始种群个体分布
1引言
遗传算法(GeneticAlgorithm,GA)
是模拟自然界生物进化机制发展起来的随机全局搜索和优化方法,它借鉴了达尔文的进化论和孟徳尔的遗传学说。其本质是一种高效、并行、全局搜索的方法,能在搜索过程中自动获取和积累有关搜索空间的知识,并自适应地控制搜索过程以求得最优解。遗传算法操作使用适者生存的原则,在潜在的解决方案种群中逐次产生一个近似最优的方案。在遗传算法的每一代中,根据个体在问题域中的适应度值和从自然遗传学中借鉴来的再造方法进行个体选择,产生一个新的近似解。这个过程导致种群中个体的进化,得到的新个体比原个体更能适应环境。
遗传算法作为一种实用、高效、鲁棒性强的优化技术,发展极为迅速。其中,基于改进的遗传算法与模糊、神经网络等智能算法的结合已成功应用于非线性大滞后系统的参数寻优[1]以及模糊RBF网络控制器设计中[2],随着遗传算法的不断改进,其应用的领域也不断增加,在函数优化、机器学习、图像处理、经济预测等方面也得到了广泛应用。
尽管遗传算法有许多优点,也有许多专家学者对遗传算法进行不断研究,但仍然存在数值优化精度不高、过早收敛和收敛性能差等缺点,提出了一种扩大交叉规模的自适应遗传算法(AdaptiveGeneticAlgorithmwithCrossover-ScaleExpansion,
AGACSE)
,通过对初始种群的生成和交叉操作加以改进,同时将交叉、变异概率依群体相似度做自适应调整,使之更适应于解决复杂的优化问题。
2扩大交叉规模的自适应遗传算法2.1初始种群的产生
基本遗传算法(SimpleGeneticAlgorithm,SGA)是按随机方法产生一组初始解群体,这样可能导致初始解群体在解空间分布不均匀,从而影响算法的性能。该文采用二进制编码方法,初始群体的各个个体之间应保持一定的距离,这个距离由广义海明距离确定。要求入选群体的所有个体之间的广义海明距离大于一个阈值,经多次实验得知,该阈值与种群规模、编码长度有关。初始群体采用均匀化生成方法,能保证随机产生的各个个体之间有较明显的差别,使它们能均匀地分布在解空间,从而增加获取全局最优解的可能。图1给出了随机生成初始种群与均匀化生成初始种群的对比图,其中两个决策变量为x1、x2,约束条件为-6≤xi≤6(i=1,2),种群规模为30,每一个决策变量编码码长为12,阈值为8。
一种扩大交叉规模的自适应遗传算法
冯冬青,王非,马雁
FENGDong-qing,WANGFei,MAYan
郑州大学电气工程学院,郑州450001DepartmentofElectricalEngineering,ZhengzhouUniversity,Zhengzhou450001,ChinaE-mail:wangfei811012@sina.com
FENGDong-qing,WANGFei,MAYan.Adaptivegeneticalgorithmwithcrossover-scaleexpansion.ComputerEngineering
andApplications,2008,44(9):73-75.Abstract:Anadaptivegeneticalgorithmwithcrossover-scaleexpansionisproposedtoovercomeslowconvergence,poorstability
andeasytobetrappedintoalocaloptimumofthestandardgeneticalgorithm.Thesimulationwiththetypicaltestfunctionsindi-catesthatthisnewgeneticalgorithmhashighersearchveracity,rapiderconvergencespeed,andstrongerabilityagainstprecocity.Keywords:crossover-scaleexpansion;adaptivegeneticalgorithm;searchveracity;convergencespeed摘要:针对基本遗传算法收敛速度慢、稳定性差、容易陷入局部最优等缺点,提出了一种扩大交叉规模的自适应遗传算法并用典型测试函数加以仿真研究。通过仿真可以看出,新算法具有搜索精度高、收敛速度快、抗早熟能力强等特点。关键词:扩大交叉规模;自适应遗传算法;搜索精度;收敛速度文章编号:1002-8331(2008)09-0073-03
文献标识码:A
中图分类号:TP18
基金项目:河南省自然科学基金(theNaturalScienceFoundationofHenanProvinceofChinaunderGrantNo.0511010800)。
作者简介:冯冬青(1958-),男,教授,博士,主要研究领域为智能控制理论研究与应用;王非(1981-),男,硕士研究生,主要研究领域为计算机智能
控制;马雁(1982-),女,硕士研究生,主要研究领域为智能控制。
收稿日期:2007-07-16
修回日期:2007-10-10
ComputerEngineeringandApplications计算机工程与应用73
ComputerEngineeringandApplications计算机工程与应用
2008,44(9)2.2联赛选择与最优保留相结合的选择机制
联赛选择是一种基于个体适应度之间大小关系的选择方
法,其基本思想是每次选取几个个体中适应度最高的一个个体遗传到下一代群体中。在此基础上配合最优保留策略,两者的结合可以取长补短,既不破坏优良个体又可保证算法全局搜索的能力。
2.3扩大交叉规模的交叉操作
设种群规模为Size,在交叉操作中,首先随机产生Size个
[0,1]之间的随机数与每个个体相对应,若该个体对应的随机数大于交叉概率,则该个体不被选中;若该个体对应的随机数小
于等于交叉概率,则该个体被选中,并存入交叉库中(交叉库是指每一代要进行交叉的个体所组成的集合)。设交叉库中的个体总数为popsize(popsize<Size),然后对交叉库中的每两个个体均进行一次交叉操作,从而使得每个个体参与交叉的机会大大增加,扩大了基因重组范围,有利于生成包含更多优良基因的新个体。再将交叉产生的新个体存入一个临时种群中,此时临时种群规模为popsize*(popsize-1),最后将临时种群中的个体按适应度值进行排序,并按从大到小的顺序依次取前pop-size个个体去代替原先组建交叉库的那部分父个体。
2.4交叉变异概率自适应调整
2.4.1群体相似度[3]
令种群规模为Size,编码长度为L,若种群中第i位为0的个体数目为Mi,0,为1的个体数目为Mi,1,则定义第i位的相似度为:
!i=
max(Mi,0,Mi,1
)Size
(i=1,2,3,…,L)
则群体的相似度定义为:!=1
LL
i=1!!i
显然,相似度的值域为0.5≤!≤1,当种群完全随机产生时!=0.5,
当种群完全收敛时!=1。2.4.2基于群体相似度的交叉变异概率自适应调整
相似度反映了种群收敛的程度,决定了交叉变异操作的效率。进化初期,群体相似度较小,种群多样性较好,应采取大交叉小变异的策略,使得优秀个体的繁殖能力增强,种群收敛加快。随着进化的不断进行,群体相似度逐渐变大,种群中的基因缺乏多样性,此时应采取小交叉大变异的策略,避免近亲繁殖和陷入局部最优解的可能。由于交叉、变异概率随群体相似度呈单调非线性变化,且变化趋势较为平缓,而以e为底的指数函数恰恰具有单调非线性的特点,可用来近似反应交叉、变异概率随群体相似度变化趋势,故该文提出的自适应调整公式如下:
Pc=k1ek2!
Pm=k3ek4!
(1)
其中,k1,k2,k3,k4由Pc,Pm,
!的取值范围决定。2.5扩大交叉规模的自适应遗传算法操作步骤
步骤1均匀化生成初始群体pop,种群大小为Size,设定第一代交叉、变异概率,Pc=0.8,Pm=0.01;
步骤2计算pop中个体的适应度值,同时保留最优个体(保留比例取1% ̄20%);
步骤3对pop进行联赛选择操作,选择操作后的群体为TempE;
步骤4以交叉概率Pc从TempE中选出一部分个体组建
交叉库,交叉库规模为popsize,对交叉库中的每两个个体均进
行一次交叉,并将交叉产生的新个体存入临时种群中,此时临时种群规模为popsize*(popsize-1);
步骤5对临时种群中的个体按适应度值进行排序,并按从大到小的顺序依次取前popsize个去代替原先组建交叉库的那部分父个体;
步骤6对TempE进行变异操作,变异概率Pm;
步骤7将步骤2中保留的最优个体与TempE中的个体按适应度值择优选取Size个赋给pop,作为新的下一代群体;
步骤8计算pop的群体相似度,并按照自适应调整公式(1)计算出下一代的交叉变异概率;
步骤9判断是否满足算法终止条件,即判断是否已达到最大进化代数,是则输出最终结果;否则转入步骤2。
3仿真实验
为验证该文提出的扩大交叉规模自适应遗传算法(A-GACSE)
的有效性,选取文献[4]中的4个典型测试函数,并将实验结果与基本遗传算法(SGA)及基于父个体相似度的自适应遗传算法(AdaptiveGeneticAlgorithmBasedonParentsSim-
ilarity,AGABPS)
[4]
进行对比。3.1SGA与AGABPS的基本思想
SGA中,选择方法采用联赛选择与最优保留相结合的策
略,交叉、变异概率固定不变。
AGABPS中,
选择操作同样采用联赛选择与最优保留相结合的策略,选择结束后,计算每一对个体之间的相似度,对个体相似度小于相似度阈值S(S取0.7~0.9)的个体执行交叉操作;对相似度大于等于S的个体执行变异操作。
3.2测试函数的选择[4]
算例1(Shaffer函数):f1(x1,
x2)=0.5+sin2x12
+x2
2#-0.5
[1.0+0.001(x12
+x2
2)]
2
,-100≤xi≤100i=1,2
该函数的理论最小值为0,收敛值为0.0097。算例2(椭球函数):f2(x1,
x2,x3)=3
i=1!ix2
i,-1≤xi≤1i=1,2,3
该函数的理论最小值为0,收敛值为1.3039e-008。算例3:
f3(x1,x2)=3
(1-x1)2e-x12-(x2+1)
2
-10(x
110
-x13-x25)e-x1
2-x2
2-13
e-(x1
+1)2
-x2
2
,-3≤xi≤3i=1,2该函数的理论最大值比8略大,收敛值为8.103194。算例4:
f4(x1,x2)=(x12+x2
2)1
4
[sin2(50(x12+x2
2)110
)+1.0],-100≤xi≤100i=1,2该函数的理论最小值为0,收敛值为0.027052。
3.3参数设置
(1)算法AGACSE采用的遗传操作参数使用二进制位串编码,测试函数f1、f2、f3、f4的每一个决策变量编码码长分别20位、15位、16位、20位;交叉、变异概率根据公式(1)自适应调整,取0.5≤Pc≤0.8,0.01≤Pm≤0.05,0.5≤
74
2008,44(9)算法SGAAGABPSAGACSE
收敛次数202225
平均收敛代数
20408
平均收敛值0.00820.00570.0054
最小收敛值1.8208e-0081.8208e-0081.8208e-008
表1
算例1优化结果比较
算法SGAAGABPSAGACSE
收敛次数202425
平均收敛代数18255
平均收敛值
7.0784e-0095.8987e-0095.5883e-009最小收敛值
5.5883e-0095.5883e-0095.5883e-009
表2
算例2优化结果比较
算法
SGAAGABPSAGACSE
收敛次数162525
平均收敛代数23189
平均收敛值8.1053838.1053838.105544
最大收敛值8.1056568.1056568.105656
表3
算例3优化结果比较
算法SGAAGABPSAGACSE
收敛次数161925
平均收敛代数405520
平均收敛值0.0200590.0199600.019960
最小收敛值0.0199600.0199600.019960
表4
算例4优化结果比较
说明:表1 ̄表4中数据均为算法运行25次后得到的结果。
0
20
4060
801000.50.40.30.20.1进化代数
平均目标函数值020
406080100
0.40.30.20.1
进化代数
最小目标函数值SGAAGABPSAGACSE
SGAAGABPSAGACSE
(a)算例1
0
20
4060
80
100
0.80.60.40.2进化代数
平均目标函数值SGAAGABPSAGACSE
SGAAGABPSAGACSE
0
20
406080
100
0.08
0.060.040.02
进化代数
最小目标函数值
(b)算例2
SGAAGABPSAGACSE0
20
4060
80
100
8642进化代数
平均目标函数值
0
20
406080
100
8.58.07.57.06.56.05.5进化代数
最小目标函数值
SGAAGABPSAGACSE(c)算例3
020
4060
80100
15105
进化代数
平均目标函数值
0
20
406080
100
54321进化代数
最小目标函数值
SGAAGABPSAGACSE
SGAAGABPSAGACSE
(d)算例4
图2
4种测试函数在SGA、AGABPS、AGACSE下各代平均目标函数值与最优目标函数值
!≤1,
得到k1=1.28,k2=-0.94,k3=0.002,k4=3.2189;联赛规模为2;
最优个体保留比例取2%;种群大小为100,进化代数为100。(2)算法SGA与AGABPS采用的遗传操作参数使用二进制位串编码,测试函数f1、f2、f3、f4的每一个决策变量编码码长分别20位、15位、16位、20位;采用二进制单点交叉,交叉概率Pc=0.8;使用位单点翻转变异(变异概率Pm=1/染色体长度);联赛规模为2;最优个体保留比例取2%;种群大小为100,进化代数为100。文献[4]中相似度阈值取0.9。
3.4结果与分析
由图2可知,该文提出的AGACSE平均目标函数值曲线波动较小,且拥有比SGA、AGABPS更接近最优目标函数值的平均目标函数值,表明AGACSE的种群比SGA、AGABPS的种群拥有更多的优良解,反映了AGACSE较好的动态性能。此外,AGACSE最优目标函数值曲线与SGA、AGABPS相比,
收敛速度较快,收敛代数较小,反映了AGACSE较强的收敛性能。结合表1至4的实验数据可见,该文提出的AGACSE在4
个测试函数分别运行25次中,收敛总次数最多,平均收敛代数最小,平均收敛值最好。其中前3个算例的平均收敛代数均在10代之内,平均收敛值也好于SGA、AGABPS。算例4中,A-GACSE的平均收敛值与AGABPS相当,但平均收敛代数远小于AGABPS。
4结论
该文提出的扩大交叉规模的自适应遗传算法,主要思想是将种群初始化方法和交叉操作加以改进,同时引入根据种群相似度自适应调整交叉、变异概率的策略,通过一系列的改进措施,使遗传算法的收敛速度加快,寻优能力大大提高,通用性增强,且不易于陷入局部最优,克服了早熟收敛的缺点,提高了计算精度。
参考文献:
[1]冯冬青,
马书磊,费敏锐,等.一类非线性大滞后系统的智能前馈控制策略与算法[J].信息与控制,2004,33(1):9-12.
[2]董玲娇,
冯冬青.基于改进遗传算法的模糊RBF神经网络控制器设计[J].计算技术与自动化,2005,24(4):13-15.
[3]潘立登,
黄晓峰.基于相似度的可变编码长度遗传算法[J].北京化工大学学报,1997,24(3):55-59.
[4]田小梅,
郑金华,李合军.基于父个体相似度的自适应遗传算法[J].计算机工程与应用,2005,41(18):61-63.
[5]周明,
孙树栋.遗传算法原理及应用[M].北京:国防工业出版社,1999.
冯冬青,王非,马雁:一种扩大交叉规模的自适应遗传算法75
自适应遗传算法
自适应遗传算法 一.主要流程: 1. 参数的初始化。设定遗传种群规模N ,阵元数M ,信源数P 等。 2. 编码。采用十进制编码方法。 3. 初始种群的产生。随机数生成。 4. 适应度函数的评价。选取 ()() R P ΘA )tr f = (1) 其中, H 1H )(A A A A P A -= (2) P A 是A 的投影矩阵,A 是阵列流型。 ∑==L i L 1 H 1XX R ) (3) R )是数据协方差矩阵的最大似然估计。 5. 选择。比例选择方法与精英选择方法结合使用,在当代种群中选择优良个体遗传到下一代。既保证了种群的多样性,也使最优个体得以保留。 1)比例选择方法(赌轮盘法):每个个体被选中的概率与它的适应度函数值大小成正比,即适应度函数越高的个体被选中的概率也就越高。 2)精英选择方法:让种群中适应度函数值最高的个体不进行配对交叉,直接复制到下一代中。但是容易陷入局部最优解,全局搜索能力差。 6. 交叉。按照概率P c 对种群中个体两两配对,进行交叉操作。本文中选取算数交叉的方式。 算数交叉:是由两个个体的线性组合来产生新的个体,假设第t 代的两个个体为A (t)、B (t),则算数交叉后产生的新个体是
()()()()t t t A B A αα-+=+11 (4) ()()()()t t t B A B αα-+=+11 (5) 其中,α选取(0,1)之间的随机数。 交叉概率:使交叉概率随着遗传代数的增长,逐渐减小,目的是进化前期注重交叉运算,全局搜索能力强。 2.02cos *4.0+?? ? ??*=πK T P c (6) 其中,T 是进化代数,K 是总进化次数。 7. 变异。按照概率P m 对种群个体进行变异。本文中选取均匀变异的方式。 均匀变异:如某基因座上的基因值为X k ,其取值范围为[Umin,Umax],对其进行变异后的值为 )U -r(U +U =X min max min k (7) 其中,r 选取[0,1]之间的随机数。 变异概率:使变异概率随着遗传代数的增长,逐渐增加,目的是进化后期注重变异运算,局部搜索能力强。 005.02sin *045.0+?? ? ??*=πK T P m (8) 其中,T 是进化代数,K 是总进化次数。 8. 终止条件判断。若已达到设定的最大遗传代数,则迭代终止,输出最优解;若不满足终止条件,则返回第4步,进行迭代寻优过程。
第!"卷第#期 纺织高校基础科学学报$%&’!"()%’##**+年,月-./01/102312/45673.859:2;:082630<27/0:0= =============================================================2/ >?@’(#**+文章编号A !**,B C D +!E #**+F *#B *!,"B *+ 基于自适应交叉G 变异遗传算法的H I J 整定 王莉 E 中国矿业大学信电学院(江苏徐州##!**C F 摘要A 提出了一种带有自适应交叉G 变异算子的遗传算法(并把它应用到H I J 参数的整定当中’仿真结果表明(该方法提高了参数的优化性能(对控制系统具有良好的控制精度G 动态性能和鲁棒性’ 关键词A 自适应遗传算法LH I J L 参数优化 中图分类号A M H#"D 文献标识码A N *前言 H I J 控制算法以其原理简单G 鲁棒性好G 可靠性高等特点(在生产过程自动控制的发展历程中(成为历史悠久G 生命力最强的控制方式’虽然随着科学技术的发展涌现出许多新的控制方法(但是直到现在(H I J 控制由仍然广泛地应用于各类控制系统中’ 常用的H I J 参数整定方法主要由传统整定方法G 最优整定方法和智能整定方法’传统的整定方法包括稳定边界法E 临界比例度法F G 衰减曲线法G 动态特性法和O P Q R &Q S )P T U %&V 经验公式E O )公式法F 等’ 图!H I J 控制图 典型的H I J 控制图如图!所示’ 随着计算机技术和最优控制理论的 发展(出现了基于计算机的H I J 参数最 优整定方法’最优控制理论的应用(加上 计算机的高速运算能力(赋予了H I J 参 数优化等多变量最优化问题以新的生命 力(该方法是针对特定的系统建立数学 模型(运用各种数值解法按照一定的性能指标进行优化’近年来(随着智能控制理论的发展(专家系统G 模糊控制以及神经网络日益受到控制界的重视(出现了一些智能优化手段(主要由专家智能型H I J 参数自整定技术G 基于模糊推理的H I J 自寻优技术G 以及基于先进优化方法的其他智能整定技术W !(#X 等’本文中提出的基于改进遗传算法的H I J 参数整定( 利用遗传算法对优化问题本身没有什么特殊要求(既不要连续也不要求可微的优点(实现了H I J 参数的在线寻优’ K 收稿日期A #**+B *#B #* 作者简介A 王莉E !Y "Z B F (女(安徽省人(中国矿业大学信电学院(硕士研究生(主要从事控制理论与控制工程方面的研究’万方数据
基于遗传算法的OFDM自适应资源分配算法MATLAB源码 OFDM自适应资源分配问题(载波、功率等),是一个既含有离散决策变量,又含有连续决策变量的非线性优化模型,且含有较为复杂的非线性约束,因此适合采用智能优化算法进行求解。 function [BESTX1,BESTX2,BESTY,ALLX1,ALLX2,ALL Y]=GA2(K,N,Pm,H,BBB,P,N0) %% 本源码实现遗传算法,用于RA准则下的多用户OFDM自适应资源分配 %% 输入参数列表 % K 迭代次数 % N 种群规模,要求是偶数 % Pm 变异概率 % H 信道增益矩阵,K*N的矩阵,表示用户k在子信道n上的信道增益,无单位,取值范围0~1 % BBB 总带宽(Hz) % P 总功率(W) % N0 加性高斯白噪声功率谱密度(W/Hz) %% 输出参数列表 % BESTX1 K×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体的第一分量 % BESTX2 K×1细胞结构,每一个元素是M×1向量,记录每一代的最优个体的第二分量 % BESTY K×1矩阵,记录每一代的最优个体的评价函数值 % ALLX1 K×1细胞结构,每一个元素是M×N矩阵,记录全部个体的第一分量 % ALLX2 K×1细胞结构,每一个元素是M×N矩阵,记录全部个体的第二分量 % ALL Y K×N矩阵,记录全部个体的评价函数值 %% 第一步 [KK,NN]=size(H); M=NN;%决策变量个数,子载波个数 farm1=zeros(M,N);%每一列是一个样本 for i=1:N farm1(:,i)=unidrnd(KK,M,1); end farm2=zeros(M,N);%每一列是一个样本 for i=1:N farm2(:,i)=RandSeq(M); end %输出变量初始化 ALLX1=cell(K,1); ALLX2=cell(K,1); ALL Y=zeros(K,N); BESTX1=cell(K,1);
自适应Simpson积分算法(MATLAB及C++实现代码) (计算数学课用) 在CSDN论坛中找到了却要金币,无奈之下自己写了一份。 对于类似问题,改一下积分函数和区间即可。 针对问题:数学上已经证明了 ∫ 4 1+x2 dx=π 1 成立,所以可以通过数值积分来求π的近似值。 试利用自适应Simpson算法计算积分近似值。 C++版:(直接复制粘贴在VC++6.0即可运行) /*用自适应Simpson积分方法计算积分值*/ #include function [xv,fv]=AdapGA(fitness,a,b,NP,NG,Pc1,Pc2,Pm1,Pm2,eps) %×?êêó|ò?′???·¨ L = ceil(log2((b-a)/eps+1)); x = zeros(NP,L); for i=1:NP x(i,:) = Initial(L); fx(i) = fitness(Dec(a,b,x(i,:),L)); end for k=1:NG sumfx = sum(fx); Px = fx/sumfx; PPx = 0; PPx(1) = Px(1); for i=2:NP PPx(i) = PPx(i-1) + Px(i); end for i=1:NP sita = rand(); for n=1:NP if sita <= PPx(n) SelFather = n; break; end end Selmother = round(rand()*(NP-1))+1; posCut = round(rand()*(L-2)) + 1; favg = sumfx/NP; fmax = max(fx); Fitness_f = fx(SelFather); Fitness_m = fx(Selmother); Fm = max(Fitness_f,Fitness_m); if Fm>=favg Pc = Pc1*(fmax - Fm)/(fmax - favg); else Pc = Pc2; end r1 = rand(); if r1<=Pc nx(i,1:posCut) = x(SelFather,1:posCut); nx(i,(posCut+1):L) = x(Selmother,(posCut+1):L); fmu = fitness(Dec(a,b,nx(i,:),L)); if fmu>=favg Pm = Pm1*(fmax - fmu)/(fmax - favg); else Pm = Pm2; matlab遗传算法工具箱函数及实例讲解(转引) 核心函数:? (1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始种群的生成函数?【输出参数】? ?pop--生成的初始种群?【输入参数】? ?num--种群中的个体数目? ?bounds--代表变量的上下界的矩阵? ?eevalFN--适应度函数? ?eevalOps--传递给适应度函数的参数? ?options--选择编码形式(浮点编码或是二进制编码)[precision F_or_B],如? precision--变量进行二进制编码时指定的精度? F_or_B--为1时选择浮点编码,否则为二进制编码,由precision指定精度)? (2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts.? ?termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs ,mutOps)--遗传算法函数?【输出参数】? x--求得的最优解? endPop--最终得到的种群? bPop--最优种群的一个搜索轨迹?【输入参数】? bounds--代表变量上下界的矩阵? evalFN--适应度函数? evalOps--传递给适应度函数的参数? startPop-初始种群? opts[epsilon prob_ops display]--opts(1:2)等同于initializega 的options参数,第三个参数控制是否输出,一般为0。如[1e-6 termFN--终止函数的名称,如['maxGenTerm']? termOps--传递个终止函数的参数,如[100]? selectFN--选择函数的名称,如['normGeomSelect']? selectOps--传递个选择函数的参数,如[0.08]? xOverFNs--交叉函数名称表,以空格分开,如['arithXover heuristicXover simpleXover']? xOverOps--传递给交叉函数的参数表,如[2 0;2 3;2 0]? mutFNs--变异函数表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']? mutOps--传递给交叉函数的参数表,如[4 0 0;6 100 3;4 100 3;4 0 0]?注意】matlab工具箱函数必须放在工作目录下?【问题】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0=x=9?【分析】选择二进制编码,种群中的个体数目为10,二进制编码长度为20,交叉概率为0.95,变异概率为0.08?【程序清单】? 变异概率自适应调整的遗传算法算例 一:优化函数:()()*sin 10*2,[1,2] f x x x x =+∈-+ A.变异概率自适应调整公式: B.遗传算法参数 (1)种群规模设为80,遗传算子分别为轮盘法选择,多点点交叉和多点自适应变异; (2)交叉概率0.7,变异概率0.01; (3)最大进化代数为100代,保优操作。 C.程序框图 图 1 程序流程框图 ()()12max 1max 1 ,,m m m avg avg m m avg P P f f P f f f f P P f f --?-≥?-=?? 开始 确定实际问题参数对参数集进行编码 初始化群体P(t) 群体P(t+1)(更新) 位串解码得参数 计算目标函数值 函数值向适应值映射 适应值调整 选择、交叉、自适应变异 群体评价 遗传操作 满足停止准则 结束 二:程序及运行结果 (1)%变异概率自适应调整的GA程序 %优化函数为f=x*sin(10*x)+2,其中,-1= 自适应小生境遗传算法的性能分析1 李明林 (福州大学机械工程及自动化学院 福建福州 350002) E-mail:lml_006@https://www.wendangku.net/doc/316817560.html, 摘 要:本文提出一种改进的维持物种多样性的小生境实现技术——自适应小生境遗传算法。该算法以Mahfoud提出的确定性排挤策略为基础,采用数值编码,并结合算术交叉、非均匀变异和高斯变异、自适应变异概率。经过实验分析,验证了该算法能有效地、自适应地形成小生境进化环境,并具备相当的收敛速度和相当的求解精度。 关键词:小生境,自适应,遗传算法,多态优化,排挤 1 引言 作为一种模拟生物在自然环境中遗传和进化过程的自适应全局优化搜索算法,遗传算法以其明显优于传统优化算法的鲁棒性、自适应性、全局优化性和隐含并行性广泛地用于求解各种工程优化问题。近年来,人们特别关注发展用于多目标优化、多峰值函数优化与组合优化问题的小生境遗传算法[1]。 观察各种小生境的实现方法,可看出其共同点都是为了有效地维持群体的多样性。而其差别可归纳为两种基本类型:一种是将连续的、无限的搜索空间划分为离散的、有限的小生境区域;另一种则是对种群的适应度作适当的修整以抑制超级个体的复制概率来维持进化过程中的群体多样性。前一种类型以De Jong 提出的基于排挤机制(Crowding)的小生境实现方法为代表(1975),后一种类型以Goldberg等提出的基于共享机制(Sharing)的小生境技术为代表(1987)。在此基础上,各种各样的小生境技术不断出现。我们项目的研究主要是对一些有代表性的技术进行性能分析,为小生境遗传算法的实际工程应用提供有用的设计依据。 本文首先在深入理解Mahfoud提出的基于确定性排挤机制(Deterministic Crowding)的小生境思想的基础上,以实验的手段论证其思想的有效性和正确性。在实验过程中,不断修改程序的各个组成部分,并用于函数优化测试。最后发现一种程序组合具有较明显的特点。它可维持种群的多样性,而且可自适应形成大小、形状各异的小生境。因此将它称为自适应小生境遗传算法(简称SNGA)。 本文首先介绍确定性排挤机制的基本思想和算法结构,结合文献[2]的遗传算子编写了SNGA类库函数。其次结合三种较为典型的数值优化测试函数,对SNGA进行实验分析。最后对SNGA进行总结讨论。 2 确定性排挤机制和SNGA 1970年,Cavicchio提出了基于预选择机制(Preselection)的小生境技术,其基本思想是父代个体经过遗传操作后生成子代个体,父子个体相互竞争,适应度高的进入下一代群体中。DeJong于1975年一般化了Cavicchio的预选择机,在其博士论文提出了基于排挤机制(Crowding)的小生境技术。即:在父代群体中选取部分个体作为小生境主体,在新生子代群体中与小生境主体相似的个体不得进入下一代群体。他们声称这两种方法都可在群体中形成小生境的进化环境,并维持了群体的多样性。 1本课题得到福建省教育厅(JB04025)项目资助。 多方式进化遗传算法Matlab源代码 对于单种群进化,多方式进化是提高全局搜索能力和收敛速度的一种有效策略 该程序采用: 编码:二进制编码、实数编码(默认) 选择:非线性排名选择(主要表现在前期),锦标赛选择(主要表现在后期,含精英保留),由于单纯的转轮盘选择存在诸多弊端,这里没有采用 交叉:二进制编码采用多点交叉和均匀交叉,并逐步增大均匀交叉概率 实数编码采用离散交叉(前期)、算术交叉(中期)、AEA重组(后期) 变异:二进制编码采用随机变异 实数编码采用两种自适应变异和两种随机变异,且尽量采用前者 到位:适当的到位可以提高种群的多样性 function [X,MaxFval,BestPop,Trace]=fga(FUN,bounds,MaxEranum,PopSize,options,pCross,pMutation,pInversion) % [X,MaxFval,BestPop,Trace]=fga(FUN,bounds,MaxEranum,PopSize,options,pCross,pMutation,pInversion) % Finds a maximum of a function of several variables. % fga solves problem s of the form: % max F(X) subject to: LB <= X <= UB % BestPop - 最优的群体即为最优的染色体群 % Trace - 每代最佳个体所对应的目标函数值 % FUN - 目标函数 % LB - 自变量下限 % UB - 自变量上限 % eranum - 种群的代数,取50--500(默认200) % popsize - 每一代种群的规模;此可取50--200(默认100) % pcross - 交叉概率,一般取0.5--0.85之间较好(默认0.8) % pmutation - 初始变异概率,一般取0.05-0.2之间较好(默认0.1) % pInversion - 倒位概率,一般取0.05-0.3之间较好(默认0.2) % options - 1*2矩阵,options(1)=0二进制编码(默认0),option(1)~=0十进制编码,option(2)设定求解精度(默认1e-4) T1=clock; %检验初始参数 if nargin<2, error('FMAXGA requires at least three input arguments'); end if nargin==2, MaxEranum=100;PopSize=100;options=[1 1e-4];pCross=0.85;pMutation=0.1;pInversion=0.25;end if nargin==3, PopSize=100;options=[1 1e-4];pCross=0.85;pMutation=0.1;pInversion=0.25;end if nargin==4, options=[1 1e-4];pCross=0.85;pMutation=0.1;pInversion=0.25;end if nargin==5, pCross=0.85;pMutation=0.1;pInversion=0.25;end if nargin==6, pMutation=0.1;pInversion=0.25;end if nargin==7, pInversion=0.25;end if (options(1)==0|options(1)==1)&find((bounds(:,1)-bounds(:,2))>0) error('数据输入错误,请重新输入:'); end %s=sprintf('程序运行需要约%.4f 秒钟时间,请稍等......',(eranum*popsize/1000)); %disp(s); % 定义全局变量 global m n NewPop children1 children2 VarNum % 初始化种群和变量 遗传算法总结 遗传算法是借鉴生物的自然选择和遗传进化机制而开发出的一种全局自适应概率搜索算法。 一、遗传算法流程图 算法开始 原问题参数集 染色体编码,产生初始种群 计算种群中个体的适应值 终止条件判断 N 选择 交叉 Y 变异 新种群 输出结果 算法结束 图1 遗传算法流程图 二、遗传算法的原理和方法 1)染色体编码 把一个问题的可行解从其解空间转换到遗传算法所能处理的搜索空间的转换方法就称为编码。 De Jong 曾提出了两条操作性较强的实用编码原则:编码原则一:应使用能易于产生与所求问题相关的且具有低阶、短定义长度模式的编码方案;编码原则二:应使用能使问题得到自然表示或描述的具有最小编码字符集的编码方案。 编码方法主要有以下几种:二进制编码方法、格雷码编码方法、浮点数编码方法、符号编码方法、参数级联编码方法、多参数交叉编码方法。 2) 适应值计算 由解空间中某一点的目标函数值()f x 到搜索空间中对应个体的适应度函数值 (())Fit f x 的转换方法基本上有一下三种: a . 直接以待解的目标函数值()f x 转化为适应度函数值(())Fit f x ,令 () (())=() f x Fit f x f x ?? -?目标函数为最大化函数 目标函数为最小化函数 b . 对于最小值的问题,做下列转化max max () () (())0 C f x f x C Fit f x -=?? 其他,其中max C 是 ()f x 的最大输入值。 c . 若目标函数为最小值问题,1 (()), 0, ()01() Fit f x c c f x c f x = ≥+≥++ 若目标函数为最大值问题,1 (()), 0, ()01() Fit f x c c f x c f x =≥-≥+- 3) 选择、交叉、变异 遗传算法使用选择算子来对群体中的个体进行优胜劣汰操作:根据每个个体的适应度值大小选择。适应度较高的个体被遗传到下一代群体中的概率较大;适应度较低的个体的被遗传到下一代群体中的概率较小。其中选择的方法有:轮盘赌选择、随机竞争选择、最佳保留选择、无回放随机选择、确定式选择等。 遗传算法中的所谓交叉运算,是指对两个相互配对的染色体按某种方式相互交换其部分基因,从而形成两个新的个体。交叉操作主要有单点交叉、两点交叉与多点交叉、均匀交叉和算数交叉四种。 自适应遗传算法 一.主要流程: 1. 参数的初始化。设定遗传种群规模N ,阵元数M ,信源数P 等。 2. 编码。采用十进制编码方法。 3. 初始种群的产生。随机数生成。 4. 适应度函数的评价。选取 ()() R P ΘA tr f = (1) 其中, H 1H )(A A A A P A -= (2) P A 是A 的投影矩阵,A 是阵列流型。 ∑==L i L 1 H 1XX R (3) R 是数据协方差矩阵的最大似然估计。 5. 选择。比例选择方法与精英选择方法结合使用,在当代种群中选择优良个体遗传到下一代。既保证了种群的多样性,也使最优个体得以保留。 1)比例选择方法(赌轮盘法):每个个体被选中的概率与它的适应度函数值大小成正比,即适应度函数越高的个体被选中的概率也就越高。 2)精英选择方法:让种群中适应度函数值最高的个体不进行配对交叉,直接复制到下一代中。但是容易陷入局部最优解,全局搜索能力差。 6. 交叉。按照概率P c 对种群中个体两两配对,进行交叉操作。本文中选取算数交叉的方式。 算数交叉:是由两个个体的线性组合来产生新的个体,假设第t 代的两个个体为A (t)、B (t),则算数交叉后产生的新个体是 ()()()()t t t A B A αα-+=+11 (4) ()()()()t t t B A B αα-+=+11 (5) 其中,α选取(0,1)之间的随机数。 交叉概率:使交叉概率随着遗传代数的增长,逐渐减小,目的是进化前期注重交叉运算,全局搜索能力强。 2.02cos *4.0+?? ? ??*=πK T P c (6) 其中,T 是进化代数,K 是总进化次数。 7. 变异。按照概率P m 对种群个体进行变异。本文中选取均匀变异的方式。 均匀变异:如某基因座上的基因值为X k ,其取值范围为[Umin,Umax],对其进行变异后的值为 )U -r(U +U =X min max min k (7) 遗传算法入门(上)代码中的进化学说与遗传学说 写在之前 算法所属领域 遗传算法的思想解析 为什么要用遗传算法? 科研现状 应用现状 遗传算法入门系列文章: (中篇)遗传算法入门(中)实例,求解一元函数最值(MATLAB版)(下篇)遗传算法入门(下)实例,求解TSP问题(C++版) 写在之前 说明:本想着用大量篇幅写一篇“关于遗传算法的基本原理”作为本系列入门的第一篇,但是在找寻资料的过程中,看到网络上有大量的关于遗传算法的介绍,觉得写的都挺好,所以本文我就简单写点自己的理解。 推荐几篇关于遗传算法的介绍性文章: 遗传算法详解(GA)(个人觉得很形象,很适合初学者) 算法所属领域 ? 相信每个人学习一门知识之前,都会想知道这门知识属于哪一门学科范畴,属于哪一类技术领域? ? 首先对于这种问题,GA是没有绝对的归属的。算法的定义是解决问题的一种思想和指导理论。而遗传算法也是解决某一问题的一种思想,用 某一编程语言实现这种思想的程序具有很多特点,其中一个便是智能性和进化性,即,不需要大量的人为干涉,程序本身能够根据一定的条件自我筛选,最终得出令人满意的结果。所以按照这种特性,把它列为人工智能领域下的学习门类毫无疑问是可以的。遗传算法的思想是借鉴了达尔文的进化学说和孟德尔的遗传学说,把遗传算法说成是一门十足的仿生学一点都不过分。然而从应用的角度出发,遗传算法是求最优解问题的好方法,如信号处理中的优化、数学求解问题、工业控制参数最优解、神经网络中的激活函数、图像处理等等,所以把遗传算法说成优化范畴貌似也说的过去。为了方便理解,我们可以暂时将其定位为人工智能–智能优化,这也是很多书中描述遗传算法的惯用词汇。 遗传算法的思想解析 遗传算法(gentic algorithms简称GA)是模拟生物遗传和进化的全局优化搜索算法 ? 我们知道,在人类的演化中,达尔文的进化学说与孟德尔的遗传学说起着至关重要的理论指导。每个人作为一个个体组成一个人类种群,正是经历着物竞天择,才会让整个群体慢慢变的更好,即更加适应周围的环境。而每一代正是靠着基因交叉与变异才能繁衍出更加适应大自然规律的下一代个体。总之,在漫长的迭代进化中,一个不适应环境的群体,在物竞天择和交叉变异中慢慢变的适应了环境。 ? GA的思想完全模拟了生物的进化和遗传方式。我们在求解一个问题的最优解时,先人为的产生很多任意的解,组成一个解集(一个解是一个个体,一个解集是一个种群),这些解有好有坏。我们的最终目的是让这 30维线性方程求解 摘要:非线性方程组的求解是数值计算领域中最困难的问题,大多数的数值求解算法例如牛顿法的收敛性和性能特征在很大程度上依赖于初始点。但是对于很多高维的非线性方程组,选择好的初始点是一件非常困难的事情。本文采用了遗传算法的思想,提出了一种用于求解非线性方程组的混合遗传算法。该混合算法充分发挥了遗传算法的群体搜索和全局收敛性。选择了几个典型非线性方程组,考察它们的最适宜解。 关键词:非线性方程组;混合遗传算法;优化 1. 引言遗传算法是一种通用搜索算法,它基于自然选择机制和自然遗传规律来模拟自然界的进化过程,从而演化出解决问题的最优方法。它将适者生存、结构化但同时又是 随机的信息交换以及算法设计人的创造才能结合起来,形成一种独特的搜索算法,把一些解决方案用一定的方式来表示,放在一起成为群体。每一个方案的优劣程度即为适应性,根据自然界进化“优胜劣汰”的原则,逐步产生它们的后代,使后代具有更强的适应性,这样不断演化下去,就能得到更优解决方案。 随着现代自然科学和技术的发展,以及新学科、新领域的出现,非线性科学在工农业、经济政治、科学研究方面逐渐占有极其重要的位置。在理论研究和应用实践中,几乎绝大多数的问题都最终能化为方程或方程组,或者说,都离不开方程和方程组的求解。因此,在非线性问题中尤以非线性方程和非线性方程组的求解最为基本和重要。传统的解决方法,如简单迭代法、牛顿法、割线法、延拓法、搜索法、梯度法、共轭方向法、变尺度法,无论从算法的选择还是算法本身的构造都与所要解决的问题的特性有很大的关系。很多情况下,算法中算子的构造及其有效性成为我们解决问题的巨大障碍。而遗传算法无需过多地考虑问题的具体形式,因为它是一种灵活的自适应算法,尤其在一些非线性方程组没有精确解的时候,遗传算法显得更为有效。而且,遗传算法是一种高度并行的算法,且算法结构简单,非常便于在计算机上实现。本文所研究的正是将遗传算法应用于求解非线性方程组的问题。 2. 遗传算法解非线性方程组为了直观地观察用遗传算法求解非线性方程组的效果,我们这里用代数非线性方程组作为求解的对象问题描述:非线性方程组指的是有n 个变量(为了简化讨论,这里只讨论实变量方程组)的方程组 中含有非线性方程。其求解是指在其定义域内找出一组数能满足方程组中的每 个方程。这里,我们将方程组转化为一个函数则求解方程组就转化为求一组值使得成立。即求使函数取得最小值0 的一组数,于是方程组求解问题就转变为函数优化问题 3. 遗传算子 遗传算子设计包括交叉算子、变异算子和选择算子的设计。 一.问题描述: 在某一区域内有n 个客户,拟建一个物流中心,已知客户j 地址坐标为),(i i y x 。确定物流中心的地址坐标),(y x ,使得该物流中心到几个客户之间的距离最短。 假设:简单的用两点之间的距离代替运输距离。 目标函数: 22)()(min i i y Y x X z -+-= 约束条件: } 8,7,6,5,4,3,2,1,0{}8,7,6,5,4,3,2,1,0{X ∈∈Y 假设某一区域内有 5 个客户,其位置坐标如下表所示, 客户坐标及相关需求量 客户 X (km) Y(km) 1 1 5 2 2 8 3 5 1 4 7 6 5 8 3 (1)变量: C :是一个1*6数组,每个数组里面是一个6位二进制数,它是遗传算法中的染色体。 new_c:每一轮的新变量c 。 first_c:初始群体矩阵。 sur_value :个体适应值的概率值,为0-1之间的数,所有概率值和为1。 survived :经过选择运算后产生的个体基因型组合。 intersect_c :经过交叉运算后产生的个体基因型组合。 mutation_c :经过变异运算后产生的个体基因型组合。 f :最后计算得到的最大值 (2)程序里面的方程 function out = value_function( ci ):价值函数(自适应度函数)。 function [ sur_value ] = calc_value( c ):计算群体中每一个个体的适应度的值 function survived = surviver( sur_value ):利用概率选择函数 function [ intersect_c ] = intersect( new_c ):交叉运算 function [ mutation_c ,mutation_value] = mutation( intersect_c ):变异运算 (1)遗传算法主程序 %遗传算法的主程序 基于遗传优化算法对离散PID控制器参数的优化设计摘要 PID控制作为一种经典的控制方法,从诞生至今,历经数十年的发展和完善,因其优越的控制性能业已成为过程控制领域最为广泛的控制方法;PID控制器具有结构简单、适应性强、不依赖于被控对象的精确模型、鲁棒性较强等优点,其控制性能直接关系到生产过程的平稳高效运行,因此对PID控制器设计和参数整定问题的研究不但具有理论价值更具有很大的实践意义,遗传算法是一种借鉴生物界自然选择和自然遗传学机理上的迭代自适应概率性搜索算法。本论文主要应用遗传算法对PID调节器参数进行优化。 关键词:遗传优化算法PID控制器参数优化 1.前言 PID调节器是最早发展起来的控制策略之一,因为它所涉及的设计算法和控制结构都是简单的,并且十分适用于工程应用背景,此外PID控制方案并不要求精确的受控对象的数学模型,且采用PID控制的控制效果一般是比较令人满意的,所以在工业实际应用中,PID调节器是应用最为广泛的一种控制策略,也是历史最久、生命力最强的基本控制方式。调查结果表明: 在当今使用的控制方式中,PID型占84. 5% ,优化PID型占68%,现代控制型占有15%,手动控制型66%,人工智能(AI)型占0.6% 。如果把PID型和优化PID型二者加起来,则占90% 以上,这说明PID控制方式占绝大多数,如果把手动控制型再与上述两种加在一起,则占97.5% ,这说明古典控制占绝大多数。就连科学技术高度发达的日本,PID控制的使用率也高达84.5%。这是由于理论分析及实际运行经验已经证明了PID调节器对于相当多的工业过程能够起到较为满足的控制效果。它结构简单、适用面广、鲁棒性强、参数易于调整、在实际中容易被理解和实现、在长期应用中己积累了丰富的经验。特别在工业过程中,由于控制对象的精确数学模型难以建立,系统的参数又经常发生变化,运用现代控制理论分析综合要耗费很大的代价进行模型辨识,但往往不能达到预期的效果,所以不论常规调节仪表还是数 硕士生考查课程考试试卷 考试科目:MATLAB教程 考生姓名:张宜龙考生学号:2130120033 学院:管理学院专业:管理科学与工程考生成绩: 任课老师(签名) 考试日期:年月日午时至时 《MATLAB 教程》试题: A 、利用MATLA B 设计遗传算法程序,寻找下图11个端点的最短路径,其中没有连接的端点表示没有路径。要求设计遗传算法对该问题求解。 a e h k B 、设计遗传算法求解f (x)极小值,具体表达式如下: 3 21231(,,)5.12 5.12,1,2,3 i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 C 、利用MATLAB 编程实现:三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行,随从们密约,在河的任一岸,一旦随从的人数比商人多,就杀人越货,但是如何乘船渡河的大权掌握在商人手中,商人们怎样才能安全渡河? D 、结合自己的研究方向选择合适的问题,利用MATLAB 进行实验。 以上四题任选一题进行实验,并写出实验报告。 选择题目: B 、设计遗传算法求解f (x)极小值,具体表达式如下: 3 21231(,,)5.12 5.12,1,2,3 i i i f x x x x x i =?=???-≤≤=? ∑ 要求必须使用m 函数方式设计程序。 一、问题分析(10分) 这是一个简单的三元函数求最小值的函数优化问题,可以利用遗传算法来指导性搜索最小值。实验要求必须以matlab 为工具,利用遗传算法对问题进行求解。 在本实验中,要求我们用M 函数自行设计遗传算法,通过遗传算法基本原理,选择、交叉、变异等操作进行指导性邻域搜索,得到最优解。 二、实验原理与数学模型(20分) (1)试验原理: 用遗传算法求解函数优化问题,遗传算法是模拟生物在自然环境下的遗传和进化过程而形成的一种自适应全局优化概率搜索方法。其采纳了自然进化模型,从代表问题可能潜在解集的一个种群开始,种群由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体;初始种群产生后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的解:在每一代,概据问题域中个体的适应度大小挑选个体;并借助遗传算子进行组合交叉和主客观变异,产生出代表新的解集的种群。这一过程循环执行,直到满足优化准则为止。最后,末代个体经解码,生成近似最优解。基于种群进化机制的遗传算法如同自然界进化一样,后生代种群比前生代更加适应于环境,通过逐代进化,逼近最优解。 遗传算法是一种现代智能算法,实际上它的功能十分强大,能够用于求解一些难以用常规数学手段进行求解的问题,尤其适用于求解多目标、多约束,且目标函数形式非常复杂的优化问题。但是遗传算法也有一些缺点,最为关键的一点,即没有任何理论能够证明遗传算法一定能够找到最优解,算法主要是根据概率论的思想来寻找最优解。因此,遗传算法所得到的解只是一个近似解,而不一定是最优解。 (2)数学模型 对于求解该问题遗传算法的构造过程: (1)确定决策变量和约束条件; 计算智能作业三:遗传算法计算问题 1.问题描述: 求下述二元函数的最大值: 22 2121),(max x x x x f += S.t. }7,6,5,4,3,2,1{1∈x }7,6,5,4,3,2,1{2∈x 2.程序结构: (1)变量: C :是一个1*6数组,每个数组里面是一个6位二进制数,它是遗传算法中的染色体。 new_c:每一轮的新变量c 。 first_c:初始群体矩阵。 sur_value :个体适应值的概率值,为0-1之间的数,所有概率值和为1。 survived :经过选择运算后产生的个体基因型组合。 intersect_c :经过交叉运算后产生的个体基因型组合。 mutation_c :经过变异运算后产生的个体基因型组合。 f :最后计算得到的最大值 (2)程序里面的方程 function out = value_function( ci ):价值函数(自适应度函数),即2 22121),(x x x x f +=。 function [ sur_value ] = calc_value( c ):计算群体中每一个个体的适应度的值 function survived = surviver( sur_value ):利用概率选择函数 function [ intersect_c ] = intersect( new_c ):交叉运算 function [ mutation_c ,mutation_value] = mutation( intersect_c ):变异运算 3.源程序 (1)遗传算法的主程序 主程序包括初始群体产生,最终结果展示,即各函数之间的调用关系。 个体编码 遗传算法的运算对象是表示个体的符号串,所以必须把变量 x1, x2 编码为无符号二进制整数。这个二进制整数位个体的基因型。 因为x1, x2 为 0 ~ 7之间的整数,所以分别用3位无符号二进制整数来表示,将它们连接在一起所组成的6位无符号二进制数就形成了个体的基因型,表示一个可行解。 如一下表格表示基因型和表现型之间的对应关系: 个体 基因型 表现型 1 111001 (7,1) 2 100111 (4,7) 3 011011 (3,3) 4 101110 (5,6)matlab自适应遗传算法
遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )
变异概率自适应调整的遗传算法GA程序
自适应小生境遗传算法的性能分析
多方式进化遗传算法Matlab源代码
遗传算法总结【精品毕业设计】(完整版)
自适应遗传算法
遗 传 算 法 详 解 ( 含 M A T L A B 代 码 )
人工智能之遗传算法论文含源代码
遗传算法案例分析及源代码
基于遗传算法PID控制寻优实现(有代码超详细)
MATLAB课程遗传算法实验报告及源代码
遗传算法案例及源代码