Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

248 1-0 自己紹介 2 米田 優峻(よねだ まさたか) • 2002年生まれ • 2015年筑波大学附属駒場中学校入学 • 2021年東京大学入学 主な実績 • AtCoder には E869120 として参加(レッドコーダー) • 国際情報オリンピック‘18,‘19,‘20 金メダル • 著書「アルゴリズム×数学」2 万部突破

Slide 3

Slide 3 text

248 1-0 このスライドについて • 数理最適化は、様々な問題を解決するうえでとても大切なツールです。 • 本スライドでは、数理最適化を概観し、基本的な問題とその解き方を分かり やすく解説することを目標にしています。 • 本スライドによって、数理最適化に興味を持っていただければ嬉しいです。 3 注意事項 本スライドは入門的な教材であるため、すべてのアルゴリズムを説明しているわけではありませ ん。より深く知りたい人は、参考文献(本スライドの巻末)などで調べてみてください。

Slide 4

Slide 4 text

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 目次

Slide 5

Slide 5 text

第 1 章 数理最適化とは

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

248 1-1 最適化問題の例 10 他にもどのような最適化問題が あるのでしょうか?

Slide 11

Slide 11 text

248 1-1 事例 1:最短経路問題 11 問題概要 目的関数(スコア) 始点から終点まで、できる限り短い時間 で行く方法を求める問題 東京 新宿 渋谷 上野 羽田 空港 品川 5分 5分 17分 13分 5分 12分 11分 19分 8分 池袋 行くのにかかった時間(分)

Slide 12

Slide 12 text

248 1-1 事例 2:カロリー最大化 12 問題概要 目的関数(スコア) 500 円以内の買い物で、できる限り多く のカロリーを得る方法を求める問題 摂取したカロリー(kcal) 200円 160kcal 150円 240kcal 300円 400kcal 食パンとラーメンで 最適解 640kcal が得られます

Slide 13

Slide 13 text

248 1-1 事例 3:工場の売上最大化 13 問題概要 目的関数(スコア) できる限り多くの売上を得るように、製 品を作る方法を求める問題 売上金額(万円) ×1kg 製品A 1kg当たり 製品B 1kg当たり ×3kg 在庫量 ×4kg ×2kg ×1kg ×1kg 製品 A を 1kg、製品 B を 2kg 作るのが最適 (売上は 20 万円)

Slide 14

Slide 14 text

248 1-1 事例 4:箱詰めの問題 14 問題概要 目的関数(スコア) 重さ 10kg まで入れられる箱がいくつか あり、出来るだけ少ない数の箱を使って 荷物を詰める 必要な箱の数(個数) 9 7 3 6 4 4 3 2 2 3 3 4 4 6 7 9

Slide 15

Slide 15 text

248 1-1 事例 5:最短時間で都市を巡る 15 問題概要 目的関数(スコア) できるだけ短い時間で、N 個の都市をす べて一度ずつ巡る方法を求める問題 めぐるのにかかる時間(分) 1 2 3 6 7 4 5 2 分 2 分 4 分 2 分 1 分 4 分 3 分

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

このように、皆さんの生活も 数理最適化の恩恵を受けています。 ※画像は日本オペレーションズ・リサーチ学会「ORを探せ」より引用

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

第 2 章 連続最適化問題

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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 は非負

Slide 26

Slide 26 text

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 は非負 グラフ を描いて みよう

Slide 27

Slide 27 text

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 は非負 グラフ を描いて みよう

Slide 28

Slide 28 text

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 の どれかが最適解

Slide 29

Slide 29 text

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 の どれかが最適解

Slide 30

Slide 30 text

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 の どれかが最適解

Slide 31

Slide 31 text

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 の どれかが最適解

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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 問題設定は 分かりましたか?

Slide 34

Slide 34 text

248 2-0 線形計画問題の定式化 34 問題 変数(次元)が 𝑛 個、制約条件が 𝑚 個のとき 𝑐1 𝑥1 + 𝑐2 𝑥2 + ⋯ + 𝑐𝑛 𝑥𝑛 の最大値を求めよ 条件 • 𝑎1,1 𝑥1 + 𝑎1,2 𝑥2 + ⋯ + 𝑎1,𝑛 𝑥𝑛 ≤ 𝑏1 : • 𝑎𝑚,1 𝑥1 + 𝑎𝑚,2 𝑥2 + ⋯ + 𝑎𝑚,𝑛 𝑥𝑛 ≤ 𝑏𝑚 • (𝑥1 , 𝑥2 , … , 𝑥𝑛 は負の数ではない)

Slide 35

Slide 35 text

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 は非負

Slide 36

Slide 36 text

単体法のイメージ 単体法の計算過程 線形計画問題の応用例 その他の連続最適化問題 線形計画問題とは 2.0 2.1 2.2 2.3 2.4

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

248 2-1 線形計画問題を解くには…? まず、「交点の位置」を全探索する方針が考えられる 変数が 2 個、制約条件が 4 個の場合は…? 40 交点は 15 通り 変数と制約条件が少なければ コンピュータならば一瞬で探索できるが…?

Slide 41

Slide 41 text

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 は非負

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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 平面)があるが、𝑛 次元なの でこのうち 𝑛 本を選んだときの共通部分が点になる • すなわち、交点の数は二項係数 𝐶(𝑛 + 𝑚, 𝑛) 個となる

Slide 46

Slide 46 text

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 変数まで増えると、コンピュータでも無理! ※画像は「フカシギの数え方」より引用

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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

Slide 59

Slide 59 text

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

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

248 2-1 補足:上手くいく理由 • なお、「解が改善しなくなったら最適解」である理由は、条件を 満たす領域が凸(トツ)になることから説明できる • たとえば以下のような領域になることは絶対にあり得ない 63 条件を 満たす領域 条件を満たす

Slide 64

Slide 64 text

単体法のイメージ 単体法の計算過程 線形計画問題の応用例 その他の連続最適化問題 線形計画問題とは 2.0 2.1 2.2 2.3 2.4

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

248 2-2 現在のなやみ • 単体法のイメージは分かったが…? • どうやって「隣接する交点」の位置が求められるのか? • 具体的にどうやって実装すればいいのか? 本節では、具体的な計算方法を解説します ※注意:講義全体の中で数式が一番多く出てきます。 数学が苦手な人は飛ばしても構いません。 66

Slide 67

Slide 67 text

248 2-2 単体法の計算:ステップ 1 67 ステップ 1 スラック変数の導入

Slide 68

Slide 68 text

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 は非負 グラフ 以下のような線形計画問題を解きたいとします

Slide 69

Slide 69 text

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 は非負 グラフ 以下のような線形計画問題を解きたいとします まず、スラック変数(余裕を表す)を導入して等式にします 負になったらダメ

Slide 70

Slide 70 text

248 2-2 単体法の計算:ステップ 2 70 ステップ 2 実際に計算を進める(1 回目)

Slide 71

Slide 71 text

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)

Slide 72

Slide 72 text

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)

Slide 73

Slide 73 text

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 増加

Slide 74

Slide 74 text

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 増加

Slide 75

Slide 75 text

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)

Slide 76

Slide 76 text

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

Slide 77

Slide 77 text

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

Slide 78

Slide 78 text

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

Slide 79

Slide 79 text

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 にします 最大化 条件

Slide 80

Slide 80 text

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 を代入

Slide 81

Slide 81 text

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

Slide 82

Slide 82 text

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 式を整理 式を整理

Slide 83

Slide 83 text

248 2-2 単体法の計算:ステップ 3 83 ステップ 3 実際に計算を進める(2 回目)

Slide 84

Slide 84 text

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 増加

Slide 85

Slide 85 text

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 増加

Slide 86

Slide 86 text

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)

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

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

Slide 89

Slide 89 text

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

Slide 90

Slide 90 text

248 2-2 単体法の計算:ステップ 4 90 ステップ 4 実際に計算を進める(3 回目)

Slide 91

Slide 91 text

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 増加

Slide 92

Slide 92 text

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

Slide 93

Slide 93 text

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 存在しなければ最適解

Slide 94

Slide 94 text

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

Slide 95

Slide 95 text

248 2-3 補足:単体法の問題点 • これまでは、暗黙のうちに初期解を 𝑥1 , 𝑥2 , … , 𝑥𝑛 = (0, 0, … , 0) に設定していた • しかし、この初期解が制約条件を満たさず、 単体法が成立しないことも多い 𝑥1 𝑥2 1 2 3 1 2 3 現 95 条件を 満たす領域 最初に「条件を満たす初期解」を見つける 二段階単体法を使うと解決! 二段階単体法は、別の線形計画問題を 解いて初期解を見つけてから、元の問 題を解く手法です。 初期解を見つける際には「どれくらい の制約違反までなら許されるか」を表 すパラメータ 𝑥0 を追加することがあ ります。 なお、本スライドでは枚数の都合上、 詳しい説明は割愛させていただきます。

Slide 96

Slide 96 text

単体法のイメージ 単体法の計算過程 線形計画問題の応用例 その他の連続最適化問題 線形計画問題とは 2.0 2.1 2.2 2.3 2.4

Slide 97

Slide 97 text

248 2-3 線形計画問題の応用例 97 1 2 3 4 工場の売上最大化 栄養問題 最適な価格設定 日程計画問題 世の中の様々な問題は 線形計画問題に帰着することができます

Slide 98

Slide 98 text

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

Slide 99

Slide 99 text

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

Slide 100

Slide 100 text

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

Slide 101

Slide 101 text

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

Slide 102

Slide 102 text

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

Slide 103

Slide 103 text

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 線形計画問題に 帰着できた

Slide 104

Slide 104 text

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 当たり

Slide 105

Slide 105 text

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 当たり

Slide 106

Slide 106 text

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 グラム)

Slide 107

Slide 107 text

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 グラム) 赤

Slide 108

Slide 108 text

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 グラム) 緑 赤

Slide 109

Slide 109 text

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 グラム)

Slide 110

Slide 110 text

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 グラム) 線形計画問題に 帰着できた

Slide 111

Slide 111 text

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

Slide 112

Slide 112 text

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

Slide 113

Slide 113 text

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 最小化

Slide 114

Slide 114 text

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

Slide 115

Slide 115 text

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

Slide 116

Slide 116 text

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

Slide 117

Slide 117 text

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 線形計画問題に 帰着できた

Slide 118

Slide 118 text

248 2-3 その他の応用例 日程計画問題 • 仕事が 𝑁 個あり、仕事 𝑖 (1 ≤ 𝑖 ≤ 𝑁) には 𝑝𝑖 日かかる。 • 仕事 𝑖 (1 ≤ 𝑖 ≤ 𝑁) を早く終わらせるには、1 日当たり 𝑔𝑖 円必要。 • 全部の仕事を 𝑇 日間で終わらせるには、何円必要か? • ただし「仕事〇〇をしてから仕事△△をする」といった依存関係も与えられる。 その他の有名な問題も線形計画に帰着できる • 最短経路問題、最大フロー問題、輸送問題、回帰問題、etc. 118

Slide 119

Slide 119 text

単体法のイメージ 単体法の計算過程 線形計画問題の応用例 その他の連続最適化問題 線形計画問題とは 2.0 2.1 2.2 2.3 2.4

Slide 120

Slide 120 text

248 2-4 制約なし最適化問題 120 関数 𝑓(𝑥) の最小値を求めてください。 ※関数は二変数関数 𝑓(𝑥1 , 𝑥2 ) や多変数関数 𝑓(𝑥1 , 𝑥2 , … , 𝑥𝑛 ) になることもあります 最小値(これを求めたい) 𝑥 𝑓(𝑥)

Slide 121

Slide 121 text

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 です!

Slide 122

Slide 122 text

248 2-4 方法 2:勾配降下法を使う 122 そこで、山を下っていく方向に答えを動かしていく勾配降下法という方法を使う と効率的である。 最小値 𝑥 𝑓(𝑥) 山を下る

Slide 123

Slide 123 text

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

Slide 124

Slide 124 text

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 に設定

Slide 125

Slide 125 text

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

Slide 126

Slide 126 text

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

Slide 127

Slide 127 text

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

Slide 128

Slide 128 text

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

Slide 129

Slide 129 text

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

Slide 130

Slide 130 text

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

Slide 131

Slide 131 text

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 急速に最小値に 近づいていく

Slide 132

Slide 132 text

248 2-4 勾配降下法に関する注意点 • 全ケースで必ず正しい答えを導けるとは限らない • 以下のように谷が複数ある場合、上手くいかないこともある 132 最小値 𝑥 𝑓(𝑥) 初期解 おっと!

Slide 133

Slide 133 text

248 2-4 制約付き最適化問題 133 • 最後に、制約なし最適化問題(関数の最大値を求める問題)に制約を付けた以 下のような問題を 制約付き最適化問題 という。 • かなり難しいが、ペナルティ関数法などを使うと解ける 問題例 1 最小化 条件 2𝑥2 + 2𝑦2 + 𝑥𝑦 𝑥 + 2𝑦 ≤ −1 制約を 満たす範囲 最小値

Slide 134

Slide 134 text

第 3 章 離散最適化問題

Slide 135

Slide 135 text

248 3-0 離散最適化問題とは • 変数が整数であるなど、とびとびの値しか選べないような最適化問 題を離散最適化問題という • たとえば、モノの選び方を考える問題は離散最適化問題(例:0.5 個選ぶなどは許されない) 135 A の生産量 B の生産量 条件を満たす範囲 (連続最適化) 品物 A の個数 品物 B の個数 条件を満たす解 (離散最適化)

Slide 136

Slide 136 text

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

Slide 137

Slide 137 text

248 3-0 離散最適化問題の例 137 たとえば、カードをいくつか選んで合計を 100 にできるだけ近づ ける問題を考える 10 30 57 38 75 「0.5 枚選ぶ」 は許されない とびとびの値しか選べないので 離散最適化問題

Slide 138

Slide 138 text

248 3-0 離散最適化問題 138 離散最適化問題は どうやって解けるのか?

Slide 139

Slide 139 text

248 3-0 離散最適化問題の代表的解法 139 1 2 3 4 有名なアルゴリズム で効率的に解く 山登り法などを 利用する 近似解法で 妥協する 整数計画 ソルバーに頼る 本講義では、代表的な解法として 4 つを紹介します 𝜋 = 3

Slide 140

Slide 140 text

解ける問題に落とす 山登り法と焼きなまし法 近似アルゴリズム 整数計画問題 離散最適化問題とは 3.0 3.1 3.2 3.3 3.4

Slide 141

Slide 141 text

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

Slide 142

Slide 142 text

248 3-1 アルゴリズム 1:貪欲法 142 アルゴリズムの例 1 貪欲法

Slide 143

Slide 143 text

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

Slide 144

Slide 144 text

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

Slide 145

Slide 145 text

248 3-1 例 1:紙幣の問題 145 この問題を いかにして解くか?

Slide 146

Slide 146 text

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

Slide 147

Slide 147 text

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

Slide 148

Slide 148 text

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

Slide 149

Slide 149 text

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

Slide 150

Slide 150 text

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

Slide 151

Slide 151 text

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

Slide 152

Slide 152 text

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

Slide 153

Slide 153 text

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

Slide 154

Slide 154 text

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

Slide 155

Slide 155 text

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

Slide 156

Slide 156 text

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

Slide 157

Slide 157 text

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

Slide 158

Slide 158 text

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

Slide 159

Slide 159 text

248 3-1 何故この方法で上手くいく? 159 • 1000 円札を 5 枚以上使っている • 5000 円札を 2 枚以上使っている • 上記のいずれかを満たすとき、明らかに枚数を減らせる • 一方で、1000 円札 4 枚以下、5000 円札 1 枚以下で支払う方法は 1 通り しかない(+ 貪欲法はその条件を満たす) 貪欲法こそが最適!

Slide 160

Slide 160 text

248 3-1 アルゴリズム 2:動的計画法 160 アルゴリズムの例 2 動的計画法

Slide 161

Slide 161 text

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

Slide 162

Slide 162 text

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

Slide 163

Slide 163 text

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

Slide 164

Slide 164 text

248 3-1 例 2:最適な移動経路 164 この問題を いかにして解くか? ※ダイクストラ法でも解けますが、ここでは動的計画法を用いて解きます。 ※地点数が 5 なので全部の経路を調べても解けますが、地点数に対して指数関数的に増加して効率が悪いです。

Slide 165

Slide 165 text

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]

Slide 166

Slide 166 text

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 分

Slide 167

Slide 167 text

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 分

Slide 168

Slide 168 text

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分

Slide 169

Slide 169 text

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分

Slide 170

Slide 170 text

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分

Slide 171

Slide 171 text

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

Slide 172

Slide 172 text

248 3-1 この節のまとめ この節では、2 つのアルゴリズムを紹介しました • 貪欲法:「次の手だけを考えたときに最適なムーブ」を繰り返してい く設計技法 • 動的計画法:前の結果を利用して、小さい問題から順番に答えを求め ていく設計技法 172

Slide 173

Slide 173 text

248 3-1 この節のまとめ その他にも、多くの問題について「効率的に解けるアルゴリズム」が存在する ことが知られています 173 ナップザック問題 最短経路問題 編集距離 区間スケジューリング まずは効率的なアルゴリズムを考えよう! green gree grey

Slide 174

Slide 174 text

248 3-1 本格的に学びたい人へ • 本スライドは「アルゴリズム入門」ではないので、離散最適化問題のアル ゴリズムはあまり詳しく扱いません • 詳しく知りたい方は、以下の書籍などを読んでみてください: • 米田優峻:「「アルゴリズム×数学」が基礎からしっかり身につく本」、技術評論社 (2021) • 大槻兼資:「問題解決力を鍛える!アルゴリズムとデータ構造」、講談社(2020) 174

Slide 175

Slide 175 text

解ける問題に落とす 山登り法と焼きなまし法 近似アルゴリズム 整数計画問題 離散最適化問題とは 3.0 3.1 3.2 3.3 3.4

Slide 176

Slide 176 text

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

Slide 177

Slide 177 text

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

Slide 178

Slide 178 text

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

Slide 179

Slide 179 text

248 3-2 アルゴリズムの限界 179 一体どうすればいいのか?

Slide 180

Slide 180 text

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

Slide 181

Slide 181 text

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

Slide 182

Slide 182 text

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

Slide 183

Slide 183 text

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

Slide 184

Slide 184 text

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

Slide 185

Slide 185 text

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

Slide 186

Slide 186 text

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

Slide 187

Slide 187 text

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

Slide 188

Slide 188 text

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

Slide 189

Slide 189 text

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

Slide 190

Slide 190 text

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

Slide 191

Slide 191 text

248 3-2 例 2:巡回セールスマン問題 191 巡回セールスマン 問題 できるだけ短い時間で、すべての都市を 1 度ずつ巡る 方法を求めてください。 1 2 3 6 7 4 5 2 分 2 分 4 分 2 分 1 分 4 分 3 分

Slide 192

Slide 192 text

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

Slide 193

Slide 193 text

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

Slide 194

Slide 194 text

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

Slide 195

Slide 195 text

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

Slide 196

Slide 196 text

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

Slide 197

Slide 197 text

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 と呼ばれる)

Slide 198

Slide 198 text

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 と呼ばれる)

Slide 199

Slide 199 text

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 と呼ばれる)

Slide 200

Slide 200 text

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 と呼ばれる)

Slide 201

Slide 201 text

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 と呼ばれる)

Slide 202

Slide 202 text

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 完全な解が得られた!

Slide 203

Slide 203 text

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

Slide 204

Slide 204 text

248 3-2 焼きなまし法 204 この問題は、一定の確率でスコアを悪くする変更を行うことで解決 できる(これを焼きなまし法という) 80% 60% 40% 20% 採 用 確 率 0 +20 +10 -20 -10 スコアの変化 スコアが多少悪く なっても 20% 採用

Slide 205

Slide 205 text

解ける問題に落とす 山登り法と焼きなまし法 近似アルゴリズム 整数計画問題 離散最適化問題とは 3.0 3.1 3.2 3.3 3.4

Slide 206

Slide 206 text

248 3-3 焼きなまし法の欠点 • 入力データが大きいときに使いづらい • 精度保証(必ず最適解の 1.5 倍以下になるなど)が保証しづらい 206 近似アルゴリズムの出番!

Slide 207

Slide 207 text

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

Slide 208

Slide 208 text

248 3-3 例 1:ビンパッキング問題 208 ビンパッキング (箱詰めの問題) 重さ 𝑆 まで詰められる箱がいくつかあるので、できる だけ少ない数の箱で、すべての荷物を詰める 9 7 3 6 4 4 3 2 2 3 3 4 4 6 7 9

Slide 209

Slide 209 text

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

Slide 210

Slide 210 text

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

Slide 211

Slide 211 text

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

Slide 212

Slide 212 text

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

Slide 213

Slide 213 text

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 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。

Slide 214

Slide 214 text

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 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。

Slide 215

Slide 215 text

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 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。

Slide 216

Slide 216 text

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 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。

Slide 217

Slide 217 text

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 つずつ順番に荷物を詰めていく。 • 荷物は、詰められる中で最も番号が小さい箱に詰める。

Slide 218

Slide 218 text

248 3-3 例 1:ビンパッキング問題 218 このアルゴリズムは どれくらいの精度が保証できる?

Slide 219

Slide 219 text

248 3-3 近似アルゴリズムの精度 219 実は、半分以下しか詰まっていない箱は高々 1 つしか存在しない → 2-近似が保証できる! 7 9 4 5 3 2 2 7 9 4 5 3 2 2 もし半分以下の箱が 2 つあったら… First Fit 法では 全部左側に 入っているはず!

Slide 220

Slide 220 text

248 3-3 この節のまとめ • このように、アルゴリズムによっては 2 倍などの近似精度が保証 できる場合がある • また、2-近似だからといって全てのケースで 2 倍になるとは限ら ず、平均的なケースでは遥かに良い近似精度になることも 220 少ない計算量である程度の解が出せる!

Slide 221

Slide 221 text

解ける問題に落とす 山登り法と焼きなまし法 近似アルゴリズム 整数計画問題 離散最適化問題とは 3.0 3.1 3.2 3.3 3.4

Slide 222

Slide 222 text

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 最適解

Slide 223

Slide 223 text

248 3-4 整数計画問題の例 223 整数計画問題は NP 困難 しかし… 優秀なソルバーがある!

Slide 224

Slide 224 text

248 3-4 整数計画ソルバーについて • 世界では商用・非商用含め、様々なソルバーがある • 商用:Gurobi, CPLEX など • 非商用:SCIP, CBC など • 変数と制約条件の数が数千オーダーでも解けるものも • NP 困難なのに… とても実用的! 224

Slide 225

Slide 225 text

248 3-4 SCIP について 225 SCIP 非商用(無料)ソルバーの中で最も高速なものの一つ https://www.scipopt.org/ からインストールできる ※講義中にインストールする必要はありません。

Slide 226

Slide 226 text

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

Slide 227

Slide 227 text

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

Slide 228

Slide 228 text

248 3-4 整数計画問題の応用 228 1 2 3 4 最大独立集合 分割問題 k-センター問題 数独ソルバー 世の中の様々な問題は 整数計画問題に帰着することができます 10 33 57 38 62

Slide 229

Slide 229 text

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

Slide 230

Slide 230 text

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

Slide 231

Slide 231 text

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

Slide 232

Slide 232 text

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

Slide 233

Slide 233 text

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 一方しか 選べない 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。

Slide 234

Slide 234 text

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 一方しか 選べない 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。

Slide 235

Slide 235 text

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 一方しか 選べない 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。

Slide 236

Slide 236 text

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 以下のようなグラフについて、隣接する 頂点を両方選ばないように、できるだけ 多くの頂点を選択してください。

Slide 237

Slide 237 text

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 以下であることは、制約の個数に含めていない。

Slide 238

Slide 238 text

248 3-3 この節のまとめ • 整数計画ソルバーは非常に優秀 • 最終手段として、整数計画問題(Integer Programming)に 帰着させることによる問題解決も可能 238

Slide 239

Slide 239 text

第 4 章 講義のまとめ

Slide 240

Slide 240 text

248 4-0 スライドのまとめ • 与えられた制約条件を満たす中で、目的関数(スコア)が最大/ 最小になる解を求める問題を数理最適化問題といいます • 数理最適化問題は、以下の 2 つに分類されます • 連続最適化問題: 変数 𝑥1 , … , 𝑥𝑛 が連続的な値(実数)をとる • 離散最適化問題: 変数 𝑥1 , … , 𝑥𝑛 がとびとびの値(整数等)をとる 240

Slide 241

Slide 241 text

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 最適解

Slide 242

Slide 242 text

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

Slide 243

Slide 243 text

248 4-0 スライドのまとめ • また、離散最適化問題の代表的な解法として 4 つ紹介しました • 特に山登り法などは、競プロの AHC などでも利用されます 243 有名なアルゴリズム で効率的に解く 山登り法などを 利用する 近似解法で 妥協する 整数計画 ソルバーに頼る 𝜋 = 3

Slide 244

Slide 244 text

248 4-0 スライドのまとめ • 実社会でも、数理最適化で解ける問題はたくさんあります 244 工場の売上最大化 栄養問題 最適な価格設定 日程計画問題 最大独立集合 紙幣の払い方 ナップザック問題 ビンパッキング 巡回セールスマン 分割問題 10 33 57 38 62

Slide 245

Slide 245 text

このように、皆さんの生活も 数理最適化の恩恵を受けています。 ※画像は日本オペレーションズ・リサーチ学会「ORを探せ」より引用

Slide 246

Slide 246 text

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

Slide 247

Slide 247 text

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

Slide 248

Slide 248 text

248 4-1 謝辞 • このスライドを作成するにあたって、大阪大学の梅谷俊治先生 からフィードバックをいただきました。本当にありがとうござ います。 • また、このスライドは中高生向けのイベント「パ研合宿2021」 の講義で用いたものです。聞いてくださった方、ありがとうご ざいます。 248