数学实验七: 遗传算法 实验报告.doc
文本预览下载声明
用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)
显示全部