Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Branch-and-bound algorithm and cutting plane algorithm for integer programs

Branch-and-bound algorithm and cutting plane algorithm for integer programs

整数計画問題を含むNP困難な組合せ最適化問題では,分枝限定法と切除平面法が代表的な厳密解法として知られています.
分枝限定法は,直接に解くことが難しい問題をいくつかの小規模な子問題に分割する分枝操作と,最適解が得られる見込みのない子問題を見つける限定操作の2つの操作を繰り返し適用するアルゴリズムで,整数計画問題以外にも多くの最適化問題で使われています.
切除平面法は,緩和問題の最適解から始めて,実行可能解を残しつつ緩和問題の最適解を除去する制約条件を組織的に追加する手続きを繰り返し適用するアルゴリズムです.
今回は,分枝限定法と切除平面法の考え方と手続きを説明した後に,整数計画問題を解くソフトウェアの利用法を紹介します.

D0167b760673d702a06427fb3f878696?s=128

Shunji Umetani

March 12, 2021
Tweet

Transcript

  1. 分枝限定法と切除平⾯法 ⼤阪⼤学 ⼤学院情報科学研究科 梅⾕ 俊治 2021年3⽉16⽇

  2. 組合せ最適化問題とその応⽤事例 • 組合せ最適化問題︓最適解を含む解の集合(探索領域)が,集合, 順列,割当て,ネットワーク,論理,整数など組合せ的な構造を 持つ最適化問題. 2 多くの現実問題が組合せ最適化問題に定式化できる

  3. 組合せ最適化問題の難しさ • NP困難問題︓厳密な最適解を求めるのに必要な計算時間が最悪で ⼊⼒サイズの指数関数になると多くの研究者が考えている問題. • 都市をちょうど1回ずつ訪問する最短の巡回路を求める巡回セー ルスマン問題の解候補を列挙すると 通り. 3 Newsweek,

    July 26, 1954 PCB3038 D15112 都市数 巡回路の総数 計算時間(秒) 6 60 4.32×10-10 8 2520 3.23×10-8 10 1.81×105 3.63×10-6 15 4.36×1010 1.96 20 6.08×1016 4.87×106 約56⽇ 25 3.10×1023 3.88×1013 約122万年 30 4.42×1030 7.96×1020 約25233億年 100TFlopsのコンピュータを⽤いて 巡回路を列挙したときの計算時間 ⼤規模な巡回セールスマン問題を 解く必要が⽣じることは少なくない 組合せ最適化問題の全ての解を列挙することは⾮常に困難
  4. 計算困難な組合せ最適化問題 • 厳密解法︓任意の⼊⼒データに対して最適解を1つ出⼒するアルゴリ ズム. • 近似解法︓任意の⼊⼒データに対して最適値に対する近似性能を保 証する実⾏可能解を1つ出⼒するアルゴリズム. • 発⾒的解法︓最適値に対する近似性能が保証されていない実⾏可能 解を1つ出⼒するアルゴリズム.

    4 離散最適化問題 (組合せ最適化問題) 整数計画問題 資源配分問題,最⼩全域⽊問題など 貪欲法 ナップサック問題,資源配分問題, 最⼩費⽤弾性マッチング問題など 動的計画法 最⼤流問題,最⼩費⽤流問題, 最⼤マッチング問題,割当問題など 増加路法,負閉路消去法,最短路繰り返し法, (ハンガリー法) 最短路問題 ダイクストラ法,ベルマン・フォード法, フロイド・ウォーシャル法 分枝限定法,切除平⾯法,(分枝カット法) ビンパッキング問題,最⼤カット問題, 巡回セールスマン問題,頂点被覆問題, ナップサック問題など 性能保証付き近似解法 さまざまなNP困難問題 発⾒的解法,局所探索法,メタヒューリスティクス, (分枝カット法) 効率的なアルゴリズム が期待できない
  5. 線形計画問題と整数計画問題 • 線形計画問題(Linear Program; LP) ü 線形制約の下で線形関数を最⼩化(最⼤化) • 整数計画問題(Integer Program;

    IP) ü 広義︓変数に整数条件の付いた最適化問題 ü 狭義︓線形計画問題+変数の整数条件 5 連続変数と整数変数が混 在する問題は,混合整数 計画問題(Mixed Integer Program; MIP) Jは整数変数の添字集合 ઢܗܭը໰୊ͷ࣮ߦՄೳྖҬ ੔਺ܭը໰୊ͷ࣮ߦՄೳྖҬ ࠞ߹੔਺ܭը໰୊ͷ࣮ߦՄೳྖҬ
  6. 整数計画問題を解く • 計算困難な最適化問題では最適値が簡単に求まらない. • 最適値の上界と下界を求めて最適値の取り得る範囲を限定する. • 緩和問題︓原問題の⼀部の制約条件を緩めた問題 ü 整数変数の整数条件を外す →

    線形計画緩和計画問題 6 最 ⼩ 化 最適値 上界 下界 実⾏不可能 実⾏可能 整数計画問題 線形計画緩和問題 ⽬的関数値 線形計画緩和問題の実⾏可能領域 整数計画問題の実⾏可能領域
  7. 線形計画緩和問題の性質 • MIPの実⾏可能領域 LPの実⾏可能領域 • (1) MIPの最適値 LPの最適値 • (2)

    LPの最適解 が整数条件を満たす → はMIPの最適解 • (3) LPが実⾏不能 → MIPも実⾏不能 7 最 ⼩ 化 MIPの最適値 ⽬的関数値 MIPの暫定値 LPの最適値 暫定値(上界値) 下界値 上げたい 下げたい
  8. 分枝限定法 • 最適化問題に対する汎⽤的な厳密解法. • 分枝操作︓実⾏可能領域を分割して部分問題を⽣成する. (緩和解が実数値を取る変数 を選んで, を追加した問題 と, を追加した問題に分割する)

    • 限定操作︓緩和問題から得られる下界値を⽤いて最適解が得られる⾒ 込みのない部分問題を省く. (分枝前の下界値 分枝後の下界値 ) 8 緩和解 緩和解の⽬的関数値 部分問題1の下界 部分問題2の下界 線形計画(LP)緩和問題の 最適解 LP緩和問題の 最適解
  9. 分枝限定法の原理 • ︓問題 の⼀部の変数の範囲を制限して得られる部分問題 • ︓問題 のLP緩和問題 • (1) の最適値

    の最適値 • (2) の最適解 が の実⾏可能解(整数解) → は の最適解 • (3) は実⾏不能 → は実⾏不能 • (4) の最適値 の部分問題 の最適値 9 原問題
  10. 分枝操作 • Step1: LP緩和問題 を解く. の最適解 が の実⾏可能解 (整数解)ならば を出⼒して終了する.

    • Step2: が実数値を取る変数 を選び, に制限した問題 と に制限した問題 を⽣成する*. 10 LPの最適解 * の2値の場合には, に制限した問題と に制限した問題が⽣成される. すなわち,同じ⼿続きで に固定した問題と に固定した問題が⽣成される.
  11. 限定操作 • Step1: LP緩和問題 が実⾏不能 → は実⾏不能(性質3) • Step2: の最適解を

    ,最適値を とする. • Step2-1: が の実⾏可能解(整数解) → は の最適解(性質2) よって, (暫定値)ならば と更新する. • Step2-2: ならば に最適解は存在しない(性質1) • Step3: Step2-1, 2-1のいずれにも該当しなければ分枝操作を⾏う. 11 分枝前の下界値 分枝後の下界値 探索が進めば下界値は 単調に増加する ⼀般には全ノードの下界値の最⼩値
  12. 分枝限定法の終端 • 上界値は暫定解が更新されたときのみ減少する. 実⾏可能解が1つ求まるまで上界値は∞となる. • 下界値は⼦問題が1つ処理されるたびに増加する. • 上界値と下界値が⼀致もしくは処理すべき⼦問題がなくなれば終了*. 12 *数値誤差により挙動が不安定になることを回避するため,多くの整数計画ソルバーでは上界値と下界値の

    (相対and/or絶対)誤差が与えられたしきい値を下回った時点で終了する. ⽬的関数値 時間 暫定値(上界値) 下界値
  13. ナップサック問題 • 最⼤で の重さまで荷物を詰め込める袋が1つと 個の荷物 が与えられる.重さの合計が を超えない範囲で荷物の価値の合 計が最⼤となる詰込み⽅は︖ 13 袋に詰め込める重さ合計の上限(定数)

    荷物iの重さ(定数) 荷物iの価値(定数) 荷物iを袋に詰め込む→ , つめ込まない→ (変数) c : wi : pi : xi : max n X i=1 pi xi s.t. n X i=1 wi xi  c, xi 2 {0, 1}, i = 1, ... , n.
  14. ナップサック問題の線形計画緩和 • ナップサック問題の線形計画緩和解は簡単に求められる. 14 荷物を と並べ直すとLP緩和解は以下の通り は かつ を満たす を⽤いて

    詰め込めるだけ詰め込んで 袋からはみ出したところで 荷物を切る 切り分け可能
  15. 分枝限定法の実⾏例 15 (1) (2) (3) (1) (2) (3) 深さ優先探索の⽅が 整数解が得られ易い

  16. 分枝限定法の実⾏例 16 (4) なので終端 (5) (1) (2) (3) (6) (4)

    (5) (6) 実⾏可能解なので として終端 P6 は実⾏不能で全ての ノードが処理されて終了
  17. 切除平⾯法 • 全ての実⾏可能な整数解を含む凸包は凸多⾯体 → 線形計画問題 • 前もって凸包の不等式表現を知ることは困難だしその数も膨⼤. • 線形計画問題の最適解 が整数解でないとき,

    を除去する制約条件 を追加する(ただし,整数計画問題の実⾏可能解は切除しない). • 切除平⾯を追加するに従って最適解に近づく. 17 最⼩化 LP最適解 切除平⾯(カット) LP最適解 LP最適解 =整数解︕ 整数計画ソルバーは分枝限定法と切除平⾯法を組み合わせた 分枝切除平⾯法を⽤いている
  18. 妥当不等式と切除平⾯ • 妥当不等式︓全ての整数実⾏可能解が満たす不等式 • 切除平⾯法︓妥当不等式で現在の⾮整数解を除去する不等式 • LP緩和問題の最適解 が整数解でないとき, を除去する制約条件 を追加する⼿続きを繰り返す.

    • Gomory-Chvatal cut (fractional cut): 実⾏可能領域 の切除平⾯ 18 の妥当不等式 LP最適解 左辺の係数を切下げ 左辺は整数値を取るので右辺 も整数値に切り下げて良い
  19. Gomoryの切除平⾯法 19 (IP) (LP緩和) 最適基底と⾮基底 となる変数 となる変数 最適基底解 が整数ベクトルのとき︓ はIPの最適解

    の第 要素が整数でないとき︓ を切り取るカットを⽣成
  20. Gomoryの切除平⾯法 20 の第 番⽬の式に着⽬する 整数でないことに注意︕ Gomory cutを⽣成する が切り落とされている︕ ⾮負のスラック変数 を導⼊

    (2) (2)-(1)を の下に追加する 現在の基底解が実⾏可能ではなくなるので Gomoryの切除平⾯法を実⾏するには双対単体法が必要 切下げするので不等式になる (1)
  21. 切除平⾯法の実⾏例 21 (IP) (LP緩和) LP最適解 (3/4, 3/2) 最適辞書は以下の通り (1) (2)

    (3) (3)を書き直すと (3)ʼ これより以下のGomory cutを得る (4) (4)ʼ (4)ʼ-(3)ʼを辞書に追加する
  22. 最適解が求まらないときは︖ • 整数計画問題は解候補を体系的に列挙する分枝カット法に基づく. • 整数計画ソルバーの計算が終了しない原因は︖ 22 ü 線形計画緩和問題の求解に多⼤な計算時間を要する → 変数から整数制約を取り除いた線形計画問題を解いても多くの計算時間

    を要するならば問題の規模が⼤きすぎる → ⼊⼒データの数値の桁数が多い,数値の⼤⼩の極端な差など,数値計算 が不安定となることもある ü 限定操作が効果的に働いていない → 暫定解から得られる最適値の上界が悪い → 線形計画緩和問題の最適解から得られる最適値の下界が悪い → 多数の最適解が存在する 整数計画問題の解となる整数格⼦点のみ を含む凸多⾯体は⼀意ではない
  23. 参考⽂献 • L.A.Wolsey, Integer Programming, John Wiley & Sons, 1998.

    23