WORD格式可编辑
遗传算法经典学习Matlab代码
遗传算法实例
也是自己找来的,原代码有少许错误,本人都已更正了,调试运行都通过了的。对于初学者,尤其是还没有编程经验的非常有用的一个文件遗传算法实例
下面举例说明遗传算法求下列函数的最大值fx10si
5x7cos4xx∈010将x的值用一个10位的二值形式表示为二值问题,一个10位的二值数提供的分辨率是每为1002101≈001。将变量域010离散化为二值域01023x010b1023其中b是01023中的一个二值数。
编程21初始化编码i
itpopm函数的功能是实现群体的初始化,popsize表示群体的大小,chromle
gth表示染色体的长度二值数的长度,
专业知识分享
fWORD格式可编辑
长度大小取决于变量的二进制编码的长度在本例中取10位。遗传算法子程序Namei
itpopm初始化fu
ctio
popi
itpoppopsizechromle
gthpoprou
dra
dpopsizechromle
gthra
d随机产生每个单元为01行数为popsize,列数为chromle
gth的矩阵,roud对矩阵的每个单元进行圆整。这样产生的初始种群。
22计算目标函数值221将二进制数转化为十进制数1遗传算法子程序Namedecodebi
arym产生2
2
11的行向量,然后求和,将二进制转化为十进制fu
ctio
pop2decodebi
arypoppxpysizepop求pop行和列数fori1pypop1i2pyipopie
dpop2sumpop12求pop1的每行之和
222将二进制编码转化为十进制数2decodechromm函数的功能是将染色体或二进制编码转换为十进制,参数spoi
t表示待解码的二进制串的起始位置
专业知识分享
fWORD格式可编辑
对于多个变量而言,如有两个变量,采用20为表示,每个变量10为,则第一个变量从1开始,另一个变量从11开始。本例为1,参数1e
gth表示所截取的长度(本例为10)。遗传算法子程序Namedecodechromm将二进制编码转换成十进制fu
ctio
pop2decodechrompopspoi
tle
gthpop1popspoi
tspoi
tle
gth1pop2decodebi
arypop1
223计算目标函数值calobjvaluem函数的功能是实现目标函数的计算,其公式采用本文示例仿真,可根据不同优化问题予以修改。遗传算法子程序Namecalobjvaluem实现目标函数的计算fu
ctio
objvaluecalobjvaluepoptemp1decodechrompop110将pop每行转化成十进制数xtemp1101023将二值域中的数转化为变量域r