シミュレーテッドアニーリングアルゴリズムに基づく巡回セールスマンTSP問題[MatlabIssue 136] [Path Planning 21]

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

ここに写真の説明を挿入
注:完全なコードまたは記述については、QQ1564658423を追加してください。
過去のレビュー>>>>>>
[Matlab 015] [パスプランニング1]パーティクルスウォームに基づく3DUAVパスプランニングmatlabソースコード
[Matlab017] [パスプランニング2]複数のロジスティクスセンターの開設を準備するための遺伝子アルゴリズムの使用-スタイル車両ルーティング問題Matlabプログラム
[Matlab018] [パスプランニング3]粒子群に基づくロボットグリッドパスプランニング
[Matlab019] [パスプランニング4]最短パスを解決するためのAntコロニーアルゴリズムmatlab
[Matlab 020] [パスプランニング5] Matlabロジスティクスセンターロケーション問題の免疫アルゴリズム
[Matlab021] [パスプランニング6]人工蜂コロニーに基づくドローンの3次元パスプランニング
[Matlab027] [パスプランニング7]グリッドマップに基づく-遺伝的アルゴリズムロボット最適パスプランニング
[Matlab 034期間] [パスプランニング8]
グリッドマップに基づくAntコロニーベースのマルチUAV攻撃スケジューリング-ロボット最適パスプランニングのための遺伝的アルゴリズム[Matlab022期間] [パスプランニング9]
マルチUAV協調ターゲット割り当てモデリングと遺伝子アルゴリズムソリューション割り当て順序の検討[
Matlab110 ] [パスプランニング10]多施設vrp問題のAntコロニーアルゴリズムmatlab [Matlab 111] [パスプランニング11]
Antコロニーアルゴリズムに基づく時間ウィンドウmatlabを使用した多施設VRP問題の解決[Matlab112 ] [パスプランニング12]
時間ウィンドウmatlabで多施設VRP問題を解決するためのantコロニーアルゴリズムに基づく[Matlab113] [パスプランニング13]
遺伝子アルゴリズムに基づく多施設VRPソリューションmatlab【Matlab114】【パスプランニング14】
VRP問題を解決するためのシミュレートされたアニーリングmatlab [Matlab 115] [パスプランニング15]
スターベースのグリッドパスプランニング[Matlab116] [パスプランニング16]
クロスファクターを使用した双方向最適化粒子群グリッドマップパスプランニング[Matlab117] [パスプランニング17]
[TSP] GUIを使用してTSP問題を解決するためのAntコロニーアルゴリズム[Matlab118] [パスプランニング18]
Antコロニーアルゴリズムに基づくグリッドマップパスプランニングmatlab [Matlab 119] [パスプランニング19]
巡回セールスマンTSP問題ベース遺伝的アルゴリズムに関する[MatlabIssue 135] [Path Planning 20]

おすすめ

転載: blog.csdn.net/TIQCmatlab/article/details/112857129