matlab–旅行商社问题
履行商社问题,也称货郎担问题,是数学领域中的著名问题之一。
(1)种群初始化:个体编码方式有二进制编码和实数编码,在解决TSP问题过程中个体编码方式为实数编码。对于TSP问题,实数编码为1-n的实数的随机排列,初始化的参数有种群个数M、染色体基因个数N(即城市的个数)、迭代次数C、交叉概率Pc、变异概率Pmutation。
(2)适应度函数:在TSP问题中,每个染色体(即n个城市的随机排列)可计算出中距离,因此可将一个随机全排列的总距离的倒数作为适应度函数,即距离越短,适应度函数越好,满足TSP要求。
(3)选择操作:遗传算法选择操作有轮盘赌法、锦标赛法等多种方法,用户可根据实际情况选择最合适的算法。
(4)交叉操作:遗传算法中交叉操作有多种方法。一般对于个体,可以随机选择两个个体,在对应位置交换若干个基因片段,同时保证每个个体依然是1-n的随机排列,防止进入局部收敛。
(5)变异操作:对于变异操作,随机选取个体,同时随机选择个体的两个基因进行交换已实现变异操作。
clear all;
clc;
N=10;
M=20;
C=100;
C_old=C;
m=2;
Pc=0.4;
Pmutation=0.2;
%%生成城市的坐标%%
pos=randn(N,2);
%%生成城市之间距离矩阵%%
D=zeros(N,N)
for i=1:N
for j=1:N