遗传算法的程序实例如求下列函数的最大值fx10si
5x7cos4x一、初始化编码i
itpopm函数的功能是实现群体的初始化,popsize表示群体的大小,chromle
gth表示染色体的长度二值数的长度,长度大小取决于变量的二进制编码的长度在本例中取10位。代码代码Namei
itpopm初始化fu
ctio
popi
itpoppopsizechromle
gthpoprou
dra
dpopsizechromle
gthra
d随机产生每个单元为01行数为popsize,列数为chromle
gth的矩阵,roud对矩阵的每个单元进行圆整。这样产生的初始种群。二、计算目标函数值1、将二进制数转化为十进制数1代码代码Namedecodebi
arym产生2
2
11的行向量,然后求和,将二进制转化为十进制fu
ctio
pop2decodebi
arypoppxpysizepopfori1pypop1i2py1popipypy1e
dpop2sumpop122、将二进制编码转化为十进制数2decodechromm函数的功能是将染色体或二进制编码转换为十进制,参数spoi
t表示待解码的二进制串的起始位置。对于多个变量而言,如有两个变量,采用20为表示,每个变量10为,则第一个变量从1开始,另一个变量从11开始。本例为1,参数1e
gth表示所截取的长度(本例为10)。代码代码Namedecodechromm将二进制编码转换成十进制fu
ctio
pop2decodechrompopspoi
tle
gthpop1popspoi
tspoi
tle
gth1pop2decodebi
arypop13、计算目标函数值calobjvaluem函数的功能是实现目标函数的计算,其公式采用本文示例仿真,可根据不同优化问题予以修改。代码代码Namecalobjvaluem实现目标函数的计算fu
ctio
objvaluecalobjvaluepoptemp1decodechrompop110将pop每行转化成十进制数求pop1的每行之和求pop行和例数x∈010
fxtemp1101023三、计算个体的适应值代码代码Namecalfitvaluem计算个体的适应值
将二值域中的数转化为变量域的数
objvalue10si
5x7cos4x计算目标函数值
fu
ctio
fitvaluecalfitvalueobjvalueglobalCmi
Cmi
0pxpysizeobjvaluefori1pxifobjvalueiCmi
0tempCmi
objvalueielsetemp00e
dfitvalueitempe
dfitvaluefitvalue四选择复制选择或复制操作是决定哪些个体可以进入下一代。程序中采用赌轮盘选择法选择,这种方法较易实现。根据方程pifi∑fififsum,选择步骤:1)在第t代,由(1)式计算fsum和pi2)产生01的随机数ra
d,求sra
dfsum3)求∑fi≥s中最小的k,则第k个个体被选中4)进行N次2)、3)操作,得到N个个体,成为第tt1代种群代码代码Nameselectio
m选择复制fu
ctio
ewpopselectio
popfitvaluetotalfitsumfitvalue求适应值之和fitvaluefitvaluetotr