主程序
% 遗传算法主程序
function My_GA
global Cmin;
Cmin=-10^6;
popsize=50; % 群体大小
Gene=20;
chromlength=20; % 字符串长
度(个体长度)
pc=0.8; % 交叉概率
pm=0.01; % 变异概率
Xmax=10;
Xmin=0;
Matlab 编程实现 GA
pop=initpop(popsize,chromlength); % 随机产生初始群体
for i=1:Gene %20 为迭代次数
[objvalue]=calobjvalue(pop,chromlength,Xmax,Xmin); % 计算目标函
数
fitvalue=calfitvalue(objvalue); % 计算群体中每个个体的适应度
[newpop]=selection(pop,fitvalue); % 复制
[newpop]=crossover(newpop,pc); % 交叉
[newpop]=mutation(newpop,pm); % 变异
[bestindividual,bestfit]=best(pop,fitvalue); % 求出群体中适应值最大的
个体及其适应值
x(i)=decodechrom(bestindividual,1,chromlength)*10/(2^chromlength-
1); % 最佳个体解码
y(i)=bestfit+Cmin; % 最佳个体适应度
y_mean(i)=mean(fitvalue+Cmin); % 第 i 代平均适应度
pop=newpop;
end
fplot('2*x+10*sin(5*x)+7*cos(4*x)',[0 10])
hold on
plot(x,y,'r*')
hold off
第 3 页 / 共 37 页