Home/体験版/巡回セールスマン問題/

巡回セールスマン問題

概要

巡回セールスマン問題とは、セールスマンがいくつかの都市を1度ずつすべての都市を訪問して出発点に戻ってくるときに、移動コストが最小になる経路を求める問題です。
入力
出力
都市数 NN に対して、経路は (N1)!2\frac{(N-1)!}{2} 通りの候補があり、総当たりで計算すると莫大な計算時間がかかり現実的ではありません。

定式化

QUBO形式による変数定義

巡回セールスマン問題をQUBO形式で定式化するために、まず二値変数 xt,ix_{t,i} を定義します。xt,ix_{t,i} は tt 番目に都市 ii を訪問する場合に 11、それ以外の場合に 00 を取るように設定します。
xt,i={1 (t 番目に都市 i を訪問)0 (それ以外)x_{t,i}=\begin{cases}1~&(t~\text{番目に都市}~i~\text{を訪問}) \\0~&(\text{それ以外})\end{cases}

目的項

巡回セールスマン問題の目的は移動コストを最小化することです。一般的に移動コストは距離で考えられることが多いため、ここでも移動距離を最小化することを考えます。di,jd_{i,j}  を都市 i, ji,\ j  間の距離とすると、tt 番目に訪問する都市から t+1t+1 番目に訪問する都市への移動距離は以下の式で表されます。
i=1Nj=1Ndi,jxt,ixt+1,j\sum_{i=1}^{N}\sum_{j=1}^{N}d_{i,j}x_{t,i}x_{t+1,j}
すべての訪問についてこの総和をとった以下の式が経路の総移動距離となります。ただし、巡回セールスマン問題で求める経路は出発点に戻ってくる巡回路であるため、xN+1,i=x1,ix_{N+1,i} = x_{1,i}  であるものとします。
t=1Ni=1Nj=1Ndi,jxt,ixt+1,j\sum_{t=1}^{N}\sum_{i=1}^{N}\sum_{j=1}^{N}d_{i,j}x_{t,i}x_{t+1,j}

制約項

QUBO形式による定式化では、「一つの都市を複数回訪問するもの」や「同時に複数の都市を訪問するもの」など、経路として成立しないものも解の候補に含まれます。 このような解が最適解となるのを防ぐために、「各行に1はただ1つのみ存在する」「各列に1はただ1つのみ存在する」という以下の制約を設けます。
t=1Nxt,i=1,     i=1Nxt,i=1\sum_{t=1}^{N}x_{t,i}=1,\ \ \ \ \ \sum_{i=1}^{N}x_{t,i}=1
この制約に違反するときにペナルティとしてエネルギー関数が増加するように設定すべきであるため、以下の式を制約項としてエネルギー関数に加えます。
t=1N(1i=1Nxt,i)2,     i=1N(1t=1Nxt,i)2\sum_{t=1}^{N}\left(1-\sum_{i=1}^{N}x_{t,i}\right)^2,\ \ \ \ \ \sum_{i=1}^{N}\left(1-\sum_{t=1}^{N}x_{t,i}\right)^2

エネルギー関数

上記の目的項と制約項を用いて、エネルギー関数は以下の式のように表されます。
H=t=1N1i=1Nj=1Ndi,jxt,ixt+1,j+At=1N(1i=1Nxt,i)2+Ai=1N(1t=1Nxt,i)2H=\sum_{t=1}^{N-1}\sum_{i=1}^{N}\sum_{j=1}^{N}d_{i,j}x_{t,i}x_{t+1,j}+A\sum_{t=1}^{N}\left(1-\sum_{i=1}^{N}x_{t,i}\right)^2+A\sum_{i=1}^{N}\left(1-\sum_{t=1}^{N}x_{t,i}\right)^2

シミュレーション

実際に巡回セールスマン問題をアニーリングで解くシミュレーションをしてみます。 このとき、制約項の係数 A ~A~が重要な役割を果たします。適切な制約の強さは目的項に依存し、十分大きな値にする必要があります。
ここでは、距離行列 di,j ~d_{i,j}~の最大値を基準値として、 A=αmaxdi,j (0<α1) ~A= \alpha \cdot \max d_{i,j}~(0<\alpha\leq1)~に設定し、 α ~\alpha~を変化させてその影響を確認します。右下のグラフに α ~\alpha~と移動コストの関係をプロットします。feasibleは制約条件を満たす解、unfeasibleは制約条件に違反する解となります。
NN
α\alpha