一、算法介绍
关于本算法的原理介绍在之前的博客中已经提到过了,这边就不细说了。详情请点击此处 计算智能-遗传算法.
上一博客中讲述的遗传算法是求tsp问题的最短路径,但是在上一种解法,我们是对函数进行优化,属于局部的优化,该算法找到的哈密顿回路很可能是局部的最优解,本次遗传算法要进行的是一种全局优化,尽可能的找到符合条件的哈密顿回路。
二、算法主要代码
1、cross.m
function [A,B]=cross(A,B)
L=length(A);
if L<10
W=L;
elseif ((L/10)-floor(L/10))>=rand&&L>10
W=ceil(L/10)+8;
else
W=floor(L/10)+8;
end
%%W为需要交叉的位数
p=unidrnd(L-W+1);%随机产生一个交叉位置
%fprintf('p=%d ',p);%交叉位置
for i=1:W
x=find(A==B(1,p+i-1));
y=find(B==A(1,p+i-1));
[A(1,p+<