欢迎来到天天文库
浏览记录
ID:1383427
大小:39.50 KB
页数:3页
时间:2017-11-11
《遗传算法模拟退火matlab编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、单钻头退火算法matlab编程clearclca=0.999;%温度衰减函数的参数t0=97;tf=3;t=t0;Markov_length=2800;%Markov链长度coordinates=[];coordinates(:,1)=[];amount=size(coordinates,1);%城市的数目%通过向量化的方法计算距离矩阵dist_matrix=zeros(amount,amount);coor_x_tmp1=coordinates(:,1)*ones(1,amount);coor_x_tmp2=coor
2、_x_tmp1';coor_y_tmp1=coordinates(:,2)*ones(1,amount);coor_y_tmp2=coor_y_tmp1';dist_matrix=sqrt((coor_x_tmp1-coor_x_tmp2).^2+...(coor_y_tmp1-coor_y_tmp2).^2);sol_new=1:amount;%产生初始解%sol_new是每次产生的新解;sol_current是当前解;sol_best是冷却中的最好解;E_current=inf;E_best=inf;%E_curr
3、ent是当前解对应的回路距离;%E_new是新解的回路距离;%E_best是最优解的sol_current=sol_new;sol_best=sol_new;p=1;whilet>=tfforr=1:Markov_length%Markov链长度%产生随机扰动if(rand<0.5)%随机决定是进行两交换还是三交换%两交换ind1=0;ind2=0;while(ind1==ind2)ind1=ceil(rand.*amount);ind2=ceil(rand.*amount);endtmp1=sol_new(ind1)
4、;sol_new(ind1)=sol_new(ind2);sol_new(ind2)=tmp1;else%三交换ind1=0;ind2=0;ind3=0;while(ind1==ind2)
5、
6、(ind1==ind3)...
7、
8、(ind2==ind3)
9、
10、(abs(ind1-ind2)==1)ind1=ceil(rand.*amount);ind2=ceil(rand.*amount);ind3=ceil(rand.*amount);endtmp1=ind1;tmp2=ind2;tmp3=ind3;%确保ind111、212、d313、.dist_matrix(sol_new(i),sol_new(i+1));end%再算上从最后一个城市到第一个城市的距离%E_new=E_new+...%dist_matrix(sol_new(amount),sol_new(1));ifE_new14、接受新解ifrand
11、212、d313、.dist_matrix(sol_new(i),sol_new(i+1));end%再算上从最后一个城市到第一个城市的距离%E_new=E_new+...%dist_matrix(sol_new(amount),sol_new(1));ifE_new14、接受新解ifrand
12、d313、.dist_matrix(sol_new(i),sol_new(i+1));end%再算上从最后一个城市到第一个城市的距离%E_new=E_new+...%dist_matrix(sol_new(amount),sol_new(1));ifE_new14、接受新解ifrand
13、.dist_matrix(sol_new(i),sol_new(i+1));end%再算上从最后一个城市到第一个城市的距离%E_new=E_new+...%dist_matrix(sol_new(amount),sol_new(1));ifE_new14、接受新解ifrand
14、接受新解ifrand
此文档下载收益归作者所有