1 / 16
文档名称:

遗传算法经典MATLAB代码.docx

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

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

分享

预览

遗传算法经典MATLAB代码.docx

上传人:cnanjringh 2021/5/28 文件大小:15 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] 中的一个二值数。 %
% %
%—-------—-—-—————--—--————--—-—--——-——-------—--—---——---—-——--——--———--——-—-—----—---—-—-—--———--———--—-—-—--%
%---—————-——--——----—-————-————--——------—-———--———-——-—---——-——————----—————-—--—-—-------——-————------——-—-——%
% 编程
%—--——-—--——----—-————----——--——--—-—---——---—--
% 2。1初始化(编码)
% ,popsize表示群体的大小,chromlength表示染色体的长度(二值数的长度),
% 长度大小取决于变量的二进制编码的长度(在本例中取10位).
%遗传算法子程序
%Name: initpop。m
%初始化
function pop=initpop(popsize,chromlength) 
pop=round(rand(popsize,chromlength)); % rand随机产生每个单元为 {0,1} 行数为popsize,列数为chromlength的矩阵,
% roud对矩阵的每个单元进行圆整。这样产生的初始种群。
% 2。2 计算目标函数值
% 2。2。1 将二进制数转化为十进制数(1)
%遗传算法子程序
%Name: decodebinary。m
%产生 [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的每行之和
% 2。2。2 将二进制编码转化为十进制数(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);
% 2。2。3 计算目标函数值
% ,其公式采用本文示例仿真,可根据不同优化问题予以修改.
%遗传算法子程序
%Name: calobjvalue。m
%实现目标函数的计算
function [objvalue]=calobjvalue(pop)
temp1=decodechrom(pop,1,10); %将pop每行转化成十进制数
x=temp1*10/1023; %将二值域 中的数转化为变量域 的数
objvalue=10*sin(5*x)+7*cos(4*x); %计算目标函数值
%  计算个体的适应值
%遗传算法子程序
%Name:calfitvalue。m
%计算个体的适应值
function fitvalue=calfitvalue(objvalue)
global Cmin;
Cmin=0;
[px,py]=size(objvalue);
for i=1:px
if objva