LoginSignup
3
4

More than 5 years have passed since last update.

組合せ最適化 - 典型問題 - 2次割当問題

Last updated at Posted at 2015-07-10

典型問題と実行方法

2次割当問題

対象物$P=\{P_1,P_2,\dots,P_n\}$の割当先$L=\{L_1,L_2,\dots,L_n\}$を考える。対象物$P_i$と$P_j$の間の輸送量$q_{ij}$と割当先$L_k$と$L_l$の間の距離$d_{kl}$が与えられているとき、輸送量と距離の積の総和を最小にする割当を求めよ。

実行方法

usage
Signature: quad_assign(quant, dist)
Docstring:
2次割当問題
    全探索
入力
    quant: 対象間の輸送量
    dist: 割当先間の距離
出力
    対象ごとの割当先番号リスト
python
from ortoolpy import quad_assign
quad_assign([[0, 2, 0], [0, 0, 1], [0, 0, 0]], [[0, 2, 4], [2, 0, 3], [4, 3, 0]])
結果
(0, 1, 2)
python
# pandas.DataFrame
from ortoolpy.optimization import QuadAssign
QuadAssign('data/quad_assign_quant.csv', 'data/quad_assign_dist.csv')[1]
target pos
0 0 0
1 1 1
2 2 2

データ

補足

巡回セールスマン問題(TSP)など、様々な問題を 2次割当問題と捉えることができます。
2次割当問題は、抽象度の高い問題といえます。しかし、非常に解きずらい問題です。
問題の構造を理解するために、2次割当問題に帰着することは有益ですが、そのまま解くのはお薦めしません。より具体的な問題に捉えなおして解くべきでしょう。例えば、TSPは、TSP専用の解法を使った方が効率がよいでしょう。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4