文档介绍:该【遗传算法的Matlab实现讲解专家讲座 】是由【知识徜徉土豆】上传分享,文档一共【37】页,该文档可以免费在线阅读,需要了解更多关于【遗传算法的Matlab实现讲解专家讲座 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。数学建模专题之遗传算法MATLAB实现
遗传算法的Matlab实现讲解专家讲座
第1页
Contents I
Matlab编程实现GA
1
Matlab函数调用实现GA
2
Matlab工具箱实现GA
3
遗传算法的Matlab实现讲解专家讲座
第2页
Matlab编程实现GA
例1:计算目标函数值函数
遗传算法的Matlab实现讲解专家讲座
第3页
主程序
%遗传算法主程序
function My_GA
global Cmin;
Cmin=-10^6;
popsize=50; %群体大小
Gene=20;
chromlength=20; %字符串长度(个体长度)
pc=; %交叉概率
pm=; %变异概率
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
遗传算法的Matlab实现讲解专家讲座
第4页
初始化(编码)
% ,popsize表示群体大小,chromlength表示染色体长度(二值数长度),
% 长度大小取决于变量二进制编码长度(在本例中取20位)。
%Name:
function pop=initpop(popsize,chromlength)
pop=round(rand(popsize,chromlength)); % rand随机产生每个单元为 {0,1} 行数为popsize,列数为chromlength矩阵,
% round对矩阵每个单元进行取整。这么产生初始种群。
Matlab编程实现GA
遗传算法的Matlab实现讲解专家讲座
第5页
将二进制数转化为十进制数
将二进制数转化为十进制数
%产生 [2^n 2^(n-1) ... 1] 行向量,然后求和,将二进制转化为十进制
function pop2=decodebinary(pop)
[px,py]=size(pop); %求pop行和列数
for i=1:py
pop1(:,i)=2.^(py-i).*pop(:,i);
end
pop2=sum(pop1,2); %求pop1每行之和
function pop2=decodechrom(pop,spoint,length)
pop1=pop(:,spoint:spoint+length-1);
pop2=decodebinary(pop1);
Matlab编程实现GA
遗传算法的Matlab实现讲解专家讲座
第6页
计算目标函数值
计算目标函数值
% ,其公式采取本文示例仿真,可依据不一样优化问题给予修改。
%遗传算法子程序
%Name:
%实现目标函数计算
function [objvalue]=calobjvalue(pop,chromlength,Xmax,Xmin)
temp1=decodechrom(pop,1,chromlength); %将pop每行转化成十进制数
x=temp1*(Xmax-Xmin)/(2^chromlength-1); %将十进制域 中数转化为变量域 数
objvalue=2*x+10*sin(5*x)+7*cos(4*x); %计算目标函数值
Matlab编程实现GA
遗传算法的Matlab实现讲解专家讲座
第7页
计算个体适应值
function fitvalue=calfitvalue(objvalue)
global Cmin;
fitvalue=objvalue-Cmin;
Matlab编程实现GA
遗传算法的Matlab实现讲解专家讲座
第8页
选择复制
function [newpop]=selection(pop,fitvalue) %程序中采取赌轮盘选择法选择实现
totalfit=sum(fitvalue); %求适应值之和
fitvalue=fitvalue/totalfit; %单个个体被选择概率
fitvalue=cumsum(fitvalue); %如 fitvalue=[1 2 3 4],则 cumsum(fitvalue)=[1 3 6 10]
[px,py]=size(pop);
ms=sort(rand(px,1)); %从小到大排列
fitin=1; newin=1;
while newin<=px %蒙特卡洛方法抽样
if(ms(newin))<fitvalue(fitin)
newpop(newin,:)=pop(fitin,:);
newin=newin+1;
else
fitin=fitin+1;
end
end
Matlab编程实现GA
遗传算法的Matlab实现讲解专家讲座
第9页
交叉
function [newpop]=crossover(pop,pc)
[px,py]=size(pop);
newpop=ones(size(pop));
for i=1:2:px-1
if(rand<pc)
cpoint=round(rand*py);
newpop(i,:)=[pop(i,1:cpoint),pop(i+1,cpoint+1:py)];
newpop(i+1,:)=[pop(i+1,1:cpoint),pop(i,cpoint+1:py)];
else
newpop(i,:)=pop(i);
newpop(i+1,:)=pop(i+1);
end
end
Matlab编程实现GA
遗传算法的Matlab实现讲解专家讲座
第10页