此处参考一篇博主的进行学习:
https://blog.csdn.net/Hanpu_Liang/article/details/78172537
这篇博主解决的遗传算法的入门问题-多元函数的最值求解,是遗传算法入门的练习
同样解决上篇提到的TSP问题。本文对参考书目的程序进行了完善与注释
tic;
clc,clear
load sj.txt %加载敌方 100 个目标的数据
x=sj(:,1:2:8);x=x(:);
y=sj(:,2:2:8);y=y(:);
sj=[x y];
d1=[70,40];
sj0=[d1;sj;d1];
%% 距离矩阵 d
sj=sj0*pi/180;
d=zeros(102);
for i=1:101
for j=(i+1):102
temp=cos(sj(i,1)-sj(j,1))*cos(sj(i,2))*cos(sj(j,2))+sin(sj(i,2))*sin(sj(j,2));
d(i,j)=6370*acos(temp);
end
end
d=d+d';L=102;w=50;dai=100;%通过加d的转置d',减少计算时间
%% 通过改良圈算法选取优良父代 A
for k=1:w
c=randperm(100);%ranperm(100)产生1~100的乱序排列,比如99 1 3 ...
c1=[1,c+1,102];%以数组形式存放路径
flag=1;
while flag>0
flag=0;
for m=1:L-3
for n=m+2:L-1
if d(c1(m),c1(n))+d(c1(m