全球旧事资料 分类
用遗传算法解决TSP问题的完整的Matlab程序
程序一:主程序TSP问题(又名:旅行商问题,货郎担问题)遗传算法通用matlab程序D是距离矩阵,
为种群个数参数a是中国31个城市的坐标C为停止代数,遗传到第C代时程序停止C的具体取值视问题的规模和耗费的时间而定m为适应值归一化淘汰加速指数最好取为1234不宜太大alpha为淘汰保护指数可取为01之间任意小数取1时关闭保护功能建议取0810之间的值R为最短路径Rle
gth为路径长度fu
ctio
RRle
gthge
eticTSPDa
CmalphaNNNsizeDfarmzeros
N用于存储种群fori1
farmira
dpermN随机生成初始种群e
dRfarm1subplot131scattera1a2xpause1subplot132plotaiwaaRpause1farm1Rle
zeros
1存储路径长度fit
esszeros
1存储归一化适应值cou
ter0whilecou
terfori1
le
i1myLe
gthDfarmi计算路径长度e
dmaxle
maxle
mi
le
mi
le
fit
essfitle
mmaxle
mi
le
计算归一化适应值rrfi
dle
mi
le
Rfarmrr11更新最短路径FARMfarm优胜劣汰,
记录了复制的个数
0fori1
iffit
essi1alphara
d

1FARM
farmie
de
d
fFARMFARM1
aabbsizeFARM交叉和变异whileaaif
2
perra
dperm2else
perra
dperm
e
dAFARM
per1BFARM
per2ABi
tercrossABFARMFARMABaabbsizeFARMe
difaa
FARMFARM1
保持种群规模为
e
dfarmFARMclearFARMcou
tercou
ter1e
dRle
gthmyLe
gthDRsubplot133plotaiwaaR程序二:计算邻接矩阵输入参数a是中国31个城市的坐标输出参数D是无向图的赋权邻接矩阵fu
ctio
Dff01acdsizeaDzerosccfori1cforjicbbai1aj12ai2aj22Dijbb05DjiDije
de
d程序三:计算归一化适应值计算归一化适应值的子程序fu
ctio
fit
essfitle
mmaxle
mi
le
fit
essle

ffori1le
gthle
fit
essi11le
i1mi
le
maxle
mi
le
00001me
d程序四:交叉和变异的子程序交叉算法采用的是由Goldberg和Li
gle于1985年提出的PMX部分匹配交叉fu
ctio
abi
tercrossabLle
gthaifL10确定交叉宽度W9elseifL10floorL10ra
dL10WceilL108elseWfloorL108e
dpu
idr
dLW1随机选择交叉范围,从p到pWfori1W交叉xfi
dab1pi1yfi
dba1pi1a1pi1b1pi1excha
gea1pi1b1pi1a1xb1yexcha
gea1xb1ye
dfu
ctio
xyexcha
gexytempxxyytemp程序五计算路径的子程序该路径长度是一个闭合的路径的长度fu
ctio
le
myLe
gthDpNNNsizeDle
Dp1Np11fori1N1le
le
Dp1ip1i1e
d程序六r
好听全球资料 返回顶部