城市旅遊演算法
『壹』 求java上旅遊路線的規劃演算法
這個屬於TSP(旅行商)問題,搜索 旅行商問題 可以找到相關解法的介紹。
『貳』 旅行家演算法代碼 ABCDE 5個點的
我這有遞歸版的,有興趣的話自己改下吧。城市多了遞歸的效率低
Class Cities
{
privateint[][]cities;//各城市表示為(X,Y)X,Y為0到99之間的值
privateint[]shortestPath;//保存最短路程對應的經歷順序
privateintnum;//保存N(城市個數)
privatelongshortestLength=100000000;//N個城市遍歷時可能最大路程
privatelonggetLength(int[]tPath){...}//計算以tPath為經歷順序的路程
publicCities(intn)//構造n個城市的坐標,假設為0到99之間的隨機數
{
...
}
publicint[]getShortestPath()//獲得最短路徑
{
int[]tempPath=newint[num];
shortestPath=newint[num];
int[]citiesToured=newint[num];//保存第I個城市是否已經經歷
intcitiesNum=0;//已經經歷城市的個數
for(inti=0;i<num;i++)
citiesToured[i]=0;
goThrough(tempPath,citiesNum,citiesToured);//遍歷各城市
for(inti=0;i<num;i++)
tempPath[i]=shortestPath[i];//得到遍歷順序
returntempPath;//返回結果
}
privatevoidgoThrough(int[]tPath,intcNum,int[]cToured)//遍歷N個城市
{
if(cNum==0)//無經歷城市時,選擇第1個城市
{
cNum++;
tPath[0]=0;
cToured[0]=1;
goThrough(tPath,cNum,cToured);
}
elseif(cNum==num)//各個城市已經經歷,結束
{
longtempLength=getLength(tPath);//計算此經歷順序所走的路程
if(tempLength<shortestLength)//比較路程
{
shortestLength=tempLength;//更新最短路程及其經歷順序
for(inti=0;i<num;i++)
shortestPath[i]=tPath[i];
}
}
else
{
for(inti=0;i<num;i++)
if(cToured[i]!=1)//選擇未經歷的城市
{
cToured[i]=1;//加入已經歷城市
tPath[cNum]=i;
cNum++;//已經歷城市個數+1
goThrough(tPath,cNum,cToured);//調用下一層
cToured[i]=0;//恢復本層的狀態:
cNum--;//已經歷城市及個數
}//Endifinfor(i)
}//Endelse
}
privatelonggetLength(int[]tPath)//以指定順序計算遍歷路程
{
longlength=0;//路程
intnowPoint=0;//當前城市,第一次取0
for(inti=1;i<num;i++)
{
intj=tPath[i];
length+=(long)Math.sqrt((cities[j][0]-cities[nowPoint][0])*(cities[j][0]-cities[nowPoint][0])+(cities[j][1]-cities[nowPoint][1])*(cities[j][1]-cities[nowPoint][1]));//加上當前、下一城市間的距離
nowPoint=j;//更新當前城市
}
length+=(long)Math.sqrt((cities[0][0]-cities[nowPoint][0])*(cities[0][0]-cities[nowPoint][0])+(cities[0][1]-cities[nowPoint][1])*(cities[0][1]-cities[nowPoint][1]));//加上首尾城市間的距離
return length;
}
}//Cities類定義結束
『叄』 基於蟻群演算法的多旅遊團路線設計的matlab代碼
n個城市,編號為1---n
for循環的次數是螞蟻重復城市的次數,比如5個螞蟻放到4個城市,回需要重復兩遍才能放完螞蟻,答每次循環產生n個1---n的隨機數,相當於隨機n個城市,產生城市序列
循環結束
Tabu一句表示將m個螞蟻隨機,每個螞蟻放到前面產生的城市序列中,每個螞蟻一個城市,需要m個,所以提取前面1:m個序列
'表示轉置,沒有多大用處,可能參與後面的計算方便。
我感覺如果m,n很大的話,你這樣做會產生很大的浪費,計算很多的隨機數,這樣的話更好,一句就得:(如果變數Randpos後面沒有用到的話,如果用到了,還要用你的程序)
Tabu=ceil(n*rand(1,m))'
『肆』 旅遊區接待人數和服務人數怎麼計算
如果是一個地區的旅遊人次是分為兩種:一種是過夜的;一種是不過夜的。
過夜的按在幾個人當地過夜幾天算,如:一個地區在一定的時間內接待了10人,這10個人都在這個地區度過了10個晚上,那麼旅遊人次數就是10×10=100(人次)。
不過夜就是只停留一天,這個不太好測算,測算的標準是根據車票售出數、景區門票數等,這個演算法有很大局限性,但是現在國家基本上都是用這么個方法算的。
(4)城市旅遊演算法擴展閱讀
記者10日從文化和旅遊部了解到,綜合各地文化和旅遊部門、通訊運營商、線上旅行服務商的數據,經中國旅遊研究院(文化和旅遊部數據中心)綜合測算,2019年春節假期,全國旅遊接待總人數4.15億人次,同比增長7.6%;實現旅遊收入5139億元,同比增長8.2%。
家庭游、敬老游、親子游、文化休閑游成為節日期間主流的旅遊休閑方式。春節期間,各地組織了豐富多彩的文旅惠民活動,營造春節氣氛。北京、山西、內蒙古等12省區市開展「非遺過大年、文化進萬家」系列文化活動;「博物館里過大年」受到了廣大遊客和市民的廣泛歡迎。
『伍』 到許多城市旅遊怎樣用演算法實現最佳路徑
太籠統,沒法答,如果是離不遠就看路程,時間,交通,住宿,如果遠就沒法答了。
『陸』 如何用演算法實現旅行路線費用最少
規劃好你的地點,然後算查火車,汽車,飛機,各種路線組合的價錢
『柒』 用遺傳演算法求解10城市旅行商問題,用matlab編程,要可以運行的程序,跪求,必有重謝
%螞蟻演算法
function [Shortest_Route,Shortest_Length]=anttsp(city,iter_max,m,Alpha,Beta,Rho,Q)
n=size(city,1);
d=zeros(n,n);
d=squareform(pdist(city));
Eta=1./d;
Tau=ones(n,n);
Tabu=zeros(m,n);
nC=1;
R_best=zeros(iter_max,n);
L_best=inf.*ones(iter_max,1);
while nC<=iter_max
route=[];
for i=1:ceil(m/n)
route=[route,randperm(n)];
end
Tabu(:,1)=(route(1,1: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 isempty(find(visited==k, 1))
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);
if isempty(Select)%是不是一定能保證Select不為空
Tabu(i,j)=round(1+(n-1)*rand);
else
next_visit=J(Select(1));
Tabu(i,j)=next_visit;
end
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),:);
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));
end
%%隨機演算法
%city是n行2列的矩陣,每一行表示一個城市的經緯度,一共n個城市
%time表示循環次數,越大,可能找到的路徑最短,當然裡面有隨機性。
function [Shortest_Route,Shortest_Length]=TSP_SuiJiSuanFa(city,times)
n=size(city,1);
d=squareform(pdist(city));
Shortest_Length=inf;
for i=1:times
tempRoute=randperm(n);
tempLength=0;
for j=1:n-1
tempLength=tempLength+d(tempRoute(j),tempRoute(j+1));
end
tempLength=tempLength+d(tempRoute(n),1);
if tempLength<Shortest_Length
Shortest_Length=tempLength;
Shortest_Route=tempRoute;
end
end
end
『捌』 隨機遊走演算法是什麼
對於同樣的輸入,每次執行同樣的演算法會有不同的輸出」這句話對「隨機演算法版」是不一定權成立的,事實上它往往是不成立的。許多隨機演算法的隨機性體現在:1、運行時間隨機,但大多數情況下會低於某個值;2、計算結果大多數時候正確,但是有極低概率會給出不正確的結果。
對於random
walker演算法,它的前進路線是由勢函數引導的,在圖形邊界,這個勢函數會非常大,所以random
walker穿過這個邊界的概率很低。而且,random
walker演算法不是要真的執行「走」的這個過程,而是要直接算「從任一點出發,先到達哪個初始點的概率更高」。這種情況下,結果基本是確定的。就好像問「一個腳上綁著10kg重物的人,和一個沒有帶重物的人賽跑,誰獲勝的概率高」?確實前者不是沒有可能獲勝,但是你比較概率大小的話,結果是顯而易見的。
『玖』 遊人容量的計算方法有哪些類型
1,環境日容量面積,密度或完全游道測演算法:目前國內的旅遊容量計算大部分是都是這種方法進行計算的。
2,分區域計算景區容量的測算方法:本測演算法在實際應用中,由於不同區域的實測資料和遊人分布數據很難獲得,缺乏通用性。
3,按照密度,流速和周轉時間測算日容量:這種方法主要應用於線性景區,採用人均佔有的合理道路長度和流動速度計算全天容納的合理遊客數量。
4,以限制性因子為指標計算容量:本測演算法更能表達景區實際的容量狀況和旅遊者在景區內的流通狀況。實際上密度測演算法就是將空間作為限制容量的主要瓶頸進行測算的。
5,公園遊人容量應按下式計算:C=A/Am
式中:C——公園遊人容量(人);A——公園總面積(㎡);Am——公園遊人人均佔有面積(㎡/人)
(9)城市旅遊演算法擴展閱讀:
「遊人容量」簡介:
1,遊人容量是指游覽旺季高峰期時同時在公園內的遊人數。公園遊人容量是確定內部各種設施數量或規模的依據,通過遊人數量的控制,避免公園因超容量接納遊人,造成人身傷亡和園林設施損壞等事故,並為城市部門驗證綠地系統規劃的合理程度提供依據。
2,公園的遊人量隨季節、假日與平日、一日之中的高峰與低谷而變化;一般節日最多,游覽旺季、星期日次之,旺季平日相對較少,淡季平日最少,一日之中又有峰谷之分。確定公園遊人容量以游覽旺季的星期日高峰時為標准,這是公園發揮作用的主要時間。
『拾』 環球旅遊的路線最短路線,最好給出演算法100分求解
有環球慢旅多好別走馬看花,