专业知识分享遗传算法经典学习 Matlab 代码遗传算法实例:也是自己找来的,原代码有少许错误,本人都已更正了,调试运行都通过了的。对于初学者,尤其是还没有编程经验的非常有用的一个文件遗传算法实例%下面举例说明遗传算法%%求下列函数的最大值%%f(x)=10*sin(5x)+7*cos(4x)xW[0,10]%%将 x 的值用一个 10 位的二值形式表示为二值问题,一个 10 位的二值数提供的分辨率是每为(10-0)/(2 八 10-1)~0.01。%%将变量域[0,10]离散化为二值域[0,1023],x=0+10*b/1023,其中 b 是[0,1023]中的一个二值数。%%%%%%%%编程%%2.1 初始化(编码)%initpop.m 函数的功能是实现群体的初始化,popsize 表示群体的大小,chromlength 表示染色体的长度(二值数的长度),%长度大小取决于变量的二进制编码的长度(在本例中取 10 位)。专业知识分享%遗传算法子程序%Name:initpop.m%初始化functionpop=initpop(popsize,chromlength)pop 二 round(rand(popsize,chromlength));%rand 随机产生每个单元为{0,1}行数为popsize,列数为 chromlength 的矩阵,%roud 对矩阵的每个单元进行圆整。这样产生的初始种群。%2.2 计算目标函数值%2.2.1 将二进制数转化为十进制数(1)%遗传算法子程序%Name:decodebinary.m%产生[2、2 八(n-1)...1]的行向量,然后求和,将二进制转化为十进制functionpop2=decodebinary(pop)[px,py]二 size(pop);%求 pop 行和列数fori=1:pypop1(:,i)=2.八(py-i).*pop(:,i);endpop2=sum(pop1,2);%求 popl 的每行之和%2.2.2 将二进制编码转化为十进制数(2)%decodechrom.m 函数的功能是将染色体(或二进制编码)转换为十进制,参数 spoint 表示待解码的二进制串的起始位置%(对于多个变量而言,如有两个变量,采用 20 为表示,每个变量 10 为,则第一个变量从 1 开始,另一个变量从 11 开始。本例为 1),专业知识分享%参数 1ength 表示所截取的长度(本例为 10)。%遗传算法子程序%Name:decodechrom.m%将二进制编码转换成十进制functionpop2=decodechrom(pop,spoint,length)pop1=pop(:,spoint:spoint+length-1);pop2=decodebinary(pop1);%2.2.3 计算目标函数值%calobjvalue.m 函数的功能是实现目标函数的计算,其公式采用本文示例仿真,可根据不同优化问题予以修改。%遗传算法子程序%Name:calobjvalue.m%实现目标函数的计算function[objvalue]=calobjvalue(pop)tempi 二 decodechrom(pop,1,10);%将 pop...