实例介绍
本遗传算法由12个M文件组成,其中Genetic.m包含了主函数,其余文件均为包含子函数的文件,由主函数调用。下面对包含子函数的文件进行一一说明。 function Population = PopulationInitialize( MemberLength,MemberNumber ) 此函数返回一群二进制编码的初始染色体(MemberNumber* MemberLength的矩阵,不同的行代表不同的染色体),参数MemberNumber, MemberLength分别指定了染色体的数目和每个染色体的长度。 function PopulationFitness = Fitness( PopulationCode,FunctionFitness,MinX,MaxX,MemberLength ) 此函数返回每个染色体的适应值, 参数PopulationCode包含了染色体群体,参数FunctionFitness指定了计算适应度的函数(也即目标函数), 为一字符串,MinX,MaxX两个参数指定了自变量的区间,MemberLength依然是染色体长度。 function PopulationData = Translate( PopulationCode,MinX,MaxX,MemberLength ) 此函数是Fitness的子函数,用来计算二进制编码的染色体所对应的十进制数。 function PopulationFitness = Transfer( PopulationCode,,FunctionFitnessMinX,MaxX,MemberLength ) 此函数是Fitness的子函数,计算在自变量去某个值时的目标函数值。 function PopulationFitnessF = FitnessF( PopulationFitness,Fmin ) 此函数根据每个染色体的目标函数值,计算其适应值。 function PopulationProbability = Probability( PopulationFitness ) 此函数根据染色体的适应值,计算染色体的生存概率。 function [ NewPopulationIncludeMax,CurrentBest,EachGenMaxFitness ] = Elitist( Population,PopulationFitness,MemberLength ) 此函数根据“适者生存”的原则,淘汰不适者,然后更新染色体群。 function NewPopulation = Mutation( Population,MutationProbability ) 此函数根据变异概率,是染色体发生变异,把变异后的染色体群作为新的染色体群。 function NewPopulation = Select( Population,PopulationProbability,MemberNumber ) 此函数起着“择优保留”的作用。 function NewPopulation = Crossing( Population,FunctionFitness,MinX,MaxX,MemberLength ) 此函数完成染色体交叉互换的过程。 在CommandWindow中输入命令: >>[ Count,Result,BestMember ] = Genetic( 22,6,'sin(x)',-1,2,-2,0.01,50 ).参数含义如下: 染色体群体一共有6个,每个染色体长度为22,目标函数为sin(x),搜索区间为[-1,2],Fmin=-2,变异概率为0.01,遗传代数为40。 返回值含义如下: 遗传代数50代,在遗传到第50代时,自变量为1.5502,目标函数值为 0.9998.
【实例截图】
【核心代码】
4744302542925949029.rar
└── 遗传算法
├── Crossing.m
├── Elitist.m
├── FitnessF.m
├── Fitness.m
├── Genetic.m
├── Mutation.m
├── PopulationInitialize.m
├── Probability.m
├── Select.m
├── Transfer.m
├── Translate.m
└── 遗传算法使用说明.pdf
1 directory, 12 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论