资源说明:本遗传算法由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.
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。
English
