0-8

Model Building in Mathematical Programming: 9.5 Special kinds of integer programming

Optimization NightH. Paul Williams, Model Building in Mathematical Programming, 5th Edition, Wiley, 2013. の輪読会をしているので、そのメモです。

Chapter 9 Building Integer programming model I

9.5 Special kinds of integer programming models

ここでは、MIPとしてよく知られている問題と定式化方法を紹介している

  1. 集合被覆問題: Set covering problems
    • 部分集合の組が与えらえられたときに、最小の数ですべての要素をカバーしなさい、という問題
    • 各部分集合を使うか否かを表す変数 $\delta _ i $ を使って、各要素がいずれかに含まれていなさい、という制約を課す
    • 応用例には航空スタッフのスケジューリングなど
    • 基本的にときやすい問題で、難易度はその構造ではなく問題サイズに依存する
  2. 集合パッキング問題: Set packing problems
    • 部分集合の組が与えられたときに、要素の重複を許さず、どれだけ多くの部分集合を詰め込めるか、という問題
    • 各部分集合を使うか否かを表す変数 $\delta _ i $ を使って、各要素の重複を許さない、という制約を課す
    • 線形緩和問題の双対がちょうど集合被覆の緩和問題になる
    • 応用例にはマッチング問題など
  3. 集合分割問題
    • 部分集合の組が与えられたときに、要素の重複を許さず、すべての部分集合をカバーする、という問題
    • 応用例としては、一票の重みの差を最小にして選挙区の設定など
    • slack変数を使って表現した集合パッキングと同じ
  4. ナップサック問題
    • ナップサックにどれだけ多く荷物を積み込めるか
    • 応用例にはプロジェクト選択問題などもあるが、別の問題の部分問題(列生成法の子問題?)として現れることが多い
  5. 巡回セールスマン問題
    • すべての都市を1回ずつ巡回するときに最短経路を求める問題
    • 都市 $i$ から都市 $j$ へ(直接)進むかどうかを表す変数 $\delta _ {ij} $ を使って表現する
    • 部分巡回路の除去が重要
      • シンプルなのは、一度部分巡回路制約なしで解いてしまって、最適解に部分巡回路が含まれていたら、その部分巡回路を明示的に除去する制約を追加する(これを繰り返す)方法。他にもいろいろある
  6. 配送計画問題
    • 巡回セールスマン問題の拡張。容量制約のある車両が複数台で顧客を回る
    • 定式化できるが、現実的なサイズの問題は難しい。列生成法を使う方法もある
  7. 2次割当問題
    • 2つの集合 $S$ と $T$ が与えられたときに、 $S$ の要素と $T$ の要素を1対1対応させながらコストを最小化する問題で、コストは組合せで決まる($i$ と$j$ が対応して、かつ $k$ と $l$ が対応した場合にコスト $C_{ijkl}$ かかる)ような問題
    • 例えば2点間の距離を最小化するような問題は、2次割当問題として定式化できるし、巡回セールスマン問題もこの形で定式化できる
    • 目的関数が2次なので、一次式に変換してから解く必要がある