文档详情

数学实验七: 遗传算法 实验报告.doc

发布:2017-06-18约3.21千字共4页下载文档
文本预览下载声明
用Matlab编制另一个主程序Genetic2.m,求例1的在第二种终止条件下的最优解. 提示:一个可能的函数调用形式以及相应的结果为: [Count,Result,BestMember]=Genetic2(22,6,-x*x+2*x+0.5,-1,2,-2,0.01,0.00001) % 附录1 Genetic2.m function [Count,Result,BestMember]=Genetic2(MumberLength,MemberNumber,FunctionFitness,MinX,MaxX,Fmin,MutationProbability,Precision) Population=PopulationInitialize(MumberLength,MemberNumber); Error=Precision+1; global Count; global CurrentBest; Count=1; PopulationCode=Population; PopulationFitness=Fitness(PopulationCode,FunctionFitness,MinX,MaxX,MumberLength); %用于计算群体中每一个染色体的目标函数值 PopulationFitnessF=FitnessF(PopulationFitness,Fmin); %用于计算每个染色体的适应函数值 PopulationProbability=Probability(PopulationFitnessF); %用于计算群体中每个染色体的入选概率 [Population,CurrentBest,EachGenMaxFitness]=Elitist(PopulationCode,PopulationFitness,MumberLength); %用到最佳个体保存方法(“优胜劣汰”思想) EachMaxFitness(Count)=EachGenMaxFitness; MaxFitness(Count)=CurrentBest(length(CurrentBest)); while ErrorPrecision NewPopulation=Select(Population,PopulationProbability,MemberNumber); Population=NewPopulation; NewPopulation=Crossing(Population,FunctionFitness,MinX,MaxX,MumberLength); Population=NewPopulation; NewPopulation=Mutation(Population,MutationProbability); Population=NewPopulation; PopulationFitness=Fitness(Population,FunctionFitness,MinX,MaxX,MumberLength); PopulationFitnessF=FitnessF(PopulationFitness,Fmin); PopulationProbability=Probability(PopulationFitnessF); Count=Count+1; [NewPopulation,CurrentBest,EachGenMaxFitness]=Elitist(Population,PopulationFitness,MumberLength); EachMaxFitness(Count)=EachGenMaxFitness; MaxFitness(Count)=CurrentBest(length(CurrentBest)); Error=sum(abs(PopulationProbability-mean(PopulationProbability))); Population=NewPopulation; end Dim=size(Population); Result=ones(2,Dim(1)); for i=1:Dim(1) Result(1,i)=Translate(Population(i,:),MinX,MaxX,MumberLength); end Result(2,:)=PopulationFitness; BestMember(1,1)=Translate(CurrentBest(1:MumberLength)
显示全部
相似文档