多旅行
『壹』 多旅行商问题matlab程序
[code]function [R_best,L_best,L_ave,Shortest_Route,Shortest_Length]=ACATSP(C,NC_max,m,Alpha,Beta,Rho,Q)
%%=========================================================================
%% ACATSP.m
%% Ant Colony Algorithm for Traveling Salesman Problem
%% ChengAihua,PLA Information Engineering University,ZhengZhou,China
%% Email:[email protected]
%% All rights reserved
%%-------------------------------------------------------------------------
%% 主要符号说明
%% C n个城市的坐标,n×2的矩阵
%% NC_max 最大迭代次数
%% m 蚂蚁个数
%% Alpha 表征信息素重要程度的参数
%% Beta 表征启发式因子重要程度的参数
%% Rho 信息素蒸发系数
%% Q 信息素增加强度系数
%% R_best 各代最佳路线
%% L_best 各代最佳路线的长度
%%=========================================================================
%%第一步:变量初始化
n=size(C,1);%n表示问题的规模(城市个数)
D=zeros(n,n);%D表示完全图的赋权邻接矩阵
for i=1:n
for j=1:n
if i~=j
D(i,j)=((C(i,1)-C(j,1))^2+(C(i,2)-C(j,2))^2)^0.5;
else
D(i,j)=eps;
end
D(j,i)=D(i,j);
end
end
Eta=1./D;%Eta为启发因子,这里设为距离的倒数
Tau=ones(n,n);%Tau为信息素矩阵
Tabu=zeros(m,n);%存储并记录路径的生成
NC=1;%迭代计数器
R_best=zeros(NC_max,n);%各代最佳路线
L_best=inf.*ones(NC_max,1);%各代最佳路线的长度
L_ave=zeros(NC_max,1);%各代路线的平均长度
while NC<=NC_max%停止条件之一:达到最大迭代次数
%%第二步:将m只蚂蚁放到n个城市上
Randpos=[];
for i=1:(ceil(m/n))
Randpos=[Randpos,randperm(n)];
end
Tabu(:,1)=(Randpos(1,1:m))';
%%第三步:m只蚂蚁按概率函数选择下一座城市,完成各自的周游
for j=2:n
for i=1:m
visited=Tabu(i,1:(j-1));%已访问的城市
J=zeros(1,(n-j+1));%待访问的城市
P=J;%待访问城市的选择概率分布
Jc=1;
for k=1:n
if length(find(visited==k))==0
J(Jc)=k;
Jc=Jc+1;
end
end
%下面计算待选城市的概率分布
for k=1:length(J)
P(k)=(Tau(visited(end),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);
end
P=P/(sum(P));
%按概率原则选取下一个城市
Pcum=cumsum(P);
Select=find(Pcum>=rand);
to_visit=J(Select(1));
Tabu(i,j)=to_visit;
end
end
if NC>=2
Tabu(1,:)=R_best(NC-1,:);
end
%%第四步:记录本次迭代最佳路线
L=zeros(m,1);
for i=1:m
R=Tabu(i,:);
for j=1:(n-1)
L(i)=L(i)+D(R(j),R(j+1));
end
L(i)=L(i)+D(R(1),R(n));
end
L_best(NC)=min(L);
pos=find(L==L_best(NC));
R_best(NC,:)=Tabu(pos(1),:);
L_ave(NC)=mean(L);
NC=NC+1
%%第五步:更新信息素
Delta_Tau=zeros(n,n);
for i=1:m
for j=1:(n-1)
Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);
end
Delta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);
end
Tau=(1-Rho).*Tau+Delta_Tau;
%%第六步:禁忌表清零
Tabu=zeros(m,n);
end
%%第七步:输出结果
Pos=find(L_best==min(L_best));
Shortest_Route=R_best(Pos(1),:)
Shortest_Length=L_best(Pos(1))
subplot(1,2,1)
DrawRoute(C,Shortest_Route)
subplot(1,2,2)
plot(L_best)
hold on
plot(L_ave)
function DrawRoute(C,R)
%%=========================================================================
%% DrawRoute.m
%% 画路线图的子函数
%%-------------------------------------------------------------------------
%% C Coordinate 节点坐标,由一个N×2的矩阵存储
%% R Route 路线
%%=========================================================================
N=length(R);
scatter(C(:,1),C(:,2));
hold on
plot([C(R(1),1),C(R(N),1)],[C(R(1),2),C(R(N),2)])
hold on
for ii=2:N
plot([C(R(ii-1),1),C(R(ii),1)],[C(R(ii-1),2),C(R(ii),2)])
hold on
end
设置初始参数如下:
m=31;Alpha=1;Beta=5;Rho=0.1;NC_max=200;Q=100;
31城市坐标为:
1304 2312
3639 1315
4177 2244
3712 1399
3488 1535
3326 1556
3238 1229
4196 1004
4312 790
4386 570
3007 1970
2562 1756
2788 1491
2381 1676
1332 695
3715 1678
3918 2179
4061 2370
3780 2212
3676 2578
4029 2838
4263 2931
3429 1908
3507 2367
3394 2643
3439 3201
2935 3240
3140 3550
2545 2357
2778 2826
2370 2975[/code]
运行后得到15602的巡游路径,路线图和收敛曲线如下:
『贰』 请问,我用lingo求解多旅行商问题,要求从一个点出发最后回到起点。怎么编程啊
lingo如果你安装的版本完整 应该可以在安装文件夹的sample里面找到一个lsp的例子 不过用lingo解这种问题如果比较复杂是很难解出的
『叁』 多旅行的名言名句
多旅行的名言名句
1、行路多者见识多.
2、乘兴而行,兴尽而返.
3、旅行能培养人的耐力.
4、旅行使我们体味人生.
5、知者乐水,仁者乐山.
6、步步寻往迹,有处特依依.
7、好旅伴可以缩短旅途时间.
8、旅行教给人们宽容之美德.
9、山色不厌远,我行随处深.
10、旅游使智者更智,愚者更昧.
11、人生是通往死亡的一次旅行.
12、旅行是解脱,是经验,是教育.
13、要想结为夫妻,先去旅行一次.
14、从不出门的人,必定是满腹偏见.
15、不能手提天下往,仅忍身去游其间.
16、黄鸡紫蟹堪携酒,红树青山好放船.
17、绝不离开自己祖国的人充满了偏见.
18、旅行是真正的知识最伟大的发源地.
19、旅行虽颇费钱财,却使你懂得社会.
20、临清风,对朗月,登山泛水,意酣歌.
21、旅行对我来说,是恢复青春活力的源泉.
22、旅游是获得愉悦感和浪漫性的最好媒介.
23、没有知识的旅游者是一只没有翅膀的鸟.
24、一个人到国外去以前,应该更进一步了解祖国.
25、人出门旅行并不是为了到达某地,而是为了旅游.
26、不登高山,不知天之高也;不临深溪,不知地之厚也.
27、旅行对青年,是教育的一部分;对于老年人是部分经验.
28、我非常喜欢旅游.到现在去过13个国家,28个城市.
29、一个人在旅游时必须带上知识,如果他想带回知识的话.
30、任何名胜,游览一次有一次的情趣,再游便另是一种风光.
31、世界是本书,不从旅行获得充足,而是为了心灵获得休息.
32、在令人厌倦的旅途上,一个性格明快的伙伴胜过一乘轿子.
33、如果说出生是最明确的一场旅行,死亡难道不是另一场出发?
34、世界是一本书,从不旅行的人等于只看了这本书的一页而已.
35、我们像旅人那样走向目的地;世界是客栈,死亡是旅行的终点.
36、泊舟水心岩望渔网溪,异绿染人,虽荷田柳汁不足以写其殊艳也.
『肆』 是不是多旅行比多看书更重要
其实这抄个是因人而异的,对于一个袭不爱看书的人来说,旅行比看书更重要。因为在他们看来,自己不愿把时间花在书本上去领略书中所说的美好世界,他们更倾向于到外面的世界去看看,却亲自感受大好山河,美图美景,对他们来说这是一件美好的事情。
在我看来,读书和旅行同等重要,这两者都可以拓宽我们的视野,增长我们的见识。
『伍』 人为什么要多读书,多旅行
无论是读书还是旅行,都是一种开阔视野,不断丰富自己的方法。所以无论你专是读书还是旅行属或者是工作,只要能够找到最适合自己的生存方式,都是值得肯定的。
不一定非要读书和旅行,只要你能够活得有意义,做什么都行。
『陆』 人为什么要多读书,多旅行
无论是读书还是旅行,都是一种开阔视野,不断丰富自己的方法。所以无论你回是读书还是答旅行或者是工作,只要能够找到最适合自己的生存方式,都是值得肯定的。
不一定非要读书和旅行,只要你能够活得有意义,做什么都行。
『柒』 多旅行商python 代码
写的太简单了,表示还不明白什么是多旅行商