全球旧事资料 分类
决TSP问题的Matlab程序实现
31程序初始化程序首先读入34个省会城市坐标,计算任意两个城市的距离;设置遗传算法控制参数。
clearallclcclfloadtestdatamat
le
le
gthx1xyx1y1
500种群数目C5000进化迭代次数m2适应度归一化淘汰加速指数,取值不宜太大alpha08淘汰保护指数,范围01,为1时关闭保护ameshgrid1
le
生成
x
矩阵dmatreshapesqrtsumxyaxya22
le
le
计算城市距离矩阵
遗传算法对求解问题本身是一无所知的,这里采用随机生成初始化种群,如下:
3
fbbi
goorg版权所有NNNsizedmatfarmzeros
N用于存储种群fori1
farmira
dpermN随机生成初始化种群e
d
32计算适应度本程序目标函数为经过34省会的总距离,适应度与目标函数的正相关,取值范围01,适应度计算公式为:
fit1
le
mi
le
mmaxle
mi
le
00001
其中,le
为某组解的总距离,mi
le
为该次迭代中最短距离,maxle
为该次迭代中最长距离,m为适应度归一化淘汰加速指数,源程序如下:
fu
ctio
fit
essfitle
mmaxle
mi
le
fit
essle
fori1le
gthle
fit
essi11le
i1mi
le
maxle
mi
le
00001me
d
33选择操作当个体适应度小于某一随机数值时,遭到淘汰,保留优秀个体,使它们有机会作为父代产生后代个体,源程序如下:
FARMfarm
0
为复制的个数
fori1
iffit
essi1alphara
d适应度与随机数值相比较

1FARM
farmie
de
dFARMFARM1

34交叉操作许多生物的繁衍是通过染色体的交叉完成的,在遗传算法中使用这一概念,并把交叉作为遗传算法的一个操作算子,其实现过程是对选中用于繁殖下一代的个体,随机地选择两个个体的位置,按交叉概率Pc,在选择的位置实行交换,目的在于产生新的基因组合,即新的个体,源代码如下:
4
fbbi
goorg版权所有aabbsizeFARMwhileaa
选择交叉的片段if
2
perra
dperm2else
perra
dperm
e
dAFARM
per1BFARM
per2ABi
tercrossAB使用部分匹配交叉法进行交叉操作FARMFARMABaabbsizeFARMe
difaa
FARMFARM1
e
dfarmFARMclearFARM保持种群规模为

以下是交叉函数:
交叉算法采用的是由Goldberg和Li
gle于1985年提出的PMX部分匹配交叉fu
ctio
abi
tercrossabLle
gthaifL10确定交叉宽度W9elseifL10floorL10ra
dL10WceilL108elseWfloorL108e
dpu
idr
dLW1随机选择交叉范围,从p到pWfori1W交叉xfi
dab1pi1yfi
dba1pi1a1pi1b1pi1excha
gea1pi1b1pi1a1xb1yexcha
gea1xr
好听全球资料 返回顶部