都市数をNとすると、(N-1)!/2種類の巡回経路があります。
したがって、数十都市になるとすべての巡回経路を調べることは
非常に難しく、都市の配置に法則性がなければ厳密解を求めることはできないと
言ってよいと思います。
そこで、近似解法で十分良い解を求めることになります。
ランダムサーチ (Random Search)による解法
ランダムに経路を作成し、それまででもっとも良い解と比較します。
並列処理が可能です。 全体的な探索が行なえ、計算時間を無視すれば必ず最適解を求めることが出来ますが、 それまでの探索の結果が生かされず、非効率的のため、大きな問題では時間的に不向きです。
山登り法 (Hill Crimbing)による解法
ランダムに生成した解に対し、 最良解の近傍を探索し、解が改善されれば、それに置き換えていきます。 探索が局所的に良い方にしか進行しないので、局所解に陥りやすくなります。
TSPでは、訪問順に都市名を並べたリストにより、経路を表現します。 現在の最短の経路に、ある操作を加え、経路がより短くなれば 入れ換えることを繰り返すことにより、最良解を得ます。本解説の最後につけたプログラムでは次の3種類の操作から選択することができます。
・Two Point Reverse
都市1と都市2の間の経路を反転するもので、2最適化と呼ばれています。 経路が交わっている時は、この交わりをとることにより、確実に 経路を短くできますが、この操作により交わった経路をとることが出来ます。・Two Point Change
都市1と都市2を入れ換えます。・One Point Jump
都市1を都市2の位置へ移します。
焼きなまし法 (Simulated Annealing : SA) による解法
この方法は、溶解状態にある物質を冷却して結晶状態にするプロセスから ヒントを得たアルゴリズムで、 HCに確率的な遷移を導入したものです。 解の近傍を探索し、解が改善されれば、それに置き換えますが、 解が改善されなくても、ある確率により置き換えます。 最初は、この確率を大きくしておき、少しずつ減らしていきます。 確率の減らし方をゆっくりスケジューリングすることにより良い解を 得ることが出来ます。 逆に、急なスケジューリングをすれば速く収束しますが、 あまり急なスケジューリングをすると、解はHCと同程度になってしまいます。
SAの長所は、局所解に陥りにくく大域的探索が可能であることと、 汎用性が高いことです。 短所は、スケジューリングが経験的で調整が必要なことです。
温度Tの減らし方(スケジューリング)は、いくつか提案されています。 S.Geman, D.Gemanの方法 (Boltzman分布) や、H.Szu, R.Hartleyの方法 (Cauchy分布) が あり、どちらの方法も、最適解に収束できることが証明されています。 ただし、これらのスケジューリングにしたがって温度を下げることは、 膨大な計算時間を要し、非現実的です。
プログラムでは、次のスケジューリングを用いています。
T(n+1) = α・T(n) ただし、0 < α < 1
αが1に近いほど緩やかなスケジューリングとなります。
また、操作にはHCのところで述べた Two Point Reverse (2最適化) を用いています。
選択・淘汰
選択・淘汰には、次のものが多いようです。
・ 巡回経路の短いものをから順に選択するもの。
・ 巡回経路の短いものをスケーリングして、確率的に選択するもの。
突然変異
HCのところで述べた操作をそのまま利用できます。 ただし、2最適化は単独でも強力な操作であり、 GAとしての特色を出すには慎重に用いなければならないでしょう。
交叉
TSPに対するGAの工夫は、ほとんど交叉になされているといってよいでしょう。 本プログラムでは以下の方法で計算ができます。 1世代の計算量は、PMXはO(n)で、サブツアー交換交叉がO(n^3)となります。・Partially Matched Crossover (PMX) [goldberg:1989による]
交叉しても同じ経路が現れないようにうまく都市を入れ換えます。
この交叉では、交叉範囲の経路は完全に保存されます。(交叉範囲以外では経路が崩れます)・サブツアー交換交叉
交換されるサブツアーに含まれる都市集合が一致する時に限って交叉します、 これにより、交叉時に経路が壊れることを防ぐことができます。 ただし、交叉点があまり変動しなくなる可能性があり、 初期収束(探索があまり進行しないうちに収束してしまう)の可能性があります。
初期状態 | 計算結果 |
---|
図のように、内円と外円に24都市づつ配置したものを考えます。 内外円の半径比により、図のようなC型、歯車型の最適解を持ちます。 外円の直径を固定して、内円半径を変化させると、 内外円の半径比0.76908を境に局所解と最適解が入れ替わります。
C型 | 歯車型 |
---|---|
半径比 < 0.76908 | 0.76908 <= 半径比 |
★ 巡回セールスマン問題を遺伝的アルゴリズムで解く ◇◆◇◆ダウンロード◇◆◇◆ Ver2.1 (1999/10/20) フリーウェア |
☆ 概要 TSP(Traveling Salesperson Problem)を解きます。 遺伝的アルゴリズムおよびその他にもいくつかの近似アルゴリズムで計算ができます。 役に立つたぐいのプログラムではありませんが、"TSPとはなにか?"、 "近似アルゴリズムとはどんなアルゴリズムか?"といったことが 直感的に理解できると思います。
☆ 特徴
|
以下はランダムに配置した500都市のTSPをPMXGAで計算した例です。 交わった経路がなくなるまで計算しました。計算時間はPentium!!!750MHzで170秒かかりました。
初期状態 | 計算結果 |
---|