複数箇所の訪問先(以下都市とよびます)をすべて一度だけ訪問するとき、
その訪問の総距離が最短となる巡回路(つまり出発地に戻らなくてはならない)
を求める問題です。
局所探索は、すでに構成済み(1)の巡回路を改良するために用いられます。
なお、ここで紹介するアプレットでは巡回路の構成はNearest
Neighbour
〜もっとも近いお隣さんをたどること〜によって実現しています。
(1)構成済み:すべての都市を訪問する巡回路ができあがっているという意味
さて、局所探索に話をもどしましょう。局所探索は構成済み巡回路を
(全都市を一度だけ訪問という条件をくずさないよう)一部変化させて
総距離を改良していく方法の総称と思ってください。
総称と呼んだのは、変化のさせ方がいろいろあるためであり、
ここで紹介するアプレットでは2-opt近傍とOr-opt近傍を併用した変化をさせています。
2-opt近傍について
2-opt近傍とは、巡回路のなかから2都市間をむすぶ路を2本選んで、
入れかえるという操作です。
図1でみると、赤で描かれた路2本が、青で描かれた路2本に
入れかえられている様子がわかると思います。
![]() |
図1 2-optによる巡回路の変化 |
Or-opt近傍について
Or-opt近傍とは、巡回路のなかから多くとも3都市をつなぐ部分路を、
他の位置に移動挿入する操作です。
図2をみてください。
いまグレーの線で囲まれた部分路を赤点線の位置に移動挿入
しようとしています。赤実線は部分路を本体と接続している路です。
つぎにこの赤実線を切断し、青実線のように挿入したい位置に
接続しなおします。
後始末として、切断された都市が宙ぶらりんになりますので、
これを青点線のように接続してやります。
![]() |
図2 Or-optによる巡回路の変化 |