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

理論と実務を繋ぐには V

MIKIO KUBO
September 18, 2023

理論と実務を繋ぐには V

最適化理論の発展,最適化ソルバーと計算機の高速化,データ分析ならびに機械(深層)学習ツールの普及によって,最適化を実務に適用するための敷居は大幅に下がってきている.
しかし,実際問題に最適化を適用する際には,様々な障害に直面する.本講演では,それらの障害を克服するための具体的な方法について(30年の実務研究の経験をもとに)解説する.具体的には,以下の内容をオムニバスで話す.
・最適化プロジェクトの進め方とライフサイクル
・モデリングとデータの前処理
・理論家と実務家からみた最適化モデルの違いとギャップの埋め方
・最適化と機械学習の融合による実際問題の解決の枠組み

MIKIO KUBO

September 18, 2023
Tweet

More Decks by MIKIO KUBO

Other Decks in Research

Transcript

  1. 1. 線形最適化 2. (2次)錐最適化 3. 整数最適化 4. 栄養問題 5. 混合問題(ロバスト最適化)

    6. 最短路問題 7. 負の費⽤をもつ最短路 問題 8. 時刻依存最短路問題 9. 資源制約付き最短路問題 10. 第k最短路問題 11. パスの列挙問題 12. 最⻑路問題 13. Hamilton閉路問 題 14. 多⽬的最短路問題 15. 最⼩⽊問題 16. 有向最⼩⽊問題 17. 容量制約付き有向最⼩⽊問題 18. Steiner⽊問題 19. 賞⾦収集 Steiner⽊問題 20. 最⼤流問題 21. 最⼩カット問題 22. 多端末最⼤流問題 23. 最⼩費⽤流問題 24. 最⼩費⽤最⼤流問題 25. 輸送問題 26. 下限付き最⼩費⽤流問題 27. フロー分解問題 28. 多品種流問題 29. 多品種輸送問題 30. 多品種ネットワーク設計問題 31. サービ スネットワーク設計問題(SENDO) 32. 割当問題 33. ボトルネック割当問題 34. ⼀般化割当問題 35. 2次割当問題 36. 線形順序付け問 題 37. 極⼤マッチング問題 38. 最⼤マッチング問題 39. 安定マッチング問題 40. 安定ルームメイト問題 41. グラフ分割問題 42. グ ラフ多分割問題 43. 最⼤カット問題 44. グラフ彩⾊問題 45. 枝彩⾊問題 46. 極⼤クリーク列挙問題 47. 最⼤クリーク問題 48. 最⼤ 安定集合問題 49. クリーク被覆問題 50. 巡回セールスマン問題 51. 賞⾦収集巡回セールスマン問題 52. オリエンテーリング問題 53. 階層型巡回セールスマン問題 54. 時間枠付き巡回セールスマン問題 55. Euler閉路問題 56. 中国郵便配達⼈問題 57. ⽥舎の郵便配達 ⼈問題 58. 容量制約付き枝巡回問題 59. 容量制約付き配送計画問題 60. 時間枠付き配送計画問題 61. トレーラー型配送計画問題 (集合分割アプローチ) 62. 巡回セールスマン型配送計画問題(ルート先・クラスター後法) 63. 分割配送計画問題 64. 運搬スケ ジューリング問題 65. 空輸送最⼩化問題 66. 積み込み積み降ろし型配送計画問題 67. 複数デポ配送計画問題(METRO) 68. 集合被覆 問題 69. 集合分割問題 70. 集合パッキング問題 71. 数分割問題 72. 複数装置スケジューリング問題 73. ビンパッキング問題 74. カッティングストック問題 75. d次元ベクトルビンパッキング問題 76. 変動サイズベクトルパッキング問題 77. 多次元ビンパッキン グ(⻑⽅形詰め込み)問題 78. オンラインビンパッキング問題 79. 確率的ビンパッキング問題 80. 0-1ナップサック問題 81. 整数 ナップサック問題 82. 多制約ナップサック問題 83. Weber問題 84. 複数施設Weber問題(MELOS-GF) 85. k-メディアン問題 86. 容 量制約付き施設配置問題 87. ハブ⽴地問題 88. 容量制約なしr-割当p-ハブ・メディアン問題 89. ロジスティックスネットワーク設 計問題(MELOS) 90. k-センター問題 91. 被覆⽴地問題 92. 経済発注量問題 93. 多品⽬経済発注量問題 94. 新聞売り⼦問題 95. 安全 在庫配置問題(MESSA) 96. 複数エシェロン在庫最適化問題(MESSA) 97. 動的ロットサイズ決定問題 98. 多品⽬動的ロットサイズ決 定問題 99. 多段階多品⽬動的ロットサイズ決定問題(OptLot) 100. シフト最適化問題 101. 業務割り当てを考慮したシフトスケ ジューリング問題(OptShift) 102. ポーフォリオ最適化問題 103. 1機械リリース時刻付き重み付き完了時刻和最⼩化問題 104. 1機械 総納期遅れ最⼩化問題 105. 順列フローショップ問題 106. 資源制約付きスケジューリング問題(OptSeq) 107. ジョブショップスケ ジューリング問題 108. 起動停⽌問題 109. nクイーン問題 110. 重み付き制約充⾜問題(SCOP) 111. 時間割決定問題
  2. 典型的な実際問題例とモデルの抽出 • 任意の⼊⼒データを想定してモデル設計(✗) • 実務で発⽣する可能性がある問題例を想定 (真⾯⽬すぎない & ⼿を抜かない => アート!)

    üできるだけ多くの実際問題例を収集 üデータ分析と可視化 üヒヤリング ü問題例の特徴抽出 ü問題例の特徴に応じた前処理とモデル化 ü実際の問題例より多少⼤きめのランダムデータによるテスト
  3. ヒヤリングあるある Wenger 16999 Swiss Army Knife Giant 現場の⼈は会議室(背広組の前では)では本当のことは⾔わない(飲み会では話す) 滅多におきない例外(⾃分はこう対処したと⾃慢) ⾃分の仕事がなくなるのが怖いので永遠に機能追加

    細かい仕様や数値(⾃分の仕事は⼤変だと⾃慢) 数値的に表現できない条件 (できれば,なるべく,たまには...) 費⽤を増やす⽬的関数(公平のために遠回り?) ...
  4. ヒヤリングとモデル化 • ヒヤリングした条件をすべて「真⾯⽬に」モデル化する(✗) • ヒヤリングとデータを元に「本当に必要な」条件を抽出し,前処理で誤 魔化すか,標準問題に帰着させるか,きちんとモデルに⼊れるかを検討 する 例:配送計画 ü ヒヤリング:店舗によっては時間帯によって作業時間が変化する

    ü 店舗数,作業時間の差,時間帯の種類を聞く(+ データで確認) ü 店舗の分布と時間帯と作業時間の関係を可視化 ü 時間帯の種類が少ない(昼と夜)&店舗数が少ない => 昼・夜の2通りの時間枠で解く ü 作業時間の差が⼤きい => 時間枠を作業時間の短い1通り(夜)に設定 ü 店舗数が多く時間帯が様々 => 時刻依存の移動時間をもつ配送最適化に帰着
  5. 最適化プロジェクトのライフサイクル ⽬標設定 データ処理 モデル作成 デプロイ& 評価 • ターゲット設定 (範囲,粒度,⽬的) ü

    SPRINT • メトリクス設定 ü 応答時間 ü 評価指標 • 必要な資源 ü ⼈(能⼒) ü 予算 • タイムライン ü マイルストーン ü ゴール • データ収集 • データ抽出 • 前処理 ü ⽋損値 ü 外れ値 • データ分析 • 簡易メトリクス計算 • データ可視化 • ダッシュボード • 最適化のための前処理 ü データ集約 ü 数値丸め • 類似研究調査 • 制約抽出 • ⽬的関数抽出 • (ソルバー選択) • 解法開発 • 仮(予備)実験 • ⼩規模実験 • 全体最適化 • What If 分析 • 感度分析 • トレードオフ分析 • 優先順位分析 • UI設計 • UI作成 • デプロイ • テスト • 評価 • モニタリング ü クラウド性能 ü ⼊⼒データ ü 出⼒メトリクス
  6. 現実問題 • ヒヤリング • 現場⾒学 • インターンシップ データ • データ収集

    • データ前処理 • データ可視化 モデル(or アルゴリズム)構築 • 類似問題に対する研究調査 • 100+の最適化問題から類似 の問題を探す • 最適化モデル(or アルゴリ ズム)構築 テスト • 現状(ベースライン)再現 • ⼩規模問題例テスト • 中規模問題例テスト • 本番テスト • What If分析 • 感度分析 • ロバスト性テスト 最適化プロジェクトの流れ
  7. (メタ)ヒューリスティクス Pros • 安価 • ⾼速になりうる • 特定の問題には有効 • 定式化必要なし

    • 複雑な条件でも組み 込める • 問題の構造を利⽤し て設計できる Cons • 厳密解でない • 連続変数に対応できない • モデルがない • 単なる⼿順(処理的IT) の場合もある • 解法設計に時間がかかる • 設計が属⼈化 • メンテがしにくい • 付加条件によっては遅く なる • 付加条件によっては解法 を⼀から設計し直す必要 がある • データが変わると解が悪 化する場合がある 数理最適化 Pros • 厳密解(そうでない ものもある) • モデル(定式化)が ある • メンテがしやすい • (定式化可能な)付 加条件は容易に対応 できる • すぐに導⼊可能 Cons • ⾼価なものでないと遅い 場合もある • 計算時間がかかる場合も ある • 付加条件によっては組み 込めない場合もある ? • データが変わると計算時 間が増加する場合がある (メタ)ヒューリスティクスと数理最適化
  8. 複雑な付加制約をMIPで扱う⽅法 MIP/CPアプローチ MIPで記述しにくい制約 朱 主問題 朱 制約逸脱オラクル 朱 朱 制約に依存した切除平⾯

    ( no good cut ) 解 制約のcheckを(CPで)⾏い 破っている場合には,それを 排除する制約を追加する 朱 主問題 (線形緩和) 分枝価格(列⽣成)法 実⾏可能なパターンを⽣成し,選択を最適化 最適双対変数 朱 ⼦問題 朱 列(パターン)⽣成 複雑な制約をもつパターンを複数⽣成 (ビームサーチや動的最適化) minimize パターンの費⽤ s.t. グローバル制約(e.g., 荷を運ぶ) 資源制約 (e.g., 船の隻数)
  9. 失敗事例から学ぶ (1) • ⽬標設定 ü ソルバーが1兆倍になったという宣伝を鵜呑みにして,何でも瞬時に解けると クライアントに⾔ったが,解けなくて破綻 ü クライアントに瞬時に解けると⾔ったが,実際は無理で破綻 ü

    最⼤2拠点経由の配送と聞いていたが,納期直前で4拠点になり破綻 • データ処理 ü 輸配送費⽤やハンドリング費⽤が収集できず破綻 ü 実データの精度をそのまま利⽤することに固執したため,ソルバーが破綻 ü 超⼤規模データをそのまま⼊れて破綻
  10. 失敗事例から学ぶ (2) • モデリング ü 資源制約ギリギリの最適化をしたら,実運⽤でデータが違って破綻 ü ⾃社で使える唯⼀の解法で解こうとしたが,時間切れで破綻 ü クライアントの⾔うがままに追加条件を⼊れていき,やがて破綻

    ü ヒヤリングを鵜呑みにして細かい条件を⼊れすぎて破綻 ü ⼤学の本業が忙しくなった(もしくは担当学⽣が来なくなった)と⾔って,途 中で終了 • デプロイ・評価 ü データベースからデータを1つずつSQLで吸い上げて時間切れ ü 実運⽤中に問題規模が徐々に増えて解けなくなり,破綻 ü ⼈件費が半分になると営業が⼝を滑らせて,現場が反乱を起こして破綻
  11. 最適化のためのプロジェクト管理 • 最適化(機械学習)のシステム開発は,通常のソフトウェア開発の プロジェクト管理とは異なる ü ⽬標が曖昧(何をどこまでするのかは⼿探りで決める) ü フィージビリティが保証できない(解けるかどうかは,やってみないと分 からない!) ü

    単なる処理の⾃動化(処理的IT)ではなく,頭脳を作る(解析的IT) ü 開発者のスキルによって,かかる時間が⼤きく変わる(6ヶ⽉=> 3⽇) ü スキルの測定が難しい(認定試験と実際問題は違う) • 昔ながらのPMでは経験と知識が不⾜ ü 問題の難しさを判定できない ü はじめに仕様を決めたがる ü 費⽤⾒積もりを時給やコードの⾏数で⾏う • 最適化(機械学習)のプロセスを理解したPMの必要性
  12. データ収集 1. NDA (Non-Disclosure Agreement) を結ぶ 2. 本当の実際の問題例(インスタンス)を複数(できるだけた くさん)もらう 3.

    できれば,時系列順に並んだものを適当な期間分もらう(動 的な問題として扱う必要があるかどうかを⾒分けるため) 4. データが出せない => これ以上やっても無駄なので終了 5. データが不⼗分なら 2. に戻る
  13. 関数としての最適化モデル (基本的枠組み) 問題例 (instance) 最適化 モデル (最適)解 最⼤化(最⼩化) ⽬的関数 subject

    to 制約条件 問題に数値を⼊れたもの 最⼤(最⼩)の⽬的関数値を もつ実⾏可能解 (=制約条件をすべて満たす解)
  14. 関数としての最適化モデル (理論家の枠組み) 問題例(instance) 最適化 モデル (最適)解 or 実⾏不能 or ⾮有界

    制約をすべて満たす解が存在しないこと = 実⾏不能 (infeasible) sup(inf) ⽬的関数 subject to 制約条件 ⽬的関数が無限⼤(⼩)になること = ⾮有界 (unbounded)
  15. 重み付き充⾜可能性問題によるモデル化 問題例 (instance) 最適化 モデル (最適)解 最⼩化 制約逸脱の重み付きペナルティの和 subject to

    ハード制約条件 (絶対に満たす) ソフト制約条件 (破った場合にはペナルティ) 逸脱の重みはどうやって決めるの?
  16. 逸脱の重みが決まる例:シフト最適化 • 時間帯ごとの業務の必要⼈数を「すべて」満たすように,計画期間内のス タッフのシフトと業務を決める • 制約 ü 必要⼈数条件 ü スタッフの希望シフト(⽇,時間帯)

    ü 業務の切り替えペナルティ ü 特別な業務(休憩)を適切な時間帯に⼊れる ü 連続するシフトに対する制約(夜勤の翌⽇の朝勤務の禁⽌) ü … アプローチ : 制約最適化(重み付き制約充⾜問題) ü すべての制約の逸脱を許す ü 制約に対する逸脱ペナルティはユーザーが決める(e.g., 業務切り替えは⼩さく,希 望シフトは⼤きく)or 優先度で処理
  17. 優先順位付き多⽬的最適化のための簡易法 多⽬的最適化問題 朱 朱制約 優先度 1 の⽬的関数 朱 優先度 2

    の⽬的関数 朱 優先度 3 の⽬的関数 制約条件 minimize 朱 優先度 1 の⽬的関数 朱制約 制約条件 朱制約 制約条件 朱 優先度 2 の⽬的関数 優先度 1 の⽬的関数 <= z* 優先度1の⽬的関数 z* 優先度2の⽬的関数 z** 朱制約 制約条件 朱 優先度 3 の⽬的関数 優先度 1 の⽬的関数 <= z* 優先度 2 の⽬的関数 <= z**
  18. 例:配送最適化 • 荷物を「すべて」運びたい • 使える運搬⾞は決まっている ü 顧客の時間枠制約 ü 運搬⾞の容量制約 ü

    顧客と運搬⾞の相性(スキル条件) ü … アプローチ 1: 制約の逸脱を許す(逸脱にペナルティ) アプローチ 2: 「荷物をすべて運ぶ」を緩和 どうしても運べない荷物を残して提⽰(未使⽤運搬⾞も提⽰)
  19. アプローチ 1 の問題点 • 2. の部分(逸脱している制約を⽰す+可視化) が理論家には 難しい (GUIを作りたがらない) •

    制約逸脱の重みを⼤きくしても制約が満たされるとは限らない • 重みを変えて何度も解くので,最適化が⼗分に⾼速であること が必要
  20. アプローチ 2の流れ 1. 解く(荷物の優先度を⼊れて,優先度の⾼いものをなるべく運ぶ) 2. 未配達の荷物と未使⽤の運搬⾞を得る 3. 荷物が未配の理由を調べ,制約を変更 例: ü

    荷物の時間枠が,運搬⾞の稼働時間内に⼊っていない ü 荷量が⼤きすぎて,運搬⾞の容量に⼊らない ü 顧客が要求するスキルが厳しすぎて,運搬⾞が割り当てできない 4. (残された荷物を運搬⾞だけの問題を⽣成し)1. に戻る
  21. アプローチ 2 の問題点と利点 • 問題点 ⼈による制約の変更が必要なので,全⾃動ではない • 利点 ü ユーザーが誤ったデータを⼊れている場合に,それを容易に修正できる

    ü 問題規模が徐々に⼩さくなるので,全体として早く解ける ü 優先度(⾃社の利益)が低い荷物は,翌⽇に回したり,他社(傭⾞)に 任せることができる
  22. 最適化は魔法の杖や銀の弾丸ではない • 最適化は機械学習と違って,実務への応⽤は簡単ではない • ソルバーを買っただけでは何の役にも⽴たない • 過度の期待はよくない • 制約条件の抽出や評価尺度の決定には,ユーザーの協⼒が不可⽋ •

    得られた解はそのままでは使えない(例:⾚字企業だと全部閉鎖と出 る) • モデリングができても解けないことがある(解けるモデルを作ることが 重要) • コンサルや教授の⼝⾞に乗ってはいけない(前者は最適化を理解してい る⼈が少ないし,後者は理論だけでなんでも解けると勘違いしている)
  23. ゴミを⼊れればゴミが出てくる • ⼊れるものがゴミだと出てくるものもゴミ • ⼊⼒を正しいものにするのは,以下が重要: ü ⼊⼒を正しいものに変換するための前処理 ü データの妥当性の検証(⼊⼒時のチェックが理想) ü

    ⼊⼒データの可視化と異常値の検出 ü ⼊⼒担当者への教育と賞罰(⾒返りがなければ誰もアンケートに答えない) ü ⽋損値の補完 ü データの単位の統⼀(例:mとcmとmmの混在) ü 過去のデータとの紐付け(例:旧製品が現在のどの製品に対応するか,顧客 や部⾨の名称変更の紐付けなど)
  24. 動機 • 実際の最適化問題は,動的でかつ不確実である • それらは難しすぎるので,静的かつ確定的な問題であると仮定 して最適化を適⽤している • ⼀⽅,最適化問題例(インスタンス)に関する膨⼤なデータが 蓄積され利⽤可能になっている •

    これらのデータを⽤いて,以下の3点を克服する 1. 動的(過去から未来の時間の流れを考慮した最適化) 2. 不確実性(将来の問題例のデータが不確実性をもつ) 3. 複雑性(最適化問題⾃体が⼤規模で計算量が膨⼤になる)
  25. (A)DP/RL/MPC/MOとの融合の⽐較 動的計画(DP) 近似DP (ADP) RL MPC MO Hybrid モデル あり

    あり なくても良い あり あり 予測 なし なし なし 過去の状態から 予測 過去の問題例と⽂ 脈(付加情報)か ら予測 価値関数 あり ⾏動後状態に対 して定義 あり あり ⾏動後状態と⾏動 前状態に対して定 義 最適化 基本は貪欲 1期の最適化 基本は貪欲 Tree Search, Beam Search, Rolloutを併⽤ 有限期間の最適 化をローリン グ・ホライズン 2次の⾮線形 有限期間の問題を (M)Oで最適化 即時決定とリコー ス変数で確率的最 適化 価値関数の近似 の⼯夫 状態の特徴に対 する区分的線形 関数で近似 区分的線形,NN, 決定⽊をMOに組み 込む
  26. 実務的な枠組み ML+(M)O+MPC+RL (M)O 予測 問題例⽣成 Solution 訓練データ Period Instance 𝑡

    − 1 𝑡 𝑡 + 1 𝑡 + 2 ⋯ 𝑇 𝑇 + 1 ⋯ (𝐼! "!#, $ 𝐼!$% "!#, $ 𝐼!$& "!#, … , $ 𝐼' "!#) (𝑋! "!#, 𝑋!$% "!#, 𝑋!$& "!#, … , 𝑋' "!#) ($ 𝐼!$% , $ 𝐼!$& , … , $ 𝐼' , ⋯ ) ML ML (MIPlearn) ML (MIPlearn) State 𝐼( (𝑖 = ⋯ , 𝑡 − 1, 𝑡) (𝑋( "(#, 𝑋($% "(#, 𝑋($& "(#, ⋯ ) (𝑖 = ⋯ , 𝑡 − 1) (𝐼( "(#, $ 𝐼($% "(#, $ 𝐼($& "(#, ⋯ ) 固定制約 部分解 近似解 𝑆!)% 𝑆( ML (RL) V 𝑆( 𝑆'$% 𝑚𝑎𝑥 𝑣 𝑥 + 𝑉 𝑆'$% 𝑋! "!#, 𝑋!$% "!#, 𝑋!$& "!#, … , 𝑋'(% "!# ≈ 𝑋! "!(%#, 𝑋!$% "!(%#, 𝑋!$& "!(%#, … , 𝑋'(% "!(%# MPC 状態 価値関数
  27. 意思決定の流れ 問題例(顧客,需要) Period(⽇) 𝑡 − 1 𝑡 𝑡 + 1

    ⽂脈(補助データ) 過去のデータで訓練 ML/DL 当⽇の問題例判明 当⽇の⽂脈から,問題例 (シナリオ)を複数⽣成 ・・・ シナリオ(確率的)最適化(過去の解も利⽤) で即時決定(e.g., トラック台数) 解 最適化(過去の解も利⽤し,近いものを探す) でリコース(待機)決定(e.g., ルート)
  28. 𝐹( から 𝐼( を⽣成 (𝑖 = 𝑡 + 1, …

    , 𝑇) 過去の問題例で訓練し,未来の問題例を⽣成 問題例(顧客) Period(⽇) 𝑡 − 1 𝑡 𝑡 + 1 ⋯ 訓練データ 𝐹( , 𝐼( (𝑖 = ⋯ , 𝑡 − 1, 𝑡) ⽂脈(補助データ) 曜⽇,天候など ML/DL 𝐹( (𝑖 = ⋯ , 𝑡 − 1, 𝑡) 𝐼( (𝑖 = ⋯ , 𝑡 − 1, 𝑡) 問題例(顧客) 損出関数 = 最適輸送距離 問題例をランダムに複数⽣成
  29. 解の学習(MIPlearn+) • 過去の問題例と解の組で訓練 • 問題例を⼊⼒し,解の「情報」を得る • 情報を⽤いて,最適化の⼿助け(⾼速化)をする 機械学習 機械学習 𝐼(()

    (𝑖 = 1, … , 𝑚) X(() (𝑖 = 1, … , 𝑚) 問題例 解 訓練データ 新しい問題例 情報 最適解 𝐼 Optimization Voice “Strategy”: 等式になる制約 固定される変数 => 解を簡単に⽣成可能 MIPlearn 満たされるべき制約 => 制約 部分解 => 解ヒントや初期解
  30. 状態と価値関数 𝑡 − 1 𝑡 𝑡 + 1 𝑡 +

    2 ⋯ 状態(期末在庫量) 𝑆!)% 状態 S ML/DL 価値関数 V 報酬関数 r = -(発注費⽤+在庫費⽤+品切れ費⽤) 𝑆! TD学習(γは割引率,αは学習率)