gusucode.com > 遗传算法求解最优解最大值项matlab源码程序目 > genmain05.m

    %Name:刘昱显定制遗传算法交叉变异求最值.m
clear
clf
popsize=20;                                       %群体大小
chromlength=10;                                   %字符串长度(个体长度)
pc=0.6;                                           %交叉概率
pm=0.001;                                         %变异概率
pop=initpop(popsize,chromlength);                 %随机产生初始群体
for i=1:20                                        %20为迭代次数
[objvalue]=calobjvalue(pop);                      %计算目标函数
fitvalue=calfitvalue(objvalue);                   %计算群体中每个个体的适应度
[newpop]=selection(pop,fitvalue);                 %复制
[newpop]=crossover(pop,pc);                       %交叉
[newpop]=mutation(pop,pc);                        %变异            %%pc应为pm%%
[bestindividual,bestfit]=best(pop,fitvalue);      %求出群体中适应值最大的个体及其适应值
y(i)=max(bestfit);
n(i)=i;
pop5=bestindividual;
x(i)=decodechrom(pop5,1,chromlength)*10/1023;     %将二值域 中的数转化为变量域的数
pop=newpop;
end
fplot('10*sin(5*x)+7*cos(4*x)',[0 10])
hold on
plot(x,y,'r*')
hold off
[z index]=max(y);   %计算最大值及其位置
x5=x(index)         %计算最大值对应的x值
y=z