當前位置:首頁 » 旅遊大全 » 旅遊路線matlab

旅遊路線matlab

發布時間: 2021-03-14 03:53:55

㈠ 基於蟻群演算法的多旅遊團路線設計的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))'

㈡ 求數學建模外援 要求比較精通matlab和最優化問題的演算法,題目是旅遊線路的優化設計。我們已經有了基本的思

祝建模順利~~

附:06年的夏天我也參加過建模,結果全軍覆沒,藉此機會,再體驗下,不必言謝。還有問題請Q我(452721317)

㈢ 如果已經知道路線,那我怎麼在matlab中,顯示一個按照這個路線行走的點

路線的表達式是否知道

㈣ 用MATLAB求旅行商問題程序(10城市)

563

㈤ 如何使用Matlab畫出最短路線圖急急急

尋找模擬退火演算法吧,matlab有現成的工具箱的.
以下是我在搜搜上搜到的模擬退火的源代碼,你可以研究一下
=========================================
function [xo,fo] = Opt_Simu(f,x0,l,u,kmax,q,TolFun)
% 模擬退火演算法求函數 f(x)的最小值點, 且 l <= x <= u
% f為待求函數,x0為初值點,l,u分別為搜索區間的上下限,kmax為最大迭代次數
% q為退火因子,TolFun為函數容許誤差
%%%%演算法第一步根據輸入變數數,將某些量設為預設值
if nargin < 7
TolFun = 1e-8;
end
if nargin < 6
q = 1;
end
if nargin < 5
kmax = 100;
end
%%%%演算法第二步,求解一些基本變數
N = length(x0); %自變數維數
x = x0;
fx = feval(f,x); %函數在初始點x0處的函數值
xo = x;
fo = fx;
%%%%%演算法第三步,進行迭代計算,找出近似全局最小點
for k =0:kmax
Ti = (k/kmax)^q;
mu = 10^(Ti*100); % 計算mu
dx = Mu_Inv(2*rand(size(x))-1,mu).*(u - l);%步長dx
x1 = x + dx; %下一個估計點
x1 = (x1 < l).*l +(l <= x1).*(x1 <= u).*x1 +(u < x1).*u; %將x1限定在區間[l,u]上
fx1 = feval(f,x1);
df = fx1- fx;
if df < 0||rand < exp(-Ti*df/(abs(fx) + eps)/TolFun) %如果fx1<fx或者概率大於隨機數z
x = x1;
fx = fx1;
end
if fx < fo
xo = x;
fo = fx1;
end
end
function x = Mu_Inv(y,mu)
x = (((1+mu).^abs(y)- 1)/mu).*sign(y);

㈥ 在TSP問題中,想用matlab將路線畫出來,如何做到

假設各個城市的X坐標為zuobiao_X,Y坐標為zuobiao_Y,zuobiao_X(i)表示第i個城市的橫坐標,一共有n個城市,那麼,採用以下循環語句進行畫圖:
for i=1:n-1
plot([zuobiao_X(i),zuobiao_X(i+1)],[zuobiao_Y(i),zuobiao_Y(i+1)],'-r');
hold on;
end

'-r'表示用紅色的線連起來。望採納。

㈦ 旅遊線路的優化設計、要MATLAB程序的 謝謝

Hwnd = Plugin.Window.GetKeyFocusWnd()
Delay 2000

t1=now:t2=now:sj1=0.5:sj2=60
Rem abcc
Delay 20
If DateDiff("s",t1,now)>=sj1

Delay 10

Call Plugin.Bkgnd.KeyPress(Hwnd, 83)
Delay 10
t1=now
End If
If DateDiff("s",t2,now)>=sj2
Delay 10
Call Plugin.Bkgnd.KeyPress(Hwnd, 70)
t2=now
End If
Goto abcc

㈧ 多旅行商問題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的巡遊路徑,路線圖和收斂曲線如下:

㈨ 用matlab能否在一張導入的圖片(地圖) 上畫行進路線

不知道你的具體意圖是什麼,我用下列程序在一幅圖片上畫對角線,你可以參考一下。
I = imread('flowers.tif');
imshow(I);
hold on;
plot(linspace(1,size(I,2),101), linspace(1,size(I,1),101),'k');

㈩ matlab 最短路線

尋找模擬退火演算法吧,matlab有現成的工具箱的.
以下是我在搜搜上搜到的模擬退火的源代碼,你可以研究一下
=========================================
function [xo,fo] = Opt_Simu(f,x0,l,u,kmax,q,TolFun)
% 模擬退火演算法求函數 f(x)的最小值點, 且 l <= x <= u
% f為待求函數,x0為初值點,l,u分別為搜索區間的上下限,kmax為最大迭代次數
% q為退火因子,TolFun為函數容許誤差
%%%%演算法第一步根據輸入變數數,將某些量設為預設值
if nargin < 7
TolFun = 1e-8;
end
if nargin < 6
q = 1;
end
if nargin < 5
kmax = 100;
end
%%%%演算法第二步,求解一些基本變數
N = length(x0); %自變數維數
x = x0;
fx = feval(f,x); %函數在初始點x0處的函數值
xo = x;
fo = fx;
%%%%%演算法第三步,進行迭代計算,找出近似全局最小點
for k =0:kmax
Ti = (k/kmax)^q;
mu = 10^(Ti*100); % 計算mu
dx = Mu_Inv(2*rand(size(x))-1,mu).*(u - l);%步長dx
x1 = x + dx; %下一個估計點
x1 = (x1 < l).*l +(l <= x1).*(x1 <= u).*x1 +(u < x1).*u; %將x1限定在區間[l,u]上
fx1 = feval(f,x1);
df = fx1- fx;
if df < 0||rand < exp(-Ti*df/(abs(fx) + eps)/TolFun) %如果fx1<fx或者概率大於隨機數z
x = x1;
fx = fx1;
end
if fx < fo
xo = x;
fo = fx1;
end
end
function x = Mu_Inv(y,mu)
x = (((1+mu).^abs(y)- 1)/mu).*sign(y);
希望能解決您的問題。

熱點內容
微山湖島旅遊攻略 發布: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