⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 example62.m

📁 是一个用MATLAB编的一个系统
💻 M
字号:
%sa2
%==============
%==============
figure('name','初始分布图示','numbertitle','off');
%%%%% sa_Dist calculate the distance between two points %%%%%%%
clc
T_start=str2num(tstart);
T_end=str2num(tend);
det_T=str2num(trate);
mystep_limit=str2num(epoch);
tolerance=str2num(thre);
num=str2num(num);
InnerLimit=0;
Error=[];road=[];

if num==10
    mapmatrix=imread('10cities.bmp');
else
    mapmatrix=imread('20cities.bmp');
end
[x,y,distance,cities]=sa_Dist(mapmatrix);
[m,n]=size(distance);

mystep=1;
perm_old=randperm(m);
%%%%%%% sa_length calculate the length of one road %%%%%%%%%%%
road_old=sa_length(perm_old,distance);

perm_retain=perm_old;
road_retain=road_old;

T=T_start; 
while T>T_end
   
   Inner=20;
   while Inner>InnerLimit
   seq1=0;seq2=0;
   while seq1==seq2
      seq1=ceil(rem(rand(1)*1000,m));seq2=ceil(rem(rand(1)*1000,m));
   end
   perm_now=perm_retain;
   perm_mid=perm_now(seq1);perm_now(seq1)=perm_now(seq2);perm_now(seq2)=perm_mid;
   road_now=sa_length(perm_now,distance);
   det_road=road_now-road_retain;
   Error(mystep)=det_road;
   prob=exp(-det_road/T);
   
%adjust by the prbo
   if det_road < 0
      perm_retain=perm_now;
      road_retain=road_now;
   end
   
   if det_road >= 0 
      if tolerance < prob
         perm_retain=perm_now;
         road_retain=road_now;
      end
    
      perm_retain=perm_retain;
      road_retain=road_retain;
   end
   Inner=Inner-1;
   end
   road(mystep)=road_retain;
   
  % det_road1=road_now-road_retain;
  % Dispersion(mystep)=det_road1;

   T=T*det_T;
   mystep=mystep+1;
   if mystep > mystep_limit, break, end ;
end

clc
fprintf('the distance is : ');
fprintf('%d\n\n',round(road_retain));
fprintf('now! the shortest road is: ')
perm_retain

for i=1:cities
    r=perm_retain(i);
   x1(i)=x(r);
   y1(i)=y(r);
end
plot(x1,y1,'o'),alabel('x label','y label','TSP cities');
figure('name','路径图示','numbertitle','off');

plot(x1,y1,'o',x1,y1,'r'),alabel('x label','y label','The road answered by SA');
figure('name','距离变化曲线','numbertitle','off');
%subplot(1,2,1),

plot(road),alabel('steps','Distance','Distance of each road');


   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -