[経路計画]シミュレーテッドアニーリングアルゴリズムの巡回セールスマンTSP問題[Matlab031号]

1.はじめに

シミュレーテッドアニーリングアルゴリズムは、最適解を解くための効果的なアルゴリズムです。シミュレーテッドアニーリングアルゴリズムは、自然なアニーリング現象を模倣することによって導出されます。これは、物理学における固体材料のアニーリングプロセスと一般的な最適化問題との類似性を利用します。これは、特定の初期温度から始まり、温度の連続的な低下を組み合わせて行われます。突然のジャンプ特性の可能性があるため、解空間ではランダムです。グローバルな最適解を見つけます。
ここに画像の説明を挿入
巡回セールスマン問題であるTSP問題(巡回セールスマン問題)も、巡回セールスマン問題とセールスマン問題に変換され、数学の分野で有名な問題の1つです。旅行中の商人がnの都市を訪問したいと仮定すると、彼は行きたいパスを選択する必要があります。パスの制限は、各都市は1回しか訪問できず、最終的に元の都市に戻らなければならないということです。パス選択の目標は、必要なパス距離がすべてのパスの中で最小値になることです。
これまでのところ、これらの問題のいずれも効果的なアルゴリズムを見つけていません。NP完全問題(NP完全またはNPC)とNP困難問題(NP困難またはNPH)には効果的なアルゴリズムがないという推測を受け入れる傾向がありますが、このような問題の大規模な例は、次の方法では解決できないと思います。正確なアルゴリズムであり、探す必要があります効果的な近似アルゴリズム。
TSP「巡回セールスマン問題」の適用分野には、混雑を減らすために最も合理的で効率的な道路交通を計画する方法、運用コストを削減するためのロジスティクスをより適切に計画する方法、インターネット環境でノードをより適切に設定して情報をより適切に提供する方法が含まれます。フローなど。

第二に、ソースコード

2.1 swap.m

function [ newpath , position ] = swap( oldpath , number )
% 对 oldpath 进 行 互 换 操 作
% number 为 产 生 的 新 路 径 的 个 数
% position 为 对 应 newpath 互 换 的 位 置
m = length( oldpath ) ; % 城 市 的 个 数
newpath = zeros( number , m ) ;
position = sort( randi( m , number , 2 ) , 2 ); % 随 机 产 生 交 换 的 位 置
for i = 1 : number
newpath( i , : ) = oldpath ;
% 交 换 路 径 中 选 中 的 城 市
newpath( i , position( i , 1 ) ) = oldpath( position( i , 2 ) ) ;
newpath( i , position( i , 2 ) ) = oldpath( position( i , 1 ) ) ;
end

2.2 pathfare.m

function [ objval ] = pathfare( fare , path )
% 计 算 路 径 path 的 代 价 objval
% path 为 1 到 n 的 排 列 ,代 表 城 市 的 访 问 顺 序 ;
% fare 为 代 价 矩 阵 , 且 为 方 阵 。
[ m , n ] = size( path ) ;
objval = zeros( 1 , m ) ;
for i = 1 : m
for j = 2 : n
objval( i ) = objval( i ) + fare( path( i , j - 1 ) , path( i , j ) ) ;
end
objval( i ) = objval( i ) + fare( path( i , n ) , path( i , 1 ) ) ;
end

2.3距離.m

function [ fare ] = distance( coord )
% 根 据 各 城 市 的 距 离 坐 标 求 相 互 之 间 的 距 离
% fare 为 各 城 市 的 距 离 , coord 为 各 城 市 的 坐 标
[ v , m ] = size( coord ) ; % m 为 城 市 的 个 数
fare = zeros( m ) ;
for i = 1 : m % 外 层 为 行
for j = i : m % 内 层 为 列
fare( i , j ) = ( sum( ( coord( : , i ) - coord( : , j ) ) .^ 2 ) ) ^ 0.5 ;
fare( j , i ) = fare( i , j ) ; % 距 离 矩 阵 对 称
end
end

2.4 myplot.m

function [ ] = myplot( path , coord , pathfar )
% 做 出 路 径 的 图 形
% path 为 要 做 图 的 路 径 ,coord 为 各 个 城 市 的 坐 标
% pathfar 为 路 径 path 对 应 的 费 用
len = length( path ) ;
clf ;
hold on ;
title( [ '近似最短路径如下,路程为' , num2str( pathfar ) ] ) ;
plot( coord( 1 , : ) , coord( 2 , : ) , 'ok');
pause( 0.1 ) ;
for ii = 2 : len
plot( coord( 1 , path( [ ii - 1 , ii ] ) ) , coord( 2 , path( [ ii - 1 , ii ] ) ) , '-b');
x = sum( coord( 1 , path( [ ii - 1 , ii ] ) ) ) / 2 ;
y = sum( coord( 2 , path( [ ii - 1 , ii ] ) ) ) / 2 ;
text( x , y , [ '(' , num2str( ii - 1 ) , ')' ] ) ;
pause( 0.4 ) ;
end
plot( coord( 1 , path( [ 1 , len ] ) ) , coord( 2 , path( [ 1 , len ] ) ) , '-b' ) ;
x = sum( coord( 1 , path( [ 1 , len ] ) ) ) / 2 ;
y = sum( coord( 2 , path( [ 1 , len ] ) ) ) / 2 ;
text( x , y , [ '(' , num2str( len ) , ')' ] ) ;
pause( 0.4 ) ;
hold off ;

三、操作効果

3.1テスト1つ
3.1.1データ

[ 0.6683 0.6195 0.4    0.2439 0.1707 0.2293 0.5171 0.8732 0.6878 0.8488 ; ...
  0.2536 0.2634 0.4439 0.1463 0.2293 0.761  0.9414 0.6536 0.5219 0.3609 ] ;

3.1.2効果

run(‘D:\0COCO\Sys\Documents\MATLAB\tsp\main.m’)
请输入城市的坐标
Coord=[ 0.6683 0.6195 0.4 0.2439 0.1707 0.2293 0.5171 0.8732 0.6878 0.8488 ;0.2536 0.2634 0.4439 0.1463 0.2293 0.761 0.9414 0.6536 0.5219 0.3609 ] ;
近似最优路径为:7 8 10 9 3 5 4 1 2 6
近似最优路径路程 pathfare= 3.1617

ここに画像の説明を挿入
3.2テスト
23.2.1データ

[ 66.83 61.95 40    24.39 17.07 22.93 51.71 87.32 68.78 84.88 50 40 25 ; 
  25.36 26.34 44.39 14.63 22.93 76.1  94.14 65.36 52.19 36.09 30 20 26] ;

3.2.2効果

run(‘D:\0COCO\Sys\Documents\MATLAB\tsp\main.m’)
请输入城市的坐标
Coord=[ 66.83 61.95 40 24.39 17.07 22.93 51.71 87.32 68.78 84.88 50 40 25 ;
25.36 26.34 44.39 14.63 22.93 76.1 94.14 65.36 52.19 36.09 30 20 26] ;
近似最优路径为:1 11 13 4 5 6 7 8 10 9 3 12 2
近似最优路径路程 pathfare= 332.6469

ここに画像の説明を挿入

四、備考

QQ912100926の過去のレビューを追加するための完全なコードまたは記述
>>>>>>
[経路計画] 3次元UAV経路計画のための粒子群最適化アルゴリズム[ Matlab012 ]
[経路計画]複数のロジスティクスセンターでのオープンビークルの遺伝的アルゴリズム経路計画[ Matlab 013]
[経路計画]ロボットグリッド経路計画のための粒子群アルゴリズム[Matlab014]
[経路計画]最短経路を解決するためのAntコロニーアルゴリズム[Matlab015]
[経路計画]ロジスティクスセンターの免疫アルゴリズムサイト選択[Matlab016]
[経路計画]人工蜂コロニーを備えたドローンの3次元経路計画[Matlab017]
[経路計画]グリッドマップロボット経路計画に基づく遺伝的アルゴリズム[Matlab018]
[経路計画]複数のドローン攻撃スケジューリングのためのAntSwarmアルゴリズム[Matlab 019]
[経路計画]グリッドマップに基づくロボットの最適な経路計画のための遺伝的アルゴリズム[Matlab020]
[経路計画]分布の順序を考慮した複数の無人システムのための遺伝的アルゴリズム[Matlab021問題]
[経路計画]
多施設VRP Antコロニーアルゴリズムの問​​題[Matlab022] [経路計画]時間ウィンドウで多施設VRPを解くAntコロニーアルゴリズム[Matlab023問題]
[経路計画]遺伝子アルゴリズムに基づく多施設VRPソリューション[Matlab024]
[経路計画] VRP問題を解決するためのシミュレートされたアニーリング[Matlab025]
[経路計画]スターグリッド経路計画[Matlab026]
[経路計画]クロスファクターを使用した双方向最適化粒子群グリッドマップ経路計画に基づく[Matlab027]
[パスプランニング] [TSP] GUIでTSP問題を解決するためのアリコロニーアルゴリズム[Matlab028]
[パスプランニング]ラスターマップパスプランニングのためのアリコロニーアルゴリズム[Matlab029]
[パスプランニング]巡回セールスマンTSPの遺伝的アルゴリズム[MatlabIssue 030 ]

おすすめ

転載: blog.csdn.net/m0_54742769/article/details/113048181