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

数理最適化ことはじめ / Introduction to Mathematical Optimization

数理最適化ことはじめ / Introduction to Mathematical Optimization

本スライドでは、数理最適化を概観し、基本的な問題とその解き方を分かりやすく解説することを目標にしています。数理最適化に興味を持っていただければ嬉しいです。

【目次】
1 章 数理最適化とは(p.2~20)
2 章 連続最適化問題(p.21~133)
3 章 離散最適化問題(p.134~238)
4 章 まとめ(p.239~248)

Ba868bdf0f1f87ac2c5b0a6b33119e35?s=128

E869120

March 29, 2022
Tweet

More Decks by E869120

Other Decks in Programming

Transcript

  1. 米田 優峻(E869120) 最終更新日 2022/3/30 数理最適化ことはじめ

  2. 248 1-0 自己紹介 2 米田 優峻(よねだ まさたか) • 2002年生まれ •

    2015年筑波大学附属駒場中学校入学 • 2021年東京大学入学 主な実績 • AtCoder には E869120 として参加(レッドコーダー) • 国際情報オリンピック‘18,‘19,‘20 金メダル • 著書「アルゴリズム×数学」2 万部突破
  3. 248 1-0 このスライドについて • 数理最適化は、様々な問題を解決するうえでとても大切なツールです。 • 本スライドでは、数理最適化を概観し、基本的な問題とその解き方を分かり やすく解説することを目標にしています。 • 本スライドによって、数理最適化に興味を持っていただければ嬉しいです。

    3 注意事項 本スライドは入門的な教材であるため、すべてのアルゴリズムを説明しているわけではありませ ん。より深く知りたい人は、参考文献(本スライドの巻末)などで調べてみてください。
  4. 248 1-0 目次 4 1 章 2 章 1.0 はじめに

    1.1 数理最適化とは 1.2 連続最適化と離散最適化 2.0 線形計画問題とは 2.1 単体法のイメージ 2.2 単体法の計算過程 2.3 線形計画の応用例 2.4 その他の連続最適化問題 ・・・・・・・・・ ・・・・・・・・・・・ ・・・・・・ ・・ 2 4 5 17 ・・・・・ ・・・・・ ・・・・・ ・・・・・ ・・ 21 36 64 96 119 3 章 3.0 離散最適化とは 3.1 解ける問題に落とす 3.2 山登り法と焼きなまし法 3.3 近似アルゴリズム 3.4 整数計画問題 ・・・・ ・・ ・・・ ・・・・・ 134 140 175 205 221 4 章 4.0 まとめ 4.1 参考文献 ・・・・・・・・ ・・・・・・・ 239 247 目次
  5. 第 1 章 数理最適化とは

  6. 248 1-1 数理最適化とは? 6 与えられた条件を満たす中で 最も良い解(最適解)を求める問題を 数理最適化問題 といいます

  7. 248 1-1 最適化問題の例 7 たとえば、10×10 の正方形に 6 個の円を敷き詰める問題を考えま しょう。できるだけ直径が大きくなるようにしたいです。 10

    10 直径 3.33 普通にやると…
  8. 248 1-1 最適化問題の例 8 たとえば、10×10 の正方形に 6 個の円を敷き詰める問題を考えま しょう。できるだけ直径が大きくなるようにしたいです。 10

    10 直径 3.33 普通にやると… 10 10 直径 3.75 最適解! (これを求めたい)
  9. 248 1-1 最適化問題の例 9 たとえば、10×10 の正方形に 6 個の円を敷き詰める問題を考えま しょう。できるだけ直径が大きくなるようにしたいです。 10

    10 直径 3.33 普通にやると… 10 10 直径 3.75 最適解! (これを求めたい) このように、目的関数の値(スコア)を 最大(or 最小)にする答えを求める問題を 数理最適化問題といいます
  10. 248 1-1 最適化問題の例 10 他にもどのような最適化問題が あるのでしょうか?

  11. 248 1-1 事例 1:最短経路問題 11 問題概要 目的関数(スコア) 始点から終点まで、できる限り短い時間 で行く方法を求める問題 東京

    新宿 渋谷 上野 羽田 空港 品川 5分 5分 17分 13分 5分 12分 11分 19分 8分 池袋 行くのにかかった時間(分)
  12. 248 1-1 事例 2:カロリー最大化 12 問題概要 目的関数(スコア) 500 円以内の買い物で、できる限り多く のカロリーを得る方法を求める問題

    摂取したカロリー(kcal) 200円 160kcal 150円 240kcal 300円 400kcal 食パンとラーメンで 最適解 640kcal が得られます
  13. 248 1-1 事例 3:工場の売上最大化 13 問題概要 目的関数(スコア) できる限り多くの売上を得るように、製 品を作る方法を求める問題 売上金額(万円)

    ×1kg 製品A 1kg当たり 製品B 1kg当たり ×3kg 在庫量 ×4kg ×2kg ×1kg ×1kg 製品 A を 1kg、製品 B を 2kg 作るのが最適 (売上は 20 万円)
  14. 248 1-1 事例 4:箱詰めの問題 14 問題概要 目的関数(スコア) 重さ 10kg まで入れられる箱がいくつか

    あり、出来るだけ少ない数の箱を使って 荷物を詰める 必要な箱の数(個数) 9 7 3 6 4 4 3 2 2 3 3 4 4 6 7 9
  15. 248 1-1 事例 5:最短時間で都市を巡る 15 問題概要 目的関数(スコア) できるだけ短い時間で、N 個の都市をす べて一度ずつ巡る方法を求める問題

    めぐるのにかかる時間(分) 1 2 3 6 7 4 5 2 分 2 分 4 分 2 分 1 分 4 分 3 分
  16. 248 1-1 事例 6:最適なクラス分け 16 問題概要 目的関数(スコア) 仲が悪い組が同じクラスにならないよう に、同じ人数のクラス 2

    つに分ける 同じクラスにいる 「仲が悪い組」の数 1 3 4 2 5 7 8 2 組 1 組 6 同じクラスの 仲の悪い組
  17. このように、皆さんの生活も 数理最適化の恩恵を受けています。 ※画像は日本オペレーションズ・リサーチ学会「ORを探せ」より引用

  18. 248 1-2 数理最適化問題の分類 最適化問題は主に 2 つに分類されます 連続最適化問題 離散最適化問題 A の生産量

    B の生産量 品物 A の個数 品物 B の個数 条件を満たす範囲 条件を満たす解 18 変数が連続的な実数である 「1.5kg 生産する」などが許される 変数がとびとび(整数など)である 「1.5 個買う」などが許されない
  19. 248 1-2 変数がとびとび(整数など)である 「1.5 個買う」などが許されない 数理最適化問題の分類 最適化問題は主に 2 つに大別されます 連続最適化問題

    離散最適化問題 A の生産量 B の生産量 品物 A の個数 品物 B の個数 変数が連続的な実数である 「1.5kg 生産する」などが許される 条件を満たす範囲 条件を満たす解 19 代表的な問題 • 線形計画問題(事例 3:売上最大化) • 非線形計画問題(円の敷詰め問題など) 2 章で扱います
  20. 248 1-2 変数が連続的な実数である 「1.5kg 生産する」などが許される 数理最適化問題の分類 最適化問題は主に 2 つに大別されます 連続最適化問題

    離散最適化問題 A の生産量 B の生産量 品物 A の個数 品物 B の個数 変数がとびとび(整数など)である 「1.5 個買う」などが許されない 条件を満たす範囲 条件を満たす解 20 代表的な問題 • 最短経路問題(事例 1) • ナップザック問題(事例 2) • ビンパッキング問題(事例 4) • 巡回セールスマン問題(事例 5) 3 章で扱います
  21. 第 2 章 連続最適化問題

  22. 248 2-0 第 2 章について • 本章では、代表的な連続最適化問題である線形計画問題をメイン で扱います。 • 最後に、それ以外の連続最適化問題を少しだけ触れます。

    22
  23. 248 2-0 線形計画問題とは 23 制約条件とスコア※ が一次関数(線形 関数)で与えられる最適化問題を 線形計画問題 といいます ※スコアは目的関数ともいう。

    • 2𝑥1 + 3𝑥2 ≤ 8 • 4𝑥1 + 3𝑥2 ≤ 10 を満たす中で 𝑥1 + 𝑥2 の最大値は? ※ただし、𝑥1 , 𝑥2 は非負
  24. 248 2-0 線形計画問題とは 24 制約条件とスコア※ が一次関数(線形 関数)で与えられる最適化問題を 線形計画問題 といいます ※スコアは目的関数ともいう。

    • 2𝑥1 + 3𝑥2 ≤ 8 • 4𝑥1 + 3𝑥2 ≤ 10 を満たす中で 𝑥1 + 𝑥2 の最大値は? ※ただし、𝑥1 , 𝑥2 は非負 まずはこの問題を解いてみよう!
  25. 248 2-0 線形計画問題とは 25 𝑥1 𝑥2 • 2𝑥1 + 3𝑥2

    ≤ 8 • 4𝑥1 + 3𝑥2 ≤ 10 を満たす中で 𝑥1 + 𝑥2 の最大値は? 1 2 3 4 1 2 3 4 グラフ を描いて みよう ※ただし、𝑥1 , 𝑥2 は非負
  26. 248 2-0 線形計画問題とは 26 𝑥1 𝑥2 1 2 3 4

    1 2 3 4 2𝑥1 + 3𝑥2 = 8 を追加 条件を 満たす領域 • 2𝑥1 + 3𝑥2 ≤ 8 • 4𝑥1 + 3𝑥2 ≤ 10 を満たす中で 𝑥1 + 𝑥2 の最大値は? ※ただし、𝑥1 , 𝑥2 は非負 グラフ を描いて みよう
  27. 248 2-0 線形計画問題とは 27 𝑥1 𝑥2 1 2 3 4

    1 2 3 4 4𝑥1 + 3𝑥2 = 10 を追加 条件を 満たす領域 • 2𝑥1 + 3𝑥2 ≤ 8 • 4𝑥1 + 3𝑥2 ≤ 10 を満たす中で 𝑥1 + 𝑥2 の最大値は? ※ただし、𝑥1 , 𝑥2 は非負 グラフ を描いて みよう
  28. 248 2-0 線形計画問題とは 28 𝑥1 𝑥2 1 2 3 4

    1 2 3 4 B D C A • 2𝑥1 + 3𝑥2 ≤ 8 • 4𝑥1 + 3𝑥2 ≤ 10 を満たす中で 𝑥1 + 𝑥2 の最大値は? ※ただし、𝑥1 , 𝑥2 は非負 グラフ を描いて みよう 重要な考察 2 直線の交点 A~D の どれかが最適解
  29. 248 2-0 線形計画問題とは 29 𝑥1 𝑥2 1 2 3 4

    1 2 3 4 B D C A スコア 𝑥1 + 𝑥2 = 5 • 2𝑥1 + 3𝑥2 ≤ 8 • 4𝑥1 + 3𝑥2 ≤ 10 を満たす中で 𝑥1 + 𝑥2 の最大値は? ※ただし、𝑥1 , 𝑥2 は非負 グラフ を描いて みよう 重要な考察 理由:スコアを下げていくと分かる 2 直線の交点 A~D の どれかが最適解
  30. 248 2-0 線形計画問題とは 30 𝑥1 𝑥2 1 2 3 4

    1 2 3 4 B D C A スコア 𝑥1 + 𝑥2 = 4 • 2𝑥1 + 3𝑥2 ≤ 8 • 4𝑥1 + 3𝑥2 ≤ 10 を満たす中で 𝑥1 + 𝑥2 の最大値は? ※ただし、𝑥1 , 𝑥2 は非負 グラフ を描いて みよう 重要な考察 理由:スコアを下げていくと分かる 2 直線の交点 A~D の どれかが最適解
  31. 248 2-0 線形計画問題とは 31 𝑥1 𝑥2 1 2 3 4

    1 2 3 4 B D A スコア 𝑥1 + 𝑥2 = 3 C 交点で初めて 接する! • 2𝑥1 + 3𝑥2 ≤ 8 • 4𝑥1 + 3𝑥2 ≤ 10 を満たす中で 𝑥1 + 𝑥2 の最大値は? ※ただし、𝑥1 , 𝑥2 は非負 グラフ を描いて みよう 重要な考察 理由:スコアを下げていくと分かる 2 直線の交点 A~D の どれかが最適解
  32. 248 2-0 線形計画問題とは 32 この考察を使うと、交点を全 探索するだけで解ける 座標 スコア 交点 A

    (0, 0) 0 交点 B 0, 8/3 8/3 交点 C (1, 2) 3 交点 D (5/2, 0) 5/2 最適解 𝑥1 𝑥2 1 2 3 4 1 2 3 4 B D C A
  33. 248 2-0 線形計画問題とは 33 この考察を使うと、交点を全 探索するだけで解ける 座標 スコア 交点 A

    (0, 0) 0 交点 B 0, 8/3 8/3 交点 C (1, 2) 3 交点 D (5/2, 0) 5/2 最適解 𝑥1 𝑥2 1 2 3 4 1 2 3 4 B D C A 問題設定は 分かりましたか?
  34. 248 2-0 線形計画問題の定式化 34 問題 変数(次元)が 𝑛 個、制約条件が 𝑚 個のとき

    𝑐1 𝑥1 + 𝑐2 𝑥2 + ⋯ + 𝑐𝑛 𝑥𝑛 の最大値を求めよ 条件 • 𝑎1,1 𝑥1 + 𝑎1,2 𝑥2 + ⋯ + 𝑎1,𝑛 𝑥𝑛 ≤ 𝑏1 : • 𝑎𝑚,1 𝑥1 + 𝑎𝑚,2 𝑥2 + ⋯ + 𝑎𝑚,𝑛 𝑥𝑛 ≤ 𝑏𝑚 • (𝑥1 , 𝑥2 , … , 𝑥𝑛 は負の数ではない)
  35. 248 2-0 線形計画問題のイメージ 35 文字の種類が多くて混乱すると思うので、具体例を挙げます 以下の条件を満たす中で、𝑥1 + 2𝑥2 + 3𝑥3

    の最大値は? • 4𝑥1 + 3𝑥2 + 5𝑥3 ≤ 25 • 2𝑥1 + 9𝑥2 + 2𝑥3 ≤ 26 • 7𝑥1 + 7𝑥2 + 7𝑥3 ≤ 42 • 8𝑥1 + 9𝑥2 + 9𝑥3 ≤ 53 制約条件の数 𝑚 = 4 変数の数 𝑛 = 3 こういう問題を 高速に解きたい ※ただし、𝑥1 , 𝑥2 , 𝑥3 は非負
  36. 単体法のイメージ 単体法の計算過程 線形計画問題の応用例 その他の連続最適化問題 線形計画問題とは 2.0 2.1 2.2 2.3 2.4

  37. 248 2-1 線形計画問題を解くには…? まず、「交点の位置」を全探索する方針が考えられる 変数が 2 個、制約条件が 2 個の場合は…? 37

    1 2 3 4 5 6 交点は 6 通り
  38. 248 2-1 線形計画問題を解くには…? まず、「交点の位置」を全探索する方針が考えられる 変数が 2 個、制約条件が 3 個の場合は…? 38

    交点は 10 通り
  39. 248 2-1 線形計画問題を解くには…? まず、「交点の位置」を全探索する方針が考えられる 変数が 2 個、制約条件が 4 個の場合は…? 39

    交点は 15 通り
  40. 248 2-1 線形計画問題を解くには…? まず、「交点の位置」を全探索する方針が考えられる 変数が 2 個、制約条件が 4 個の場合は…? 40

    交点は 15 通り 変数と制約条件が少なければ コンピュータならば一瞬で探索できるが…?
  41. 248 2-1 線形計画問題を解くには…? • 変数が 𝑛 個、制約条件が 𝑚 個の場合を考える •

    𝑥𝑖 = 0 などを含めたら 𝑛 + 𝑚 本の直線(or 平面)があるが、𝑛 次元なの でこのうち 𝑛 本を選んだときの共通部分が点になる 41 • 3𝑥1 + 4𝑥2 ≤ 8 • 5𝑥1 + 6𝑥2 ≤ 20 • 7𝑥1 + 8𝑥2 ≤ 30 • 3𝑥1 + 4𝑥2 ≤ 8 • 5𝑥1 + 6𝑥2 ≤ 20 • 7𝑥1 + 8𝑥2 ≤ 30 • 𝑥1 = 0 • 𝑥2 = 0 5 個の直線のうち 2 個を選べば交点 ※ 𝑥1 , 𝑥2 は非負
  42. 248 2-1 線形計画問題を解くには…? 42 • 変数が 𝑛 個、制約条件が 𝑚 個の場合を考える

    • 𝑥𝑖 = 0 などを含めたら 𝑛 + 𝑚 本の直線(or 平面)があるが、𝑛 次元なの でこのうち 𝑛 本を選んだときの共通部分が点になる • すなわち、交点の数は二項係数 𝐶(𝑛 + 𝑚, 𝑛) 個となる
  43. 248 2-1 線形計画問題を解くには…? 43 • 変数が 𝑛 個、制約条件が 𝑚 個の場合を考える

    • 𝑥𝑖 = 0 などを含めたら 𝑛 + 𝑚 本の直線(or 平面)があるが、𝑛 次元なの でこのうち 𝑛 本を選んだときの共通部分が点になる • すなわち、交点の数は二項係数 𝐶(𝑛 + 𝑚, 𝑛) 個となる (𝑛, 𝑚) (10, 10) (20, 20) (30, 30) 交点の数 184,756 かかる時間 一瞬 PC の計算速度は 10~100億回/秒
  44. 248 2-1 線形計画問題を解くには…? 44 (𝑛, 𝑚) (10, 10) (20, 20)

    (30, 30) 交点の数 184,756 137,846,528,820 かかる時間 一瞬 2 分 PC の計算速度は 10~100億回/秒 • 変数が 𝑛 個、制約条件が 𝑚 個の場合を考える • 𝑥𝑖 = 0 などを含めたら 𝑛 + 𝑚 本の直線(or 平面)があるが、𝑛 次元なの でこのうち 𝑛 本を選んだときの共通部分が点になる • すなわち、交点の数は二項係数 𝐶(𝑛 + 𝑚, 𝑛) 個となる
  45. 248 2-1 線形計画問題を解くには…? 45 (𝑛, 𝑚) (10, 10) (20, 20)

    (30, 30) 交点の数 184,756 137,846,528,820 118,264,581,564,861,424 かかる時間 一瞬 2 分 3 年 PC の計算速度は 10~100億回/秒 • 変数が 𝑛 個、制約条件が 𝑚 個の場合を考える • 𝑥𝑖 = 0 などを含めたら 𝑛 + 𝑚 本の直線(or 平面)があるが、𝑛 次元なの でこのうち 𝑛 本を選んだときの共通部分が点になる • すなわち、交点の数は二項係数 𝐶(𝑛 + 𝑚, 𝑛) 個となる
  46. 248 2-1 線形計画問題を解くには…? 46 (𝑛, 𝑚) (10, 10) (20, 20)

    (30, 30) 交点の数 184,756 137,846,528,820 118,264,581,564,861,424 かかる時間 一瞬 2 分 3 年 PC の計算速度は 10~100億回/秒 • 変数が 𝑛 個、制約条件が 𝑚 個の場合を考える • 𝑥𝑖 = 0 などを含めたら 𝑛 + 𝑚 本の直線(or 平面)があるが、𝑛 次元なの でこのうち 𝑛 本を選んだときの共通部分が点になる • すなわち、交点の数は二項係数 𝐶(𝑛 + 𝑚, 𝑛) 個となる 30 変数まで増えると、コンピュータでも無理! ※画像は「フカシギの数え方」より引用
  47. 248 2-1 単体法のイメージ 47 そこで、次のような 単体法 を使うと、効率的に探索が行える。 単体法の手続き 1. 初期解を適当にセットする※

    [例: 𝑥1 , 𝑥2 , … , 𝑥𝑛 = (0, 0, … , 0)] 2. 隣接する「交点」のうち、解が改善するものを適当に選んで移動 3. 解が改善する方向がなくなったら、これが最適解 ※初期解は、𝑚 個の制約条件すべてを満たしていることが望ましい。
  48. 248 2-1 単体法のイメージ(具体例) 48 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 𝑥1 𝑥2

    1 2 3 4 1 2 3 例:𝑥1 + 𝑥2 の最大値を求めたい! 現 初期解を (0, 0) にセット
  49. 248 2-1 単体法のイメージ(具体例) 49 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 𝑥1 𝑥2

    1 2 3 4 1 2 3 現 + + どちらに行って も改善する 例:𝑥1 + 𝑥2 の最大値を求めたい!
  50. 248 2-1 単体法のイメージ(具体例) 50 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 𝑥1 𝑥2

    1 2 3 4 1 2 3 現 とりあえず上へ 𝑥1 , 𝑥2 = (0.0, 3.3) 例:𝑥1 + 𝑥2 の最大値を求めたい!
  51. 248 2-1 例:𝑥1 + 𝑥2 の最大値を求めたい! 単体法のイメージ(具体例) 51 適当に初期解をセット 隣接する交点へ移動

    解が改善しなければ これが最適解 𝑥1 𝑥2 1 2 3 4 1 2 3 現 - + 右に行かないと 解が改善しない
  52. 248 2-1 単体法のイメージ(具体例) 52 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 𝑥1 𝑥2

    1 2 3 4 1 2 3 現 𝑥1 , 𝑥2 = (1.5, 3.2) 例:𝑥1 + 𝑥2 の最大値を求めたい!
  53. 248 2-1 単体法のイメージ(具体例) 53 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 𝑥1 𝑥2

    1 2 3 4 1 2 3 現 + - 右に行かないと 解が改善しない 例:𝑥1 + 𝑥2 の最大値を求めたい!
  54. 248 2-1 単体法のイメージ(具体例) 54 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 𝑥1 𝑥2

    1 2 3 4 1 2 3 現 𝑥1 , 𝑥2 = (3.0, 2.5) 例:𝑥1 + 𝑥2 の最大値を求めたい!
  55. 248 2-1 単体法のイメージ(具体例) 55 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 𝑥1 𝑥2

    1 2 3 4 1 2 3 現 どちらに行っても 改善できない - - 例:𝑥1 + 𝑥2 の最大値を求めたい!
  56. 248 2-1 単体法のイメージ(具体例) 56 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 𝑥1 𝑥2

    1 2 3 4 1 2 3 現 どちらに行っても 改善できない - - 例:𝑥1 + 𝑥2 の最大値を求めたい! 最適解は 𝑥1 , 𝑥2 = (3.0, 2.5) 最大スコアは 5.5 三次元 の場合はどうなるか?
  57. 248 2-1 単体法のイメージ(具体例) 57 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 例:𝑥1 +

    𝑥2 + 𝑥3 の最大値を求めたい! 1 𝑥1 𝑥2 𝑥3 1 1 𝑥1 ≤ 1 𝑥3 ≤ 1 𝑥2 ≤ 1 現
  58. 248 2-1 単体法のイメージ(具体例) 58 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 1 𝑥1

    𝑥2 𝑥3 1 1 現 + 改善する方向を 1 つ選び移動 例:𝑥1 + 𝑥2 + 𝑥3 の最大値を求めたい!
  59. 248 2-1 単体法のイメージ(具体例) 59 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 1 𝑥1

    𝑥2 𝑥3 1 1 現 + 改善する方向を 1 つ選び移動 例:𝑥1 + 𝑥2 + 𝑥3 の最大値を求めたい!
  60. 248 2-1 単体法のイメージ(具体例) 60 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 1 𝑥1

    𝑥2 𝑥3 1 1 現 + 改善する方向を 1 つ選び移動 例:𝑥1 + 𝑥2 + 𝑥3 の最大値を求めたい!
  61. 248 2-1 単体法のイメージ(具体例) 61 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 1 𝑥1

    𝑥2 𝑥3 1 1 現 これ以上 改善できない - - - 例:𝑥1 + 𝑥2 + 𝑥3 の最大値を求めたい!
  62. 248 2-1 単体法のイメージ(具体例) 62 適当に初期解をセット 隣接する交点へ移動 解が改善しなければ これが最適解 1 𝑥1

    𝑥2 𝑥3 1 1 現 これ以上 改善できない - - - 例:𝑥1 + 𝑥2 + 𝑥3 の最大値を求めたい! 最適解は 𝑥1 , 𝑥2 , 𝑥3 = (1, 1, 1) 最大スコアは 3 単体法のイメージはつかめましたか?
  63. 248 2-1 補足:上手くいく理由 • なお、「解が改善しなくなったら最適解」である理由は、条件を 満たす領域が凸(トツ)になることから説明できる • たとえば以下のような領域になることは絶対にあり得ない 63 条件を

    満たす領域 条件を満たす
  64. 単体法のイメージ 単体法の計算過程 線形計画問題の応用例 その他の連続最適化問題 線形計画問題とは 2.0 2.1 2.2 2.3 2.4

  65. 248 2-2 現在のなやみ • 単体法のイメージは分かったが…? • どうやって「隣接する交点」の位置が求められるのか? • 具体的にどうやって実装すればいいのか? 65

  66. 248 2-2 現在のなやみ • 単体法のイメージは分かったが…? • どうやって「隣接する交点」の位置が求められるのか? • 具体的にどうやって実装すればいいのか? 本節では、具体的な計算方法を解説します

    ※注意:講義全体の中で数式が一番多く出てきます。 数学が苦手な人は飛ばしても構いません。 66
  67. 248 2-2 単体法の計算:ステップ 1 67 ステップ 1 スラック変数の導入

  68. 248 2-2 単体法の計算:ステップ 1 68 𝑥1 𝑥2 1 2 3

    4 1 2 3 最大化 数式 𝑥1 + 𝑥2 条件 2𝑥1 + 3𝑥2 ≤ 8 4𝑥1 + 3𝑥2 ≤ 10 ※ 𝑥1 , 𝑥2 は非負 グラフ 以下のような線形計画問題を解きたいとします
  69. 248 2-2 単体法の計算:ステップ 1 69 𝑥1 𝑥2 1 2 3

    4 1 2 3 最大化 数式 𝑥1 + 𝑥2 条件 2𝑥1 + 3𝑥2 + 𝑥3 = 8 4𝑥1 + 3𝑥2 + 𝑥4 = 10 ※ 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 は非負 グラフ 以下のような線形計画問題を解きたいとします まず、スラック変数(余裕を表す)を導入して等式にします 負になったらダメ
  70. 248 2-2 単体法の計算:ステップ 2 70 ステップ 2 実際に計算を進める(1 回目)

  71. 248 2-2 単体法の計算:ステップ 2 71 𝑥1 𝑥2 1 2 3

    4 1 2 3 最大化 数式 𝑥1 + 𝑥2 条件 2𝑥1 + 3𝑥2 + 𝑥3 = 8 4𝑥1 + 3𝑥2 + 𝑥4 = 10 ※ 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 は非負 グラフ 初期位置を原点 𝑥1 = 0, 𝑥2 = 0 に設定し、隣接交点に動かしましょう 現 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 = (0, 0, 8, 10)
  72. 248 2-2 単体法の計算:ステップ 2 72 最大化 数式 𝑥1 + 𝑥2

    条件 ※ 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 は非負 計算しやすいように、𝑥1 , 𝑥2 を右辺に移動します なお、右辺にあるゼロのものを非基底変数、そうでないものを基底変数といいます 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2 非基底変数 𝑥1 𝑥2 1 2 3 4 1 2 3 グラフ 現 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 = (0, 0, 8, 10)
  73. 248 2-2 単体法の計算:ステップ 2 73 𝑥1 𝑥2 1 2 3

    4 1 2 3 最大化 数式 𝑥1 + 𝑥2 条件 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2 ※ 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 は非負 グラフ 現在右辺の 𝑥1 , 𝑥2 はゼロですが、どちらを増やしてもスコアは上がります ですので、適当に 𝑥1 を選んでギリギリまで増やすことを考えます 現 + 𝑥1 増加
  74. 248 2-2 単体法の計算:ステップ 2 74 最大化 数式 𝑥1 + 𝑥2

    条件 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2 ※ 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 は非負 𝑥2 を固定して 𝑥1 だけを増やすと、𝑥1 = 2.5 まで増えます ※ 2 番目の条件がボトルネック 𝑥1 𝑥2 1 2 3 4 1 2 3 グラフ 現 + 𝑥1 増加
  75. 248 2-2 単体法の計算:ステップ 2 75 𝑥1 𝑥2 1 2 3

    4 1 2 3 最大化 数式 𝑥1 + 𝑥2 条件 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2 ※ 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 は非負 グラフ 点を移動させると 𝑥4 = 0 になるので、非基底変数が {𝑥2 , 𝑥4 } に変わります 現 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 = (2.5, 0, 3, 0)
  76. 248 2-2 単体法の計算:ステップ 2 76 点を移動させると 𝑥4 = 0 になるので、非基底変数が

    {𝑥2 , 𝑥4 } に変わります ですので、数式の右辺も 𝑥2 , 𝑥4 になるように変えます
  77. 248 2-2 単体法の計算:ステップ 2 77 点を移動させると 𝑥4 = 0 になるので、非基底変数が

    {𝑥2 , 𝑥4 } に変わります ですので、数式の右辺も 𝑥2 , 𝑥4 になるように変えます 数式 最大化 𝑥1 + 𝑥2 条件 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2
  78. 248 2-2 単体法の計算:ステップ 2 78 点を移動させると 𝑥4 = 0 になるので、非基底変数が

    {𝑥2 , 𝑥4 } に変わります ですので、数式の右辺も 𝑥2 , 𝑥4 になるように変えます 数式 まずは新しい 𝑥4 を 右辺に持ってきます 最大化 条件 𝑥1 + 𝑥2 𝑥3 = 8 − 2𝑥1 − 3𝑥2 4𝑥1 = 10 − 3𝑥2 − 𝑥4 数式 最大化 𝑥1 + 𝑥2 条件 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2
  79. 248 2-2 単体法の計算:ステップ 2 79 点を移動させると 𝑥4 = 0 になるので、非基底変数が

    {𝑥2 , 𝑥4 } に変わります ですので、数式の右辺も 𝑥2 , 𝑥4 になるように変えます 数式 数式 最大化 𝑥1 + 𝑥2 条件 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2 𝑥1 + 𝑥2 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥1 = 2.5 − 0.75𝑥2 − 0.25𝑥4 左辺の係数を 1 にします 最大化 条件
  80. 248 2-2 単体法の計算:ステップ 2 80 点を移動させると 𝑥4 = 0 になるので、非基底変数が

    {𝑥2 , 𝑥4 } に変わります ですので、数式の右辺も 𝑥2 , 𝑥4 になるように変えます 数式 数式 最大化 𝑥1 + 𝑥2 条件 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2 最大化 条件 𝑥1 を代入 𝑥3 = 8 − 2(2.5 − 0.75𝑥2 − 0.25𝑥4 ) − 3𝑥2 𝑥1 = 2.5 − 0.75𝑥2 − 0.25𝑥4 (2.5 − 0.75𝑥2 − 0.25𝑥4 ) + 𝑥2 𝑥1 を代入
  81. 248 2-2 単体法の計算:ステップ 2 81 点を移動させると 𝑥4 = 0 になるので、非基底変数が

    {𝑥2 , 𝑥4 } に変わります ですので、数式の右辺も 𝑥2 , 𝑥4 になるように変えます 数式 数式 最大化 𝑥1 + 𝑥2 条件 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2 最大化 条件 𝑥3 = 8 − (5 − 1.5𝑥2 − 0.5𝑥4 ) − 3𝑥2 𝑥1 = 2.5 − 0.75𝑥2 − 0.25𝑥4 (2.5 − 0.75𝑥2 − 0.25𝑥4 ) + 𝑥2
  82. 248 2-2 単体法の計算:ステップ 2 82 点を移動させると 𝑥4 = 0 になるので、非基底変数が

    {𝑥2 , 𝑥4 } に変わります ですので、数式の右辺も 𝑥2 , 𝑥4 になるように変えます 数式 数式 最大化 𝑥1 + 𝑥2 条件 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2 最大化 条件 𝑥3 = 3 − 1.5𝑥2 + 0.5𝑥4 𝑥1 = 2.5 − 0.75𝑥2 − 0.25𝑥4 2.5 + 0.25𝑥2 − 0.25𝑥4 式を整理 式を整理
  83. 248 2-2 単体法の計算:ステップ 3 83 ステップ 3 実際に計算を進める(2 回目)

  84. 248 2-2 単体法の計算:ステップ 3 84 最大化 数式 条件 ※ 𝑥1

    , 𝑥2 , 𝑥3 , 𝑥4 は非負 現在の状況は以下のようになります スコアが増えるように(現在ゼロの)𝑥2 を増やすことを考えましょう 2.5 + 0.25𝑥2 − 0.25𝑥4 𝑥3 = 3 − 1.5𝑥2 + 0.5𝑥4 𝑥1 = 2.5 − 0.75𝑥2 − 0.25𝑥4 𝑥1 𝑥2 1 2 3 4 1 2 3 グラフ 現 + 𝑥2 増加
  85. 248 2-2 単体法の計算:ステップ 3 85 最大化 数式 条件 ※ 𝑥1

    , 𝑥2 , 𝑥3 , 𝑥4 は非負 2.5 + 0.25𝑥2 − 0.25𝑥4 𝑥3 = 3 − 1.5𝑥2 + 0.5𝑥4 𝑥1 = 2.5 − 0.75𝑥2 − 0.25𝑥4 𝑥4 を固定して 𝑥2 だけを増やすと、𝑥2 = 2 まで増えます ※ 1 番目の条件がボトルネック 𝑥1 𝑥2 1 2 3 4 1 2 3 グラフ 現 + 𝑥2 増加
  86. 248 2-2 単体法の計算:ステップ 3 86 最大化 数式 条件 ※ 𝑥1

    , 𝑥2 , 𝑥3 , 𝑥4 は非負 点を移動させると 𝑥3 = 0 になるので、非基底変数が {𝑥3 , 𝑥4 } に変わります 2.5 + 0.25𝑥2 − 0.25𝑥4 𝑥3 = 3 − 1.5𝑥2 + 0.5𝑥4 𝑥1 = 2.5 − 0.75𝑥2 − 0.25𝑥4 𝑥1 𝑥2 1 2 3 4 1 2 3 グラフ 現 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 = (1, 2, 0, 0)
  87. 248 2-2 単体法の計算:ステップ 2 87 点を移動させると 𝑥3 = 0 になるので、非基底変数が

    {𝑥3 , 𝑥4 } に変わります ですので、数式の右辺も 𝑥3 , 𝑥4 になるように変えます
  88. 248 2-2 単体法の計算:ステップ 2 88 点を移動させると 𝑥3 = 0 になるので、非基底変数が

    {𝑥3 , 𝑥4 } に変わります ですので、数式の右辺も 𝑥3 , 𝑥4 になるように変えます 数式 最大化 2.5 + 0.25𝑥2 − 0.25𝑥4 条件 𝑥3 = 3 + 1.5𝑥2 − 0.5𝑥4 𝑥1 = 2.5 − 0.75𝑥2 − 0.25𝑥4
  89. 248 2-2 単体法の計算:ステップ 2 89 点を移動させると 𝑥3 = 0 になるので、非基底変数が

    {𝑥3 , 𝑥4 } に変わります ですので、数式の右辺も 𝑥3 , 𝑥4 になるように変えます 数式 数式 最大化 2.5 + 0.25𝑥2 − 0.25𝑥4 条件 𝑥3 = 3 + 1.5𝑥2 − 0.5𝑥4 𝑥1 = 2.5 − 0.75𝑥2 − 0.25𝑥4 最大化 3 − 0.17𝑥3 − 0.17𝑥4 条件 𝑥2 = 2 − 0.67𝑥3 + 0.33𝑥4 𝑥1 = 1 + 0.5𝑥3 − 0.5𝑥4
  90. 248 2-2 単体法の計算:ステップ 4 90 ステップ 4 実際に計算を進める(3 回目)

  91. 248 2-2 単体法の計算:ステップ 4 91 最大化 数式 条件 ※ 𝑥1

    , 𝑥2 , 𝑥3 , 𝑥4 は非負 現在の状況は以下のようになります どの変数を増やしてもスコアは減ってしまいます! 𝑥1 𝑥2 1 2 3 4 1 2 3 グラフ 現 - - 3 − 0.17𝑥3 − 0.17𝑥4 𝑥2 = 2 − 0.67𝑥3 + 0.33𝑥4 𝑥1 = 1 + 0.5𝑥3 − 0.5𝑥4 𝑥3 増加 𝑥4 増加
  92. 248 2-2 単体法の計算:ステップ 4 92 最大化 数式 条件 ※ 𝑥1

    , 𝑥2 , 𝑥3 , 𝑥4 は非負 現在の状況は以下のようになります どの変数を増やしてもスコアは減ってしまいます! 𝑥1 𝑥2 1 2 3 4 1 2 3 グラフ 現 - - 3 − 0.17𝑥3 − 0.17𝑥4 𝑥2 = 2 − 0.67𝑥3 + 0.33𝑥4 𝑥1 = 1 + 0.5𝑥3 − 0.5𝑥4 𝑥3 増加 𝑥4 増加 これが最適解! 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 = (1, 2, 0, 0)、スコアは 3
  93. 248 2-2 単体法まとめ 93 ここまで長くなりましたが、まとめると以下のようになります。 非基底変数(ゼロのもの)を少しずつ変えていくイメージです。 手順 A 手順 B

    手順 C 𝑥3 = 8 − 2𝑥1 − 3𝑥2 𝑥4 = 10 − 4𝑥1 − 3𝑥2 初期解を設定した上で スラック変数を導入する スコアが改善する 非基底変数を増やして移動 現 新しい非基底変数を 右辺に持ってくる 𝑥3 = 3 − 1.5𝑥2 − 0.5𝑥4 𝑥1 = 2.5 − 0.8𝑥2 − 0.2𝑥4 存在しなければ最適解
  94. 248 2-3 補足:単体法の問題点 • これまでは、暗黙のうちに初期解を 𝑥1 , 𝑥2 , …

    , 𝑥𝑛 = (0, 0, … , 0) に設定していた • しかし、この初期解が制約条件を満たさず、 単体法が成立しないことも多い 𝑥1 𝑥2 1 2 3 1 2 3 現 94 条件を 満たす領域
  95. 248 2-3 補足:単体法の問題点 • これまでは、暗黙のうちに初期解を 𝑥1 , 𝑥2 , …

    , 𝑥𝑛 = (0, 0, … , 0) に設定していた • しかし、この初期解が制約条件を満たさず、 単体法が成立しないことも多い 𝑥1 𝑥2 1 2 3 1 2 3 現 95 条件を 満たす領域 最初に「条件を満たす初期解」を見つける 二段階単体法を使うと解決! 二段階単体法は、別の線形計画問題を 解いて初期解を見つけてから、元の問 題を解く手法です。 初期解を見つける際には「どれくらい の制約違反までなら許されるか」を表 すパラメータ 𝑥0 を追加することがあ ります。 なお、本スライドでは枚数の都合上、 詳しい説明は割愛させていただきます。
  96. 単体法のイメージ 単体法の計算過程 線形計画問題の応用例 その他の連続最適化問題 線形計画問題とは 2.0 2.1 2.2 2.3 2.4

  97. 248 2-3 線形計画問題の応用例 97 1 2 3 4 工場の売上最大化 栄養問題

    最適な価格設定 日程計画問題 世の中の様々な問題は 線形計画問題に帰着することができます
  98. 248 2-3 事例 1:工場の売上最大化 98 木材が 3kg、石材が 4kg あります。以 下の

    2 つの製品を作れるとき、売上は最 大何万円になりますか? ×10kg 製品A 1kg当たり ×20kg ×10kg 製品B 1kg当たり ×10kg
  99. 248 2-3 事例 1:工場の売上最大化 99 各製品を作る量を 𝑥1 , 𝑥2 とする

    木材が 3kg、石材が 4kg あります。以 下の 2 つの製品を作れるとき、売上は最 大何万円になりますか? ×10kg 製品A 1kg当たり ×20kg ×10kg 製品B 1kg当たり ×10kg
  100. 248 2-3 事例 1:工場の売上最大化 100 線形計画 各製品を作る量を 𝑥1 , 𝑥2

    とする 最大化 条件 80𝑥1 + 60𝑥2 売上 木材が 3kg、石材が 4kg あります。以 下の 2 つの製品を作れるとき、売上は最 大何万円になりますか? ×10kg 製品A 1kg当たり ×20kg ×10kg 製品B 1kg当たり ×10kg
  101. 248 2-3 事例 1:工場の売上最大化 101 木材が 3kg、石材が 4kg あります。以 下の

    2 つの製品を作れるとき、売上は最 大何万円になりますか? 線形計画 各製品を作る量を 𝑥1 , 𝑥2 とする 最大化 条件 80𝑥1 + 60𝑥2 売上 10𝑥1 + 10𝑥2 ≤ 3 木材 ×10kg 製品A 1kg当たり ×20kg ×10kg 製品B 1kg当たり ×10kg
  102. 248 2-3 事例 1:工場の売上最大化 102 木材が 3kg、石材が 4kg あります。以 下の

    2 つの製品を作れるとき、売上は最 大何万円になりますか? 線形計画 各製品を作る量を 𝑥1 , 𝑥2 とする 最大化 条件 80𝑥1 + 60𝑥2 売上 10𝑥1 + 10𝑥2 ≤ 3 20𝑥1 + 10𝑥2 ≤ 4 木材 石材 ×10kg 製品A 1kg当たり ×20kg ×10kg 製品B 1kg当たり ×10kg
  103. 248 2-3 事例 1:工場の売上最大化 103 木材が 3kg、石材が 4kg あります。以 下の

    2 つの製品を作れるとき、売上は最 大何万円になりますか? 線形計画 各製品を作る量を 𝑥1 , 𝑥2 とする 最大化 条件 80𝑥1 + 60𝑥2 売上 10𝑥1 + 10𝑥2 ≤ 3 20𝑥1 + 10𝑥2 ≤ 4 木材 石材 ×10kg 製品A 1kg当たり ×20kg ×10kg 製品B 1kg当たり ×10kg 線形計画問題に 帰着できた
  104. 248 2-3 事例 2:栄養問題 104 大学の食堂には以下の 3 つの食品が売ら れています。最小何円で、目標値(赤3/ 緑1/黄5)を稼げますか。

    赤 ¥450 ¥250 ¥150 緑 黄 1.5 点 0.5 点 2.5 点 赤 緑 黄 3.0 点 0.1 点 1.0 点 赤 緑 黄 0.1 点 1.5 点 0.5 点 ※値段と栄養素の点数は 100g 当たり
  105. 248 2-3 事例 2:栄養問題 105 大学の食堂には以下の 3 つの食品が売ら れています。最小何円で、目標値(赤3/ 緑1/黄5)を稼げますか。

    パスタ・肉・野菜の量を 𝑥1 , 𝑥2 , 𝑥3 と する(単位は 100 グラム) 赤 ¥450 ¥250 ¥150 緑 黄 1.5 点 0.5 点 2.5 点 赤 緑 黄 3.0 点 0.1 点 1.0 点 赤 緑 黄 0.1 点 1.5 点 0.5 点 ※値段と栄養素の点数は 100g 当たり
  106. 248 2-3 事例 2:栄養問題 106 大学の食堂には以下の 3 つの食品が売ら れています。最小何円で、目標値(赤3/ 緑1/黄5)を稼げますか。

    線形計画 条件 450𝑥1 + 250𝑥2 + 150𝑥3 赤 ¥450 ¥250 ¥150 緑 黄 1.5 点 0.5 点 2.5 点 赤 緑 黄 3.0 点 0.1 点 1.0 点 赤 緑 黄 0.1 点 1.5 点 0.5 点 ※値段と栄養素の点数は 100g 当たり 最小化 パスタ・肉・野菜の量を 𝑥1 , 𝑥2 , 𝑥3 と する(単位は 100 グラム)
  107. 248 2-3 事例 2:栄養問題 107 大学の食堂には以下の 3 つの食品が売ら れています。最小何円で、目標値(赤3/ 緑1/黄5)を稼げますか。

    線形計画 最小化 条件 450𝑥1 + 250𝑥2 + 150𝑥3 1.5𝑥1 + 3.0𝑥2 + 0.1𝑥3 ≥ 3 赤 緑 黄 1.5 点 0.5 点 2.5 点 赤 緑 黄 3.0 点 0.1 点 1.0 点 赤 緑 黄 0.1 点 1.5 点 0.5 点 ※値段と栄養素の点数は 100g 当たり ¥450 ¥250 ¥150 パスタ・肉・野菜の量を 𝑥1 , 𝑥2 , 𝑥3 と する(単位は 100 グラム) 赤
  108. 248 2-3 事例 2:栄養問題 108 大学の食堂には以下の 3 つの食品が売ら れています。最小何円で、目標値(赤3/ 緑1/黄5)を稼げますか。

    線形計画 条件 450𝑥1 + 250𝑥2 + 150𝑥3 1.5𝑥1 + 3.0𝑥2 + 0.1𝑥3 ≥ 3 0.5𝑥1 + 0.1𝑥2 + 1.5𝑥3 ≥ 1 赤 緑 黄 1.5 点 0.5 点 2.5 点 赤 緑 黄 3.0 点 0.1 点 1.0 点 赤 緑 黄 0.1 点 1.5 点 0.5 点 ※値段と栄養素の点数は 100g 当たり 最小化 ¥450 ¥250 ¥150 パスタ・肉・野菜の量を 𝑥1 , 𝑥2 , 𝑥3 と する(単位は 100 グラム) 緑 赤
  109. 248 2-3 事例 2:栄養問題 109 大学の食堂には以下の 3 つの食品が売ら れています。最小何円で、目標値(赤3/ 緑1/黄5)を稼げますか。

    線形計画 条件 450𝑥1 + 250𝑥2 + 150𝑥3 1.5𝑥1 + 3.0𝑥2 + 0.1𝑥3 ≥ 3 0.5𝑥1 + 0.1𝑥2 + 1.5𝑥3 ≥ 1 2.5𝑥1 + 1.0𝑥2 + 0.5𝑥3 ≥ 5 赤 ¥450 ¥250 ¥150 緑 黄 1.5 点 0.5 点 2.5 点 赤 緑 黄 3.0 点 0.1 点 1.0 点 赤 緑 黄 0.1 点 1.5 点 0.5 点 ※値段と栄養素の点数は 100g 当たり 最小化 黄 緑 赤 パスタ・肉・野菜の量を 𝑥1 , 𝑥2 , 𝑥3 と する(単位は 100 グラム)
  110. 248 2-3 事例 2:栄養問題 110 大学の食堂には以下の 3 つの食品が売ら れています。最小何円で、目標値(赤3/ 緑1/黄5)を稼げますか。

    線形計画 条件 450𝑥1 + 250𝑥2 + 150𝑥3 1.5𝑥1 + 3.0𝑥2 + 0.1𝑥3 ≥ 3 0.5𝑥1 + 0.1𝑥2 + 1.5𝑥3 ≥ 1 2.5𝑥1 + 1.0𝑥2 + 0.5𝑥3 ≥ 5 赤 ¥450 ¥250 ¥150 緑 黄 1.5 点 0.5 点 2.5 点 赤 緑 黄 3.0 点 0.1 点 1.0 点 赤 緑 黄 0.1 点 1.5 点 0.5 点 ※値段と栄養素の点数は 100g 当たり 最小化 黄 緑 赤 パスタ・肉・野菜の量を 𝑥1 , 𝑥2 , 𝑥3 と する(単位は 100 グラム) 線形計画問題に 帰着できた
  111. 248 2-3 事例 3:最適な価格設定 111 3 人の店員が「リンゴ〇個とミカン△個 で□ドルがいい!」と言いました。最大 誤差を最小にする価格設定は? リンゴ

    ミカン 価格 店員A 2個 3個 $1.00 店員B 3個 4個 $1.20 店員C 5個 1個 $1.50
  112. 248 2-3 事例 3:最適な価格設定 112 3 人の店員が「リンゴ〇個とミカン△個 で□ドルがいい!」と言いました。最大 誤差を最小にする価格設定は? 例:リンゴとミカンが両方

    $0.2 の場合 $1.00 $1.40 $1.20 リンゴ ミカン 価格 店員A 2個 3個 $1.00 店員B 3個 4個 $1.20 店員C 5個 1個 $1.50
  113. 248 2-3 事例 3:最適な価格設定 113 3 人の店員が「リンゴ〇個とミカン△個 で□ドルがいい!」と言いました。最大 誤差を最小にする価格設定は? リンゴ

    ミカン 価格 店員A 2個 3個 $1.00 店員B 3個 4個 $1.20 店員C 5個 1個 $1.50 リンゴを 𝑥1 ドル、ミカンを 𝑥2 ドル 許される誤差の最大を 𝑥3 ドルとする 線形計画 条件 𝑥3 最小化
  114. 248 2-3 事例 3:最適な価格設定 114 3 人の店員が「リンゴ〇個とミカン△個 で□ドルがいい!」と言いました。最大 誤差を最小にする価格設定は? リンゴ

    ミカン 価格 店員A 2個 3個 $1.00 店員B 3個 4個 $1.20 店員C 5個 1個 $1.50 リンゴを 𝑥1 ドル、ミカンを 𝑥2 ドル 許される誤差の最大を 𝑥3 ドルとする 線形計画 条件 𝑥3 最小化 2𝑥1 + 3𝑥2 ≥ 1.00 − 𝑥3 2𝑥1 + 3𝑥2 ≤ 1.00 + 𝑥3
  115. 248 2-3 事例 3:最適な価格設定 115 3 人の店員が「リンゴ〇個とミカン△個 で□ドルがいい!」と言いました。最大 誤差を最小にする価格設定は? リンゴ

    ミカン 価格 店員A 2個 3個 $1.00 店員B 3個 4個 $1.20 店員C 5個 1個 $1.50 リンゴを 𝑥1 ドル、ミカンを 𝑥2 ドル 許される誤差の最大を 𝑥3 ドルとする 線形計画 条件 𝑥3 最小化 2𝑥1 + 3𝑥2 ≥ 1.00 − 𝑥3 2𝑥1 + 3𝑥2 ≤ 1.00 + 𝑥3 3𝑥1 + 4𝑥2 ≥ 1.20 − 𝑥3 3𝑥1 + 4𝑥2 ≤ 1.20 + 𝑥3
  116. 248 2-3 事例 3:最適な価格設定 116 3 人の店員が「リンゴ〇個とミカン△個 で□ドルがいい!」と言いました。最大 誤差を最小にする価格設定は? リンゴ

    ミカン 価格 店員A 2個 3個 $1.00 店員B 3個 4個 $1.20 店員C 5個 1個 $1.50 リンゴを 𝑥1 ドル、ミカンを 𝑥2 ドル 許される誤差の最大を 𝑥3 ドルとする 線形計画 条件 𝑥3 最小化 2𝑥1 + 3𝑥2 ≥ 1.00 − 𝑥3 2𝑥1 + 3𝑥2 ≤ 1.00 + 𝑥3 3𝑥1 + 4𝑥2 ≥ 1.20 − 𝑥3 3𝑥1 + 4𝑥2 ≤ 1.20 + 𝑥3 5𝑥1 + 𝑥2 ≥ 1.50 − 𝑥3 5𝑥1 + 𝑥2 ≤ 1.50 + 𝑥3
  117. 248 2-3 事例 3:最適な価格設定 117 3 人の店員が「リンゴ〇個とミカン△個 で□ドルがいい!」と言いました。最大 誤差を最小にする価格設定は? リンゴ

    ミカン 価格 店員A 2個 3個 $1.00 店員B 3個 4個 $1.20 店員C 5個 1個 $1.50 リンゴを 𝑥1 ドル、ミカンを 𝑥2 ドル 許される誤差の最大を 𝑥3 ドルとする 線形計画 条件 𝑥3 最小化 2𝑥1 + 3𝑥2 ≥ 1.00 − 𝑥3 2𝑥1 + 3𝑥2 ≤ 1.00 + 𝑥3 3𝑥1 + 4𝑥2 ≥ 1.20 − 𝑥3 3𝑥1 + 4𝑥2 ≤ 1.20 + 𝑥3 5𝑥1 + 𝑥2 ≥ 1.50 − 𝑥3 5𝑥1 + 𝑥2 ≤ 1.50 + 𝑥3 線形計画問題に 帰着できた
  118. 248 2-3 その他の応用例 日程計画問題 • 仕事が 𝑁 個あり、仕事 𝑖 (1

    ≤ 𝑖 ≤ 𝑁) には 𝑝𝑖 日かかる。 • 仕事 𝑖 (1 ≤ 𝑖 ≤ 𝑁) を早く終わらせるには、1 日当たり 𝑔𝑖 円必要。 • 全部の仕事を 𝑇 日間で終わらせるには、何円必要か? • ただし「仕事〇〇をしてから仕事△△をする」といった依存関係も与えられる。 その他の有名な問題も線形計画に帰着できる • 最短経路問題、最大フロー問題、輸送問題、回帰問題、etc. 118
  119. 単体法のイメージ 単体法の計算過程 線形計画問題の応用例 その他の連続最適化問題 線形計画問題とは 2.0 2.1 2.2 2.3 2.4

  120. 248 2-4 制約なし最適化問題 120 関数 𝑓(𝑥) の最小値を求めてください。 ※関数は二変数関数 𝑓(𝑥1 ,

    𝑥2 ) や多変数関数 𝑓(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) になることもあります 最小値(これを求めたい) 𝑥 𝑓(𝑥)
  121. 248 2-4 方法 1:微分法を使う 121 まず、𝑓′ 𝑥 = 0 を満たす

    𝑥 を列挙する方法が考えられる しかし関数が複雑な場合、列挙するのは難しい(特に多変数関数のとき) 𝑥 𝑓(𝑥) 傾き=0 で 最小値 例: 𝑓 𝑥 = 𝑥4 − 2𝑥2 + 1 の最小値は? • 微分すると 𝑓′ 𝑥 = 4𝑥3 − 4𝑥 • 𝑓′ 𝑥 = 0 の解は 𝑥 = −1, ±0, +1 最小値の候補は 𝑥 = −1, ±0, 1 なので… • 𝑥 = −1 のとき: 𝑓 𝑥 = 0 • 𝑥 = ±0 のとき: 𝑓 𝑥 = 1 • 𝑥 = +1 のとき: 𝑓 𝑥 = 0 →求める最小値は 1 です!
  122. 248 2-4 方法 2:勾配降下法を使う 122 そこで、山を下っていく方向に答えを動かしていく勾配降下法という方法を使う と効率的である。 最小値 𝑥 𝑓(𝑥)

    山を下る
  123. 248 2-4 方法 2:勾配降下法を使う 123 勾配降下法のアルゴリズムは以下の通り: 1. 定数 𝛼 と初期位置

    𝑥 を決める。 2. その後、𝑥 の値に 𝛼 ×(地点 𝑥 における傾き)を減算する、という操作を繰り返す。
  124. 248 2-4 方法 2:勾配降下法を使う 124 勾配降下法のアルゴリズムは以下の通り: 1. 定数 𝛼 と初期位置

    𝑥 を決める。 2. その後、𝑥 の値に 𝛼 ×(地点 𝑥 における傾き)を減算する、という操作を繰り返す。 𝑓 𝑥 = 𝑥4 − 𝑥 + 1 の場合 • 𝛼 = 0.1 に設定すると… • 0 回目: 𝑥 = 1.00, 𝑓 𝑥 = 1.00 𝑥 𝑓(𝑥) 1.00 0.60 0.20 0.20 0.60 1.00 1.40 初期解を適当に 1.00 に設定
  125. 248 2-4 方法 2:勾配降下法を使う 125 勾配降下法のアルゴリズムは以下の通り: 1. 定数 𝛼 と初期位置

    𝑥 を決める。 2. その後、𝑥 の値に 𝛼 ×(地点 𝑥 における傾き)を減算する、という操作を繰り返す。 𝑓 𝑥 = 𝑥4 − 𝑥 + 1 の場合 • 𝛼 = 0.1 に設定すると… • 0 回目: 𝑥 = 1.00, 𝑓 𝑥 = 1.00 𝑥 𝑓(𝑥) 1.00 0.60 0.20 0.20 0.60 1.00 1.40 傾き 3.00 → 0.30 減少 -0.30
  126. 248 2-4 方法 2:勾配降下法を使う 126 勾配降下法のアルゴリズムは以下の通り: 1. 定数 𝛼 と初期位置

    𝑥 を決める。 2. その後、𝑥 の値に 𝛼 ×(地点 𝑥 における傾き)を減算する、という操作を繰り返す。 𝑓 𝑥 = 𝑥4 − 𝑥 + 1 の場合 • 𝛼 = 0.1 に設定すると… • 0 回目: 𝑥 = 1.00, 𝑓 𝑥 = 1.00 • 1 回目: 𝑥 = 0.70, 𝑓 𝑥 = 0.54 𝑥 𝑓(𝑥) 1.00 0.60 0.20 0.20 0.60 1.00 1.40 𝑥 = 0.70 に 移動 -0.30
  127. 248 2-4 方法 2:勾配降下法を使う 127 勾配降下法のアルゴリズムは以下の通り: 1. 定数 𝛼 と初期位置

    𝑥 を決める。 2. その後、𝑥 の値に 𝛼 ×(地点 𝑥 における傾き)を減算する、という操作を繰り返す。 𝑓 𝑥 = 𝑥4 − 𝑥 + 1 の場合 • 𝛼 = 0.1 に設定すると… • 0 回目: 𝑥 = 1.00, 𝑓 𝑥 = 1.00 • 1 回目: 𝑥 = 0.70, 𝑓 𝑥 = 0.54 𝑥 𝑓(𝑥) 1.00 0.60 0.20 0.20 0.60 1.00 1.40 傾き 0.38 → 0.04 減少 -0.30 -0.04
  128. 248 2-4 方法 2:勾配降下法を使う 128 勾配降下法のアルゴリズムは以下の通り: 1. 定数 𝛼 と初期位置

    𝑥 を決める。 2. その後、𝑥 の値に 𝛼 ×(地点 𝑥 における傾き)を減算する、という操作を繰り返す。 𝑓 𝑥 = 𝑥4 − 𝑥 + 1 の場合 • 𝛼 = 0.1 に設定すると… • 0 回目: 𝑥 = 1.00, 𝑓 𝑥 = 1.00 • 1 回目: 𝑥 = 0.70, 𝑓 𝑥 = 0.54 • 2 回目: 𝑥 = 0.66, 𝑓 𝑥 = 0.53 𝑥 𝑓(𝑥) 1.00 0.60 0.20 0.20 0.60 1.00 1.40 𝑥 = 0.66 に 移動 -0.30 -0.04
  129. 248 2-4 方法 2:勾配降下法を使う 129 勾配降下法のアルゴリズムは以下の通り: 1. 定数 𝛼 と初期位置

    𝑥 を決める。 2. その後、𝑥 の値に 𝛼 ×(地点 𝑥 における傾き)を減算する、という操作を繰り返す。 𝑓 𝑥 = 𝑥4 − 𝑥 + 1 の場合 • 𝛼 = 0.1 に設定すると… • 0 回目: 𝑥 = 1.00, 𝑓 𝑥 = 1.00 • 1 回目: 𝑥 = 0.70, 𝑓 𝑥 = 0.54 • 2 回目: 𝑥 = 0.66, 𝑓 𝑥 = 0.53 𝑥 𝑓(𝑥) 1.00 0.60 0.20 0.20 0.60 1.00 1.40 傾き 0.14 → 0.01 減少 -0.30 -0.04 -0.01
  130. 248 2-4 方法 2:勾配降下法を使う 130 勾配降下法のアルゴリズムは以下の通り: 1. 定数 𝛼 と初期位置

    𝑥 を決める。 2. その後、𝑥 の値に 𝛼 ×(地点 𝑥 における傾き)を減算する、という操作を繰り返す。 𝑓 𝑥 = 𝑥4 − 𝑥 + 1 の場合 • 𝛼 = 0.1 に設定すると… • 0 回目: 𝑥 = 1.00, 𝑓 𝑥 = 1.00 • 1 回目: 𝑥 = 0.70, 𝑓 𝑥 = 0.54 • 2 回目: 𝑥 = 0.66, 𝑓 𝑥 = 0.53 • 3 回目: 𝑥 = 0.65, 𝑓 𝑥 = 0.53 𝑥 𝑓(𝑥) 1.00 0.60 0.20 0.20 0.60 1.00 1.40 𝑥 = 0.65 に 移動 -0.30 -0.04 -0.01
  131. 248 2-4 方法 2:勾配降下法を使う 131 勾配降下法のアルゴリズムは以下の通り: 1. 定数 𝛼 と初期位置

    𝑥 を決める。 2. その後、𝑥 の値に 𝛼 ×(地点 𝑥 における傾き)を減算する、という操作を繰り返す。 𝑓 𝑥 = 𝑥4 − 𝑥 + 1 の場合 • 𝛼 = 0.1 に設定すると… • 0 回目: 𝑥 = 1.00, 𝑓 𝑥 = 1.00 • 1 回目: 𝑥 = 0.70, 𝑓 𝑥 = 0.54 • 2 回目: 𝑥 = 0.66, 𝑓 𝑥 = 0.53 • 3 回目: 𝑥 = 0.65, 𝑓 𝑥 = 0.53 𝑥 𝑓(𝑥) 1.00 0.60 0.20 0.20 0.60 1.00 1.40 𝑥 = 0.65 に 移動 -0.30 -0.04 -0.01 急速に最小値に 近づいていく
  132. 248 2-4 勾配降下法に関する注意点 • 全ケースで必ず正しい答えを導けるとは限らない • 以下のように谷が複数ある場合、上手くいかないこともある 132 最小値 𝑥

    𝑓(𝑥) 初期解 おっと!
  133. 248 2-4 制約付き最適化問題 133 • 最後に、制約なし最適化問題(関数の最大値を求める問題)に制約を付けた以 下のような問題を 制約付き最適化問題 という。 •

    かなり難しいが、ペナルティ関数法などを使うと解ける 問題例 1 最小化 条件 2𝑥2 + 2𝑦2 + 𝑥𝑦 𝑥 + 2𝑦 ≤ −1 制約を 満たす範囲 最小値
  134. 第 3 章 離散最適化問題

  135. 248 3-0 離散最適化問題とは • 変数が整数であるなど、とびとびの値しか選べないような最適化問 題を離散最適化問題という • たとえば、モノの選び方を考える問題は離散最適化問題(例:0.5 個選ぶなどは許されない) 135

    A の生産量 B の生産量 条件を満たす範囲 (連続最適化) 品物 A の個数 品物 B の個数 条件を満たす解 (離散最適化)
  136. 248 3-0 離散最適化問題の例 136 たとえば、カードをいくつか選んで合計を 100 にできるだけ近づ ける問題を考える 10 30

    57 38 75
  137. 248 3-0 離散最適化問題の例 137 たとえば、カードをいくつか選んで合計を 100 にできるだけ近づ ける問題を考える 10 30

    57 38 75 「0.5 枚選ぶ」 は許されない とびとびの値しか選べないので 離散最適化問題
  138. 248 3-0 離散最適化問題 138 離散最適化問題は どうやって解けるのか?

  139. 248 3-0 離散最適化問題の代表的解法 139 1 2 3 4 有名なアルゴリズム で効率的に解く

    山登り法などを 利用する 近似解法で 妥協する 整数計画 ソルバーに頼る 本講義では、代表的な解法として 4 つを紹介します 𝜋 = 3
  140. 解ける問題に落とす 山登り法と焼きなまし法 近似アルゴリズム 整数計画問題 離散最適化問題とは 3.0 3.1 3.2 3.3 3.4

  141. 248 3-1 「解ける」離散最適化問題 一部の最適化問題は、以下のようなアルゴリズムを使うと 効率的に解ける 141 貪欲法 動的計画法 ダイクストラ法 クラスカル法

    最短経路
  142. 248 3-1 アルゴリズム 1:貪欲法 142 アルゴリズムの例 1 貪欲法

  143. 248 3-1 アルゴリズム 1:貪欲法 • 「次の手だけを考えたときに最善手を選ぶ」ことを繰り返して最適解を 求める手法 • リバーシの対戦では、次に最も多くのコマをひっくり返せる手を打ち続 けるイメージ

    143 2 個 返せる 2 個 返せる
  144. 248 3-1 例 1:紙幣の問題 144 10000 円・5000 円・1000 円を使って、決められた金額を支払ってください。 ただし、使う紙幣の枚数は最小にしてください。

    10000円 10000円 5000円 1000円 1000円 1000円 1000円 29000円 最小 7 枚
  145. 248 3-1 例 1:紙幣の問題 145 この問題を いかにして解くか?

  146. 248 3-1 例 1:紙幣の問題 146 そこで、次のようなアルゴリズムを考える • 残額が 10000 円を下回るまで、10000

    円札を使う。 • 残額が 5000 円を下回るまで、5000 円札を使う • 最後に、残った金額を 1000 円札で支払う
  147. 248 3-1 例 1:紙幣の問題 147 そこで、次のようなアルゴリズムを考える(下図は 29000 円の例) • 残額が

    10000 円を下回るまで、10000 円札を使う。 • 残額が 5000 円を下回るまで、5000 円札を使う • 最後に、残った金額を 1000 円札で支払う 残額 29000円
  148. 248 3-1 例 1:紙幣の問題 148 そこで、次のようなアルゴリズムを考える(下図は 29000 円の例) • 残額が

    10000 円を下回るまで、10000 円札を使う。 • 残額が 5000 円を下回るまで、5000 円札を使う • 最後に、残った金額を 1000 円札で支払う 残額 19000円 10000円
  149. 248 3-1 例 1:紙幣の問題 149 そこで、次のようなアルゴリズムを考える(下図は 29000 円の例) • 残額が

    10000 円を下回るまで、10000 円札を使う。 • 残額が 5000 円を下回るまで、5000 円札を使う • 最後に、残った金額を 1000 円札で支払う 残額 9000円 10000円 10000円 10000 円を下回った!
  150. 248 3-1 例 1:紙幣の問題 150 そこで、次のようなアルゴリズムを考える(下図は 29000 円の例) • 残額が

    10000 円を下回るまで、10000 円札を使う。 • 残額が 5000 円を下回るまで、5000 円札を使う • 最後に、残った金額を 1000 円札で支払う 残額 4000円 10000円 10000円 5000円 5000 円を下回った!
  151. 248 3-1 例 1:紙幣の問題 151 そこで、次のようなアルゴリズムを考える(下図は 29000 円の例) • 残額が

    10000 円を下回るまで、10000 円札を使う。 • 残額が 5000 円を下回るまで、5000 円札を使う • 最後に、残った金額を 1000 円札で支払う 残額 3000円 10000円 10000円 5000円 1000円
  152. 248 3-1 例 1:紙幣の問題 152 そこで、次のようなアルゴリズムを考える(下図は 29000 円の例) • 残額が

    10000 円を下回るまで、10000 円札を使う。 • 残額が 5000 円を下回るまで、5000 円札を使う • 最後に、残った金額を 1000 円札で支払う 残額 2000円 10000円 10000円 5000円 1000円 1000円
  153. 248 3-1 例 1:紙幣の問題 153 そこで、次のようなアルゴリズムを考える(下図は 29000 円の例) • 残額が

    10000 円を下回るまで、10000 円札を使う。 • 残額が 5000 円を下回るまで、5000 円札を使う • 最後に、残った金額を 1000 円札で支払う 残額 1000円 10000円 10000円 5000円 1000円 1000円 1000円
  154. 248 3-1 例 1:紙幣の問題 154 そこで、次のようなアルゴリズムを考える(下図は 29000 円の例) • 残額が

    10000 円を下回るまで、10000 円札を使う。 • 残額が 5000 円を下回るまで、5000 円札を使う • 最後に、残った金額を 1000 円札で支払う 残額 0円 10000円 10000円 5000円 1000円 1000円 1000円 1000円
  155. 248 3-1 例 1:紙幣の問題 155 そこで、次のようなアルゴリズムを考える(下図は 29000 円の例) • 残額が

    10000 円を下回るまで、10000 円札を使う。 • 残額が 5000 円を下回るまで、5000 円札を使う • 最後に、残った金額を 1000 円札で支払う 残額 0円 10000円 10000円 5000円 1000円 1000円 1000円 1000円 最適解(7 枚)で 支払えた!
  156. 248 3-1 何故この方法で上手くいく? 156 • 1000 円札を 5 枚以上使っている •

    5000 円札を 2 枚以上使っている • 上記のいずれかを満たすとき、明らかに枚数を減らせる
  157. 248 3-1 何故この方法で上手くいく? 157 • 1000 円札を 5 枚以上使っている •

    5000 円札を 2 枚以上使っている • 上記のいずれかを満たすとき、明らかに枚数を減らせる 10000円 10000円 1000円 1000円 1000円 1000円 1000円 10000円 10000円 5000円 -4 枚 1000 円札 2 枚を 5000 円札に交換!
  158. 248 3-1 何故この方法で上手くいく? 158 • 1000 円札を 5 枚以上使っている •

    5000 円札を 2 枚以上使っている • 上記のいずれかを満たすとき、明らかに枚数を減らせる 10000円 10000円 5000円 5000円 1000円 10000円 10000円 10000円 -1 枚 5000 円札 2 枚を 10000 円札に交換! 1000円
  159. 248 3-1 何故この方法で上手くいく? 159 • 1000 円札を 5 枚以上使っている •

    5000 円札を 2 枚以上使っている • 上記のいずれかを満たすとき、明らかに枚数を減らせる • 一方で、1000 円札 4 枚以下、5000 円札 1 枚以下で支払う方法は 1 通り しかない(+ 貪欲法はその条件を満たす) 貪欲法こそが最適!
  160. 248 3-1 アルゴリズム 2:動的計画法 160 アルゴリズムの例 2 動的計画法

  161. 248 3-1 アルゴリズム 2:動的計画法 • 小さい問題に分解し、前の結 果を利用して答えを求める設 計技法 • イメージとしては、フィボ

    ナッチ数列などを、規則性に 従って 1 つずつ求めていくよ うな感じ 161 1 1 1 1 2 1 1 2 3 1 1 2 3 5 1 1 2 3 5 8 1 1 2 3 5 8 13 1 + 1 = 2 1 + 2 = 3 2 + 3 = 5 3 + 5 = 8 5 + 8 = 13
  162. 248 3-1 例 2:最適な移動経路 162 以下のような地図が与えられます。 地点 1 から地点 5

    まで、最短何分で移動できますか? 地点 2 地点 1 地点 3 地点 4 地点 5 2 分 3 分 1 分 6 分 4 分 7 分 9 分
  163. 248 3-1 例 2:最適な移動経路 163 以下のような地図が与えられます。 地点 1 から地点 5

    まで、最短何分で移動できますか? 地点 2 地点 1 地点 3 地点 4 地点 5 2 分 3 分 1 分 6 分 4 分 7 分 9 分 この経路で行くと 13 分かかる
  164. 248 3-1 例 2:最適な移動経路 164 この問題を いかにして解くか? ※ダイクストラ法でも解けますが、ここでは動的計画法を用いて解きます。 ※地点数が 5

    なので全部の経路を調べても解けますが、地点数に対して指数関数的に増加して効率が悪いです。
  165. 248 3-1 例 2:最適な移動経路 165 いきなり答えを求めるのは難しいので、以下の順番で 1 つずつ考える • 地点

    1→1 に移動するための最短時間 dp[1] • 地点 1→2 に移動するための最短時間 dp[2] • 地点 1→3 に移動するための最短時間 dp[3] • 地点 1→4 に移動するための最短時間 dp[4] • 地点 1→5 に移動するための最短時間 dp[5]
  166. 248 3-1 例 2:最適な移動経路 166 いきなり答えを求めるのは難しいので、以下の順番で 1 つずつ考える • 地点

    1→1 に移動するための最短時間 dp[1] • 地点 1→2 に移動するための最短時間 dp[2] • 地点 1→3 に移動するための最短時間 dp[3] • 地点 1→4 に移動するための最短時間 dp[4] • 地点 1→5 に移動するための最短時間 dp[5] 地点 2 dp 2 = ? 地点 1 dp 1 = 0 地点 3 dp 3 = ? 地点 4 dp 4 = ? 地点 5 dp 5 = ? 2 分 3 分 1 分 6 分 4 分 7 分 9 分 移動しなくても たどり着けるので 最短 0 分
  167. 248 3-1 例 2:最適な移動経路 167 いきなり答えを求めるのは難しいので、以下の順番で 1 つずつ考える • 地点

    1→1 に移動するための最短時間 dp[1] • 地点 1→2 に移動するための最短時間 dp[2] • 地点 1→3 に移動するための最短時間 dp[3] • 地点 1→4 に移動するための最短時間 dp[4] • 地点 1→5 に移動するための最短時間 dp[5] 地点 2 dp 2 = 2 地点 1 dp 1 = 0 地点 3 dp 3 = ? 地点 4 dp 4 = ? 地点 5 dp 5 = ? 2 分 3 分 1 分 6 分 4 分 7 分 9 分 1→2 に直接行く しかないので 必要な時間は 2 分
  168. 248 3-1 例 2:最適な移動経路 168 いきなり答えを求めるのは難しいので、以下の順番で 1 つずつ考える • 地点

    1→1 に移動するための最短時間 dp[1] • 地点 1→2 に移動するための最短時間 dp[2] • 地点 1→3 に移動するための最短時間 dp[3] • 地点 1→4 に移動するための最短時間 dp[4] • 地点 1→5 に移動するための最短時間 dp[5] 地点 2 dp 2 = 2 地点 1 dp 1 = 0 地点 3 dp 3 = 4 地点 4 dp 4 = ? 地点 5 dp 5 = ? 2 分 3 分 1 分 6 分 4 分 7 分 9 分 2→3 を通る: 2+3=5分 1→3 を通る: 0+4=4分
  169. 248 3-1 例 2:最適な移動経路 169 いきなり答えを求めるのは難しいので、以下の順番で 1 つずつ考える • 地点

    1→1 に移動するための最短時間 dp[1] • 地点 1→2 に移動するための最短時間 dp[2] • 地点 1→3 に移動するための最短時間 dp[3] • 地点 1→4 に移動するための最短時間 dp[4] • 地点 1→5 に移動するための最短時間 dp[5] 地点 2 dp 2 = 2 地点 1 dp 1 = 0 地点 3 dp 3 = 4 地点 4 dp 4 = 5 地点 5 dp 5 = ? 2 分 3 分 1 分 6 分 4 分 7 分 9 分 3→4 を通る: 4+1=5分 2→4 を通る: 2+7=9分
  170. 248 3-1 例 2:最適な移動経路 170 いきなり答えを求めるのは難しいので、以下の順番で 1 つずつ考える • 地点

    1→1 に移動するための最短時間 dp[1] • 地点 1→2 に移動するための最短時間 dp[2] • 地点 1→3 に移動するための最短時間 dp[3] • 地点 1→4 に移動するための最短時間 dp[4] • 地点 1→5 に移動するための最短時間 dp[5] 地点 2 dp 2 = 2 地点 1 dp 1 = 0 地点 3 dp 3 = 4 地点 4 dp 4 = 5 地点 5 dp 5 = 11 2 分 3 分 1 分 6 分 4 分 7 分 9 分 4→5 を通る: 5+6=11分 3→5 を通る: 4+9=13分
  171. 248 3-1 例 2:最適な移動経路 171 いきなり答えを求めるのは難しいので、以下の順番で 1 つずつ考える • 地点

    1→1 に移動するための最短時間 dp[1] • 地点 1→2 に移動するための最短時間 dp[2] • 地点 1→3 に移動するための最短時間 dp[3] • 地点 1→4 に移動するための最短時間 dp[4] • 地点 1→5 に移動するための最短時間 dp[5] 地点 2 dp 2 = 2 地点 1 dp 1 = 0 地点 3 dp 3 = 4 地点 4 dp 4 = 5 地点 5 dp 5 = 11 2 分 3 分 1 分 6 分 4 分 7 分 9 分 4→5 を通る: 5+6=11分 3→5 を通る: 4+9=13分 最短 11 分で移動できる! ※最適な移動経路は、地点 1→3→4→5
  172. 248 3-1 この節のまとめ この節では、2 つのアルゴリズムを紹介しました • 貪欲法:「次の手だけを考えたときに最適なムーブ」を繰り返してい く設計技法 • 動的計画法:前の結果を利用して、小さい問題から順番に答えを求め

    ていく設計技法 172
  173. 248 3-1 この節のまとめ その他にも、多くの問題について「効率的に解けるアルゴリズム」が存在する ことが知られています 173 ナップザック問題 最短経路問題 編集距離 区間スケジューリング

    まずは効率的なアルゴリズムを考えよう! green gree grey
  174. 248 3-1 本格的に学びたい人へ • 本スライドは「アルゴリズム入門」ではないので、離散最適化問題のアル ゴリズムはあまり詳しく扱いません • 詳しく知りたい方は、以下の書籍などを読んでみてください: • 米田優峻:「「アルゴリズム×数学」が基礎からしっかり身につく本」、技術評論社

    (2021) • 大槻兼資:「問題解決力を鍛える!アルゴリズムとデータ構造」、講談社(2020) 174
  175. 解ける問題に落とす 山登り法と焼きなまし法 近似アルゴリズム 整数計画問題 離散最適化問題とは 3.0 3.1 3.2 3.3 3.4

  176. 248 3-2 アルゴリズムの限界 176 すべての問題について データが大きくても効率的に解けるとは限らない

  177. 248 3-2 アルゴリズムの限界 177 分割問題 整数 𝐴1 , 𝐴2 ,

    … , 𝐴𝑁 を 2 つのグループに分割してください。 ただし、各グループの総和の差をできる限り小さくしてください。 1 2 3 4 5 1 2 3 4 5 赤の総和 = 8 青の総和 = 7
  178. 248 3-2 アルゴリズムの限界 178 分割問題 整数 𝐴1 , 𝐴2 ,

    … , 𝐴𝑁 を 2 つのグループに分割してください。 ただし、各グループの総和の差をできる限り小さくしてください。 1 2 3 4 5 1 2 3 4 5 赤の総和 = 8 青の総和 = 7 このような問題は NP 完全 効率的に最適解を出すのが難しいとされている
  179. 248 3-2 アルゴリズムの限界 179 一体どうすればいいのか?

  180. 248 3-2 山登り法とは 180 解に小さな変更を行い スコアが改善したら採用 を繰り返すことでスコアを少しずつ 良くする手法

  181. 248 3-2 例 1:分割問題 181 差 = 90 5 8

    14 28 30 23 48 44 合計 55 合計 145 「異なるグループにある 2 つの整数をランダムに選び、解が良くなれば交 換する」という操作を繰り返すと…?
  182. 248 3-2 例 1:分割問題 182 差 = 90 5 8

    14 28 30 23 48 44 合計 55 合計 145 交換すると改善 →採用 「異なるグループにある 2 つの整数をランダムに選び、解が良くなれば交 換する」という操作を繰り返すと…?
  183. 248 3-2 例 1:分割問題 183 差 = 12 44 8

    14 28 30 23 48 5 合計 94 合計 106 「異なるグループにある 2 つの整数をランダムに選び、解が良くなれば交 換する」という操作を繰り返すと…?
  184. 248 3-2 例 1:分割問題 184 差 = 12 44 8

    14 28 30 23 48 5 合計 94 合計 106 交換すると悪化 →不採用 「異なるグループにある 2 つの整数をランダムに選び、解が良くなれば交 換する」という操作を繰り返すと…?
  185. 248 3-2 例 1:分割問題 185 差 = 12 44 8

    14 28 30 23 48 5 合計 94 合計 106 「異なるグループにある 2 つの整数をランダムに選び、解が良くなれば交 換する」という操作を繰り返すと…?
  186. 248 3-2 例 1:分割問題 186 差 = 12 44 8

    14 28 30 23 48 5 合計 94 合計 106 交換すると改善 →採用 「異なるグループにある 2 つの整数をランダムに選び、解が良くなれば交 換する」という操作を繰り返すと…?
  187. 248 3-2 例 1:分割問題 187 差 = 6 44 8

    23 28 30 14 48 5 合計 103 合計 97 「異なるグループにある 2 つの整数をランダムに選び、解が良くなれば交 換する」という操作を繰り返すと…?
  188. 248 3-2 例 1:分割問題 188 差 = 6 44 8

    23 28 30 14 48 5 合計 103 合計 97 交換すると改善 →採用 「異なるグループにある 2 つの整数をランダムに選び、解が良くなれば交 換する」という操作を繰り返すと…?
  189. 248 3-2 例 1:分割問題 189 差 = 0 44 5

    23 28 30 14 48 8 合計 100 合計 100 「異なるグループにある 2 つの整数をランダムに選び、解が良くなれば交 換する」という操作を繰り返すと…?
  190. 248 3-2 「異なるグループにある 2 つの整数をランダムに選び、解が良くなれば交 換する」という操作を繰り返すと…? 例 1:分割問題 190 差

    = 0 44 5 23 28 30 14 48 8 合計 100 合計 100 完全な解が得られた!
  191. 248 3-2 例 2:巡回セールスマン問題 191 巡回セールスマン 問題 できるだけ短い時間で、すべての都市を 1 度ずつ巡る

    方法を求めてください。 1 2 3 6 7 4 5 2 分 2 分 4 分 2 分 1 分 4 分 3 分
  192. 248 3-2 例 2:巡回セールスマン問題 192 どうやって解に小さな変更を施すか? • 以下のように、2 つの辺を選んで付け替える 1

    2 3 6 7 4 5 1 2 3 6 7 4 5
  193. 248 3-2 例 2:巡回セールスマン問題 193 「解が良くなるように 2 つの辺を付け替える」という操作を繰り返すと…? (このような方法は 2-opt

    と呼ばれる) 1 2 6 3 5 4 初期解 最適には程遠い
  194. 248 3-2 例 2:巡回セールスマン問題 194 1 2 6 3 5

    4 赤い辺を 付け替える 「解が良くなるように 2 つの辺を付け替える」という操作を繰り返すと…? (このような方法は 2-opt と呼ばれる)
  195. 248 3-2 例 2:巡回セールスマン問題 195 1 2 6 3 5

    4 1 2 6 3 5 4 「解が良くなるように 2 つの辺を付け替える」という操作を繰り返すと…? (このような方法は 2-opt と呼ばれる)
  196. 248 3-2 例 2:巡回セールスマン問題 196 1 2 6 3 5

    4 1 2 6 3 5 4 赤い辺を 付け替える 「解が良くなるように 2 つの辺を付け替える」という操作を繰り返すと…? (このような方法は 2-opt と呼ばれる)
  197. 248 3-2 例 2:巡回セールスマン問題 197 1 2 6 3 5

    4 1 2 6 3 5 4 1 2 6 3 5 4 「解が良くなるように 2 つの辺を付け替える」という操作を繰り返すと…? (このような方法は 2-opt と呼ばれる)
  198. 248 3-2 例 2:巡回セールスマン問題 198 1 2 6 3 5

    4 1 2 6 3 5 4 1 2 6 3 5 4 赤い辺を 付け替える 「解が良くなるように 2 つの辺を付け替える」という操作を繰り返すと…? (このような方法は 2-opt と呼ばれる)
  199. 248 3-2 例 2:巡回セールスマン問題 199 1 2 6 3 5

    4 1 2 6 3 5 4 1 2 6 3 5 4 1 2 6 3 5 4 「解が良くなるように 2 つの辺を付け替える」という操作を繰り返すと…? (このような方法は 2-opt と呼ばれる)
  200. 248 3-2 例 2:巡回セールスマン問題 200 1 2 6 3 5

    4 1 2 6 3 5 4 1 2 6 3 5 4 1 2 6 3 5 4 赤い辺を 付け替える 「解が良くなるように 2 つの辺を付け替える」という操作を繰り返すと…? (このような方法は 2-opt と呼ばれる)
  201. 248 3-2 例 2:巡回セールスマン問題 201 1 2 6 3 5

    4 1 2 6 3 5 4 1 2 6 3 5 4 1 2 6 3 5 4 1 2 6 3 5 4 「解が良くなるように 2 つの辺を付け替える」という操作を繰り返すと…? (このような方法は 2-opt と呼ばれる)
  202. 248 3-2 「解が良くなるように 2 つの辺を付け替える」という操作を繰り返すと…? (このような方法は 2-opt と呼ばれる) 例 2:巡回セールスマン問題

    202 1 2 6 3 5 4 1 2 6 3 5 4 1 2 6 3 5 4 1 2 6 3 5 4 1 2 6 3 5 4 完全な解が得られた!
  203. 248 3-2 山登り法の問題点 203 場合によっては、スコアが低い方の局所的最適解(どんな小さい変 更をしてもスコアが増えない状態)にハマってしまう スコア ここから スタート これ以上

    改善できない! 全体の最適解
  204. 248 3-2 焼きなまし法 204 この問題は、一定の確率でスコアを悪くする変更を行うことで解決 できる(これを焼きなまし法という) 80% 60% 40% 20%

    採 用 確 率 0 +20 +10 -20 -10 スコアの変化 スコアが多少悪く なっても 20% 採用
  205. 解ける問題に落とす 山登り法と焼きなまし法 近似アルゴリズム 整数計画問題 離散最適化問題とは 3.0 3.1 3.2 3.3 3.4

  206. 248 3-3 焼きなまし法の欠点 • 入力データが大きいときに使いづらい • 精度保証(必ず最適解の 1.5 倍以下になるなど)が保証しづらい 206

    近似アルゴリズムの出番!
  207. 248 3-3 近似アルゴリズムとは • 厳密な最適解ではないが、できるだけスコアが大きい解を求め るアルゴリズム • 特に、「最適解とのスコアの比が 𝑛 倍以下」が保証されるア

    ルゴリズムは 𝒏 − 近似 であるという。 207
  208. 248 3-3 例 1:ビンパッキング問題 208 ビンパッキング (箱詰めの問題) 重さ 𝑆 まで詰められる箱がいくつかあるので、できる

    だけ少ない数の箱で、すべての荷物を詰める 9 7 3 6 4 4 3 2 2 3 3 4 4 6 7 9
  209. 248 3-3 例 1:ビンパッキング問題 209 この問題に対して、次のアルゴリズム(First Fit 法)を考える: • 1

    つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。
  210. 248 3-3 例 1:ビンパッキング問題 210 1 2 3 4 5

    2 3 3 4 4 6 7 9 2 この問題に対して、次のアルゴリズム(First Fit 法)を考える: • 1 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。
  211. 248 3-3 例 1:ビンパッキング問題 211 1 2 3 4 5

    2 3 3 4 4 6 7 9 2 9 箱 1 には 詰められない この問題に対して、次のアルゴリズム(First Fit 法)を考える: • 1 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。
  212. 248 3-3 例 1:ビンパッキング問題 212 1 2 3 4 5

    2 3 3 4 4 6 7 9 2 9 6 この問題に対して、次のアルゴリズム(First Fit 法)を考える: • 1 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。
  213. 248 3-3 例 1:ビンパッキング問題 213 1 2 3 4 5

    2 3 3 4 4 6 7 9 2 9 6 3 箱 2 には 詰められない この問題に対して、次のアルゴリズム(First Fit 法)を考える: • 1 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。
  214. 248 3-3 例 1:ビンパッキング問題 214 1 2 3 4 5

    2 3 3 4 4 6 7 9 2 9 6 3 4 この問題に対して、次のアルゴリズム(First Fit 法)を考える: • 1 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。
  215. 248 3-3 例 1:ビンパッキング問題 215 1 2 3 4 5

    2 3 3 4 4 6 7 9 2 9 6 3 4 3 この問題に対して、次のアルゴリズム(First Fit 法)を考える: • 1 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。
  216. 248 3-3 例 1:ビンパッキング問題 216 1 2 3 4 5

    2 3 3 4 4 6 7 9 2 9 6 3 4 3 7 この問題に対して、次のアルゴリズム(First Fit 法)を考える: • 1 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。
  217. 248 3-3 例 1:ビンパッキング問題 217 1 2 3 4 5

    2 3 3 4 4 6 7 9 2 9 6 3 4 3 7 4 5 個の箱で 詰められた! この問題に対して、次のアルゴリズム(First Fit 法)を考える: • 1 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。
  218. 248 3-3 例 1:ビンパッキング問題 218 このアルゴリズムは どれくらいの精度が保証できる?

  219. 248 3-3 近似アルゴリズムの精度 219 実は、半分以下しか詰まっていない箱は高々 1 つしか存在しない → 2-近似が保証できる! 7

    9 4 5 3 2 2 7 9 4 5 3 2 2 もし半分以下の箱が 2 つあったら… First Fit 法では 全部左側に 入っているはず!
  220. 248 3-3 この節のまとめ • このように、アルゴリズムによっては 2 倍などの近似精度が保証 できる場合がある • また、2-近似だからといって全てのケースで

    2 倍になるとは限ら ず、平均的なケースでは遥かに良い近似精度になることも 220 少ない計算量である程度の解が出せる!
  221. 解ける問題に落とす 山登り法と焼きなまし法 近似アルゴリズム 整数計画問題 離散最適化問題とは 3.0 3.1 3.2 3.3 3.4

  222. 248 3-4 整数計画問題とは 222 次のような問題を整数計画問題という 線形計画問題(→2章)について、𝑥1 , 𝑥2 , …

    , 𝑥𝑛 を整数に限定したもの 最大化 𝑥1 + 𝑥2 条件 3𝑥1 + 8𝑥2 ≤ 40 5𝑥1 + 4𝑥2 ≤ 35 𝑥1 , 𝑥2 は非負整数 𝑥1 𝑥2 4 2 2 4 6 8 最適解
  223. 248 3-4 整数計画問題の例 223 整数計画問題は NP 困難 しかし… 優秀なソルバーがある!

  224. 248 3-4 整数計画ソルバーについて • 世界では商用・非商用含め、様々なソルバーがある • 商用:Gurobi, CPLEX など •

    非商用:SCIP, CBC など • 変数と制約条件の数が数千オーダーでも解けるものも • NP 困難なのに… とても実用的! 224
  225. 248 3-4 SCIP について 225 SCIP 非商用(無料)ソルバーの中で最も高速なものの一つ https://www.scipopt.org/ からインストールできる ※講義中にインストールする必要はありません。

  226. 248 3-4 SCIP について 226 以下のような簡単なプログラム(.lp ファイル)を書くだけで、整数 計画問題の答えが得られる maximize x

    + y subject to c1: 3 x + 8 y <= 80 c2: 5 x + 4 y <= 70 general x y end 目的関数 スコア 制約条件 一般の非負整数 [0/1 ではない] 𝑥, 𝑦 = (8, 7) のとき 目的関数は最大値 15
  227. 248 3-4 SCIP について 227 以下のような簡単なプログラム(.lp ファイル)を書くだけで、整数 計画問題の答えが得られる maximize x

    + y subject to c1: 3 x + 8 y <= 80 c2: 5 x + 4 y <= 70 general x y end 目的関数 スコア 制約条件 一般の非負整数 [0/1 ではない] 𝑥, 𝑦 = (8, 7) のとき 目的関数は最大値 15 ぜひ使ってみよう! 詳しい使い方は以下を参照: http://web.tuat.ac.jp/~miya/ipmemo.html
  228. 248 3-4 整数計画問題の応用 228 1 2 3 4 最大独立集合 分割問題

    k-センター問題 数独ソルバー 世の中の様々な問題は 整数計画問題に帰着することができます 10 33 57 38 62
  229. 248 3-4 事例 1:最大独立集合 229 各頂点を選ぶかどうかを 𝑥1 , 𝑥2 ,

    𝑥3 , 𝑥4 とする(0 または 1) 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。 1 2 3 4
  230. 248 3-4 事例 1:最大独立集合 230 各頂点を選ぶかどうかを 𝑥1 , 𝑥2 ,

    𝑥3 , 𝑥4 とする(0 または 1) 1 2 3 4 1 2 3 4 頂点 3, 4 は隣接 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。
  231. 248 3-4 事例 1:最大独立集合 231 整数計画 各頂点を選ぶかどうかを 𝑥1 , 𝑥2

    , 𝑥3 , 𝑥4 とする(0 または 1) 最大化 条件 𝑥1 + 𝑥2 + 𝑥3 + 𝑥4 1 2 3 4 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。
  232. 248 3-4 事例 1:最大独立集合 232 整数計画 各頂点を選ぶかどうかを 𝑥1 , 𝑥2

    , 𝑥3 , 𝑥4 とする(0 または 1) 最大化 条件 𝑥1 + 𝑥2 + 𝑥3 + 𝑥4 𝑥1 + 𝑥2 ≤ 1 1 2 3 4 一方しか 選べない 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。
  233. 248 3-4 事例 1:最大独立集合 233 整数計画 各頂点を選ぶかどうかを 𝑥1 , 𝑥2

    , 𝑥3 , 𝑥4 とする(0 または 1) 最大化 条件 𝑥1 + 𝑥2 + 𝑥3 + 𝑥4 𝑥1 + 𝑥2 ≤ 1 𝑥2 + 𝑥4 ≤ 1 1 2 3 4 一方しか 選べない 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。
  234. 248 3-4 事例 1:最大独立集合 234 整数計画 各頂点を選ぶかどうかを 𝑥1 , 𝑥2

    , 𝑥3 , 𝑥4 とする(0 または 1) 最大化 条件 𝑥1 + 𝑥2 + 𝑥3 + 𝑥4 𝑥1 + 𝑥2 ≤ 1 𝑥2 + 𝑥4 ≤ 1 𝑥4 + 𝑥3 ≤ 1 1 2 3 4 一方しか 選べない 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。
  235. 248 3-4 事例 1:最大独立集合 235 整数計画 各頂点を選ぶかどうかを 𝑥1 , 𝑥2

    , 𝑥3 , 𝑥4 とする(0 または 1) 最大化 条件 𝑥1 + 𝑥2 + 𝑥3 + 𝑥4 𝑥1 + 𝑥2 ≤ 1 𝑥2 + 𝑥4 ≤ 1 𝑥4 + 𝑥3 ≤ 1 𝑥3 + 𝑥1 ≤ 1 1 2 3 4 一方しか 選べない 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。
  236. 248 3-4 事例 1:最大独立集合 236 整数計画 各頂点を選ぶかどうかを 𝑥1 , 𝑥2

    , 𝑥3 , 𝑥4 とする(0 または 1) 最大化 条件 𝑥1 + 𝑥2 + 𝑥3 + 𝑥4 𝑥1 + 𝑥2 ≤ 1 𝑥2 + 𝑥4 ≤ 1 𝑥4 + 𝑥3 ≤ 1 𝑥3 + 𝑥1 ≤ 1 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 は 0 以上 1 以下の整数 1 2 3 4 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。
  237. 248 3-4 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。 事例 1:最大独立集合 237 整数計画 各頂点を選ぶかどうかを

    𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 とする(0 または 1) 最大化 条件 𝑥1 + 𝑥2 + 𝑥3 + 𝑥4 𝑥1 + 𝑥2 ≤ 1 𝑥2 + 𝑥4 ≤ 1 𝑥4 + 𝑥3 ≤ 1 𝑥3 + 𝑥1 ≤ 1 𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 は 0 以上 1 以下の整数 1 2 3 4 変数 𝑛 個、制約 𝑚 個※ の 整数計画問題に落ちた! 頂点数・辺数が 1000 程度でも解ける ※グラフの頂点数を 𝑛、辺数を 𝑚 としている。 ※各変数が 0 以上 1 以下であることは、制約の個数に含めていない。
  238. 248 3-3 この節のまとめ • 整数計画ソルバーは非常に優秀 • 最終手段として、整数計画問題(Integer Programming)に 帰着させることによる問題解決も可能 238

  239. 第 4 章 講義のまとめ

  240. 248 4-0 スライドのまとめ • 与えられた制約条件を満たす中で、目的関数(スコア)が最大/ 最小になる解を求める問題を数理最適化問題といいます • 数理最適化問題は、以下の 2 つに分類されます

    • 連続最適化問題: 変数 𝑥1 , … , 𝑥𝑛 が連続的な値(実数)をとる • 離散最適化問題: 変数 𝑥1 , … , 𝑥𝑛 がとびとびの値(整数等)をとる 240
  241. 248 4-0 スライドのまとめ • 代表的な連続最適化問題として、線形計画問題が挙げられます • 単体法によって効率的に解くことができます 241 最大化 条件

    𝑥1 + 𝑥2 2𝑥1 + 3𝑥2 ≤ 8 4𝑥1 + 3𝑥2 ≤ 10 ※ 𝑥1 , 𝑥2 は非負 𝑥2 4 2 2 4 6 8 𝑥1 最適解
  242. 248 4-0 スライドのまとめ • 制約なし最適化問題(関数の最大最小を求める)も紹介しました • 山を下って答えを近づける勾配降下法によって、効率的に解くこ とができます 242 最小値

    𝑥 𝑓(𝑥)
  243. 248 4-0 スライドのまとめ • また、離散最適化問題の代表的な解法として 4 つ紹介しました • 特に山登り法などは、競プロの AHC

    などでも利用されます 243 有名なアルゴリズム で効率的に解く 山登り法などを 利用する 近似解法で 妥協する 整数計画 ソルバーに頼る 𝜋 = 3
  244. 248 4-0 スライドのまとめ • 実社会でも、数理最適化で解ける問題はたくさんあります 244 工場の売上最大化 栄養問題 最適な価格設定 日程計画問題

    最大独立集合 紙幣の払い方 ナップザック問題 ビンパッキング 巡回セールスマン 分割問題 10 33 57 38 62
  245. このように、皆さんの生活も 数理最適化の恩恵を受けています。 ※画像は日本オペレーションズ・リサーチ学会「ORを探せ」より引用

  246. 皆さんの周りにも数理最適化があるかもしれません ぜひ、探してみましょう

  247. 248 4-1 参考文献 1. 梅谷俊治:「しっかり学ぶ数理最適化」、講談社(2020) 2. 梅谷俊治:「60分で学ぶ数理最適化」(https://speakerdeck.com/umepon/mathematical-optimization-in-60-minutes) 3. 岩永二郎、石原響太、西村直樹、田中一樹:「Python ではじめる数理最適化」、オーム社(2021)

    4. 大槻兼資:「問題解決力を鍛える!アルゴリズムとデータ構造」、講談社(2020) 5. 米田優峻:「「アルゴリズム×数学」が基礎からしっかり身につく本」、技術評論社(2021) 6. 米田寛峻:「アルゴリズムの世界地図」(https://qiita.com/square1001/items/6d414167ca95c97bd8b2) 7. 宮代隆平:整数計画ソルバー入門(http://web.tuat.ac.jp/~miya/miyashiro_ORSJ.pdf) 8. 宮代隆平:整数計画法メモ(http://web.tuat.ac.jp/~miya/ipmemo.html) 9. 日本オペレーションズ・リサーチ学会:「ORを探せ!ポスター」(http://www.orsj.or.jp/members/poster.html) 10. SCIP Optimization Suite(https://www.scipopt.org/) 11. いらすとやの画像を利用 247
  248. 248 4-1 謝辞 • このスライドを作成するにあたって、大阪大学の梅谷俊治先生 からフィードバックをいただきました。本当にありがとうござ います。 • また、このスライドは中高生向けのイベント「パ研合宿2021」 の講義で用いたものです。聞いてくださった方、ありがとうご

    ざいます。 248