1 / 14
文档名称:

遗传算法经典MATLAB代码.docx

格式:docx   大小:19KB   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

遗传算法经典MATLAB代码.docx

上传人:bai1968104 2019/9/21 文件大小:19 KB

下载得到文件列表

遗传算法经典MATLAB代码.docx

文档介绍

文档介绍:遗传算法经典学****Matlab代码遗传算法实例:也是自己找来的,原代码有少许错误,本人都已更正了,调试运行都通过了的。对于初学者,尤其是还没有编程经验的非常有用的一个文件遗传算法实例% 下面举例说明遗传算法 %% 求下列函数的最大值 %% f(x)=10*sin(5x)+7*cos(4x) x∈[0,10] %% 将 x 的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为 (10-0)/(2^10-1)≈ 。 %% 将变量域 [0,10] 离散化为二值域 [0,1023], x=0+10*b/1023, 其中 b 是 [0,1023] 中的一个二值数。 %% %%--------------------------------------------------------------------------------------------------------------%%--------------------------------------------------------------------------------------------------------------%% 编程%-----------------------------------------------% (编码)% ,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),% 长度大小取决于变量的二进制编码的长度(在本例中取10位)。%遗传算法子程序%Name: %初始化function pop=initpop(popsize,chromlength) pop=round(rand(popsize,chromlength)); % rand随机产生每个单元为 {0,1} 行数为popsize,列数为chromlength的矩阵,% roud对矩阵的每个单元进行圆整。这样产生的初始种群。%  计算目标函数值%  将二进制数转化为十进制数(1)%遗传算法子程序%Name: %产生 [2^n 2^(n-1) ... 1] 的行向量,然后求和,将二进制转化为十进制function pop2=decodebinary(pop)[px,py]=size(pop); %求pop行和列数for i=1:pypop1(:,i)=2.^(py-i).*pop(:,i);endpop2=sum(pop1,2); %求pop1的每行之和%  将二进制编码转化为十进制数(2)% (或二进制编码)转换为十进制,参数spoint表示待解码的二进制串的起始位置% (对于多个变量而言,如有两个变量,采用20为表示,每个变量10为,则第一个变量从1开始,另一个变量从11开始。本例为1),% 参数1ength表示所截取的长度(本例为10)。%遗传算法子程序%Name: %将二进制编码转换成十进制function pop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);pop2=decodebinary(pop1);%  计算目标函数值% ,其公式采用本文示例仿真,可根据不同优化问题予以修改。%遗传算法子程序%Name: %实现目标函数的计算function [objvalue]=calobjvalue(pop)temp1=decodechrom(pop,1,10); %将pop每行转化成十进制数x=temp1*10/1023; %将二值域 中的数转化为变量域 的数objvalue=10*sin(5*x)+7*cos(4*x); %计算目标函数值%  计算个体的适应值%遗传算法子程序%Name:%计算个体的适应值function fitvalue=calfitvalue(objvalue)global Cmin;Cmin=0;[px,py]=size(objvalue);for i=1:pxif objvalue(i)+Cmin>0temp=Cmin+objvalue(i);elsetemp=;endfitvalue(i)=temp;endfitvalue=fitvalue';%  选择复制% 选择或复制操作是决定哪些个体可以进入下一代。程序中采用赌***选择法选择,这种方法较易实现。%