当前位置:首页 » 自驾旅行 » 旅行商问题

旅行商问题

发布时间: 2020-11-24 06:35:14

A. 旅行商问题的变种问题

您好,您提的问题很实际。的确,在旅途过程中,乘坐怎样的交通工具即省钱又省时这是个相当重要的问题,这个问题解决的好与坏直接影响到旅行的心情。

根据您提供的条件,可以知道您与同学以射线形出游,即玩完每个景点都要回到小区。实际上,您如果采取这种出游方式无论乘什么交通工具,交通费用肯定会很高,原因之一就是您每次都要回到小区,之二就是不知道您要具体到哪些景点,因为即使是同一个景点,到达那里多数也会有很多不同路线,交通费用当然也不一样。

如果你计划去的N个景点可以有几个相连,即从小区先到A,从A再到B,玩完B又可以到C,这样路费相对会节省些,同时也可以节省时间,但是对个人体力要求不叫高,当然也要看您的时间是否来得及。

您此次出行的目的是促进新生之间的交流,而不是真正的去旅行,所以我建议您,把N个景点拆分开,1-2个景点做为一周的活动内容,每周都有不同的景点,每到一个景点大家可以借景发挥,设计一些小游戏,聊聊谈谈,玩玩闹闹,也不至于为了赶景点那么疲惫,同学之间也有充分的交流,等到下一周换其他景点,也能激起同学们的热情。这样比一下子都逛完好些。

在活动当中,主要组织者要特别熟悉交通线路,多找些相同景点的不同线路,以备应急只用;做好每次出行的费用记录,回来后及时向大家公布;同时把途中能涉及到的问题罗列清楚,拆分任务,让出行的每个同学都参与到旅行的计划与实施中来,这也是一种很好的交流过程,一旦大家都积极的参与,每个人了解了旅行的意义,就会珍惜大家在一起的时光,而不是只有组织者忙前忙后,没做周到的地方其他同学还埋怨。

旅行不仅仅只有快乐,很多时候烦恼也尽在其中,希望您和同学们能借旅行的机会好好交流,增进彼此的信任与理解,在欢乐与烦恼中慢慢成长。

B. 旅行商问题的解法思路

旅行推销员的问题,我们称之为巡行(Tour),此种问题属于NP完全问题(NP-Complete),所以旅行商问题大多集中在启发式解法。Bodin(1983)等人将旅行推销员问题的启发式解法分成三种: 从距离矩阵中产生一个近似最佳解的途径,有以下几种解法:如近邻点法(Nearest Neighbor Procere):一开始以寻找离场站最近的需求点为起始路线的第一个顾客,此后寻找离最后加入路线的顾客最近的需求点1、,直到最后。
2、节省法(Clark and Wright Saving):以服务每一个节点为起始解,根据三角不等式两边之和大于第三边之性质,其起始状况为每服务一个顾客后便回场站,而后计算路线间合并节省量,将节省量以降序排序而依次合并路线,直到最后。
3、插入法(Insertion proceres):如今插入法、最省插入法、随意插入法、最远插入法、最大角度插入法等。 先给定一个可行途程,然后进行改善,一直到不能改善为止。有以下几种解法:
1、K-Opt(2/3 Opt):把尚未加入路径的K条节线暂时取代如今路径中K条节线,并计算其成本(或距离),如果成本降低(距离减少),则取代之,直到无法改善为止,K通常为2或3。
2、Or-Opt:在相同路径上相邻的需求点,将之和本身或其它路径交换且仍保持路径方向性,合成启发法
先由途程建构法产生起始途程,然后再使用途程改善法去寻求最佳解,又称为两段解法(two phase method)。有以下几种解法:
1、起始解求解+2-Opt:以途程建构法建立一个起始的解,再用2-Opt的方式改善途程,直到不能改善为止。
2、起始解求解+3-Opt:以途程建构法建立一个起始的解,再用3-Opt的方式改善途程,直到不能改善为止。

C. 起始点已知的旅行商问题种群怎样初始化

“旅行商问题”常被称为“旅行推销员问题”,是指一名推销员要拜访多个地点时,如何找到在拜访每个地
TSP问题
点一次后再回到起点的最短路径。规则虽然简单,但在地点数目增多后求解却极为复杂。以42个地点为例,如果要列举所有路径后再确定最佳行程,那么总路径数量之大,几乎难以计算出来。多年来全球数学家绞尽脑汁,试图找到一个高效的算法TSP问题在物流中的描述是对应一个物流配送公司,欲将n个客户的订货沿最短路线全部送到。如何确定最短路线。
TSP问题最简单的求解方法是枚举法。它的解是多维的、多局部极值的、趋于无穷大的复杂解的空间,搜索空间是n个点的所有排列的集合,大小为(n-1)!。可以形象地把解空间看成是一个无穷大的丘陵地带,各山峰或山谷的高度即是问题的极值。求解TSP,则是在此不能穷尽的丘陵地带中攀登以达到山顶或谷底的过程。

D. 多旅行商问题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的巡游路径,路线图和收敛曲线如下:

E. 旅行商问题的研究历史

旅行商问题字面上的理解是:有一个推销员,要到n个城市推销商品,他专要找出一个属包含所有n个城市的具有最短路程的环路。
TSP的历史很久,最早的描述是1759年欧拉研究的骑士周游问题,即对于国际象棋棋盘中的64个方格,走访64个方格一次且仅一次,并且最终返回到起始点。
TSP由美国RAND公司于1948年引入,该公司的声誉以及线性规划这一新方法的出现使得TSP成为一个知名且流行的问题。

F. 旅行商问题 lingo 谁能帮我写个程序!!!急!!!

这种tsp很简单的,网上有很多例子,代码考下来改下城市个数及相关的距离矩阵就可以了。。。
结果: 1-6-3-9-8-10-2-7-4-5-1

MODEL:
! Traveling Salesman Problem for the cities of
Atlanta, Chicago, Cincinnati, Houston, LA,
Montreal;
SETS:
CITY / 1..10 /: U; ! U( I) = sequence no. of city;
LINK( CITY, CITY):
DIST, ! The distance matrix;
X; ! X( I, J) = 1 if we use link I, J;
ENDSETS
DATA: !Distance matrix, it need not be symmetric;
DIST =
0 8 5 9 2 4 2 6 7 2
8 0 9 5 7 8 1 8 4 2
5 9 0 7 9 1 7 2 2 7
9 5 7 0 3 7 1 7 5 8
2 7 9 3 0 8 1 6 5 5
4 8 1 7 8 0 9 4 8 6
2 1 7 1 1 9 0 8 6 1
6 8 2 7 6 4 8 0 1 1
7 4 2 5 5 8 6 1 0 1
2 2 7 8 5 6 1 1 1 0;
ENDDATA

!The model:Ref. Desrochers & Laporte, OR Letters,
Feb. 91;
N = @SIZE( CITY);
MIN = @SUM( LINK: DIST * X);
@FOR( CITY( K):
! It must be entered;
@SUM( CITY( I)| I #NE# K: X( I, K)) = 1;
! It must be departed;
@SUM( CITY( J)| J #NE# K: X( K, J)) = 1;
! Weak form of the subtour breaking constraints;
! These are not very powerful for large problems;
@FOR( CITY( J)| J #GT# 1 #AND# J #NE# K:
U( J) >= U( K) + X ( K, J) -
( N - 2) * ( 1 - X( K, J)) +
( N - 3) * X( J, K)
);
);
! Make the X's 0/1;
@FOR( LINK: @BIN( X));
! For the first and last stop we know...;
@FOR( CITY( K)| K #GT# 1:
U( K) <= N - 1 - ( N - 2) * X( 1, K);
U( K) >= 1 + ( N - 2) * X( K, 1)
);
END

G. 非对称旅行商问题是什么意思

对称就是说,任意两个顶点a,b,从a到b的距离和从b到a是一样的;非对称就是这两个距离不一定一样。

H. 旅行商问题的线性规划解法为什么很少有相关资料

这是一个空间解析几何代数化的问题。 你可以将三个小区的煤量 作为空间上的同一出发点的向量 而向量的夹角就是运输量的饱和率。这样可以首先确定一个几何模型,在通过向量的结点分别计算同一平面上的内积空间可以得到第2个煤场的矢量。这样求运输量最小的方法就是要求A矢量和B矢量的形成的锐角的度数 ,角越大 运输量越小

I. 旅行商问题C语言的求解

排序额外写了一个字函数,结构清晰点。

Void change(int array[],int n) /*冒泡排序子函数,n是个数*/
{ int i, j, temp;
for(j=0;j<=(n-2);j++)
{ for(i=0;i<=(n-2-j);i++)
{ if (*(array+i)<*(array+i+1))
{temp=*array(i); /*指针操作,效率高*/
*array(i)=*(array+i+1) ;
*(array+i+1)=temp ;
}
}
}

} /* 排序函数结束*/

# include <stdio.h>
# define N 4
main ()
{ int a[N] , m ;
for(m=0 ; m<=N-1 ; m++)
{printf(“please give the a(%d) : ”, m ) ;
scanf(“%d”,(a+m)) ;
}
change (a, N ) ; //调用排序函数
printf(“ The array is OK : /n ” ) ;

for (m=0 ; m<=N-1 ; m++) //由大到小排列
printf(“ %d ”, *(a+m) ) ;

} //主函数结束

热点内容
微山湖岛旅游攻略 发布:2021-03-16 21:45:18 浏览:387
适合78月份国内旅游的地方 发布:2021-03-16 21:42:27 浏览:6
文化旅游部单位 发布:2021-03-16 21:42:22 浏览:118
深圳周边游推荐免费的 发布:2021-03-16 21:42:18 浏览:696
塑州旅游景点 发布:2021-03-16 21:40:53 浏览:84
道观河风景旅游区发展前景 发布:2021-03-16 21:39:53 浏览:658
旅行社psd 发布:2021-03-16 21:39:03 浏览:174
常州旅游业发展现状 发布:2021-03-16 21:35:14 浏览:330
棋牌在线游戏必去797ag 发布:2021-03-16 21:33:30 浏览:217
有四个旅游团三条路线 发布:2021-03-16 21:33:30 浏览:164