数理計画法 (Mathematical...

27
数理計画法 (Mathematical Programming) Jan. 24, 2020 来嶋 秀治 (Shuji Kijima) システム情報科学研究院 情報学部門 Dept. Informatics, ISEE Todays topics what is mathematical programming? object + subject to 数理計画法 (Mathematical Programming) 電気情報工学科3

Transcript of 数理計画法 (Mathematical...

Page 1: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

数理計画法 (Mathematical Programming)

Jan. 24, 2020

来嶋秀治 (Shuji Kijima)

システム情報科学研究院情報学部門

Dept. Informatics, ISEE

Todays topics

• what is mathematical programming?

• object + subject to

数理計画法 (Mathematical Programming)

電気情報工学科3年

Page 2: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

本題に入る前に

成績評価等

Page 3: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

3

成績評価

•レポート課題 =: z (全10回程度)

講義の最後に提出.

レポートは返却しない.

•中間試験: 12月, =:x (50点満点)

•期末試験: 1月末, =:y (50点満点)

•成績 = x+y + min{(100-(x+y))z, 10} (目安)

• 60点で合格. 追試は無い.

レポート提出は必須ではないが, 提出を強く推奨する.

Page 4: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

4

参考文献

副読本

加藤直樹, 数理計画法, コロナ社, 2007, 2800円+税

久保幹夫(監修), 並木誠(著), Pythonによる数理最適化入門, 朝倉書店, 2018, 3200円+税

参考書

福島雅夫, 新版数理計画入門, 朝倉書店, 2011, 3200円+税

田村明久, 村松正和, 最適化法, 共立出版, 2002, 3000円+税

Page 5: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

数理計画法とは

Oct. 4, 2019

来嶋秀治

システム情報科学研究院情報学部門

今日の課題

•数理計画法 = 最適化の技法

•ルーチン: モデル化, 定式化, 解法

数理計画法(Mathematical Programming)

Page 6: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

数理計画法 (Mathematical programming)6

最小化問題 (minimization)

minimize 𝑓 𝒙

subject to 𝒙 ∈ 𝑆

目的関数

(objective function)

制約 (constraints)

「条件𝒙 ∈ 𝑆の下で,𝑓 𝒙 をとにかく小さくせよ」

Page 7: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

講義計画7

1 10/4 導入 モデル化,定式化,解法

2 10/18 準備 1変数最適化(微分復習)2変数最適化(線形代数復習)

3 10/25 線形計画基礎I 単体法

4 11/1 線形計画基礎II 双対理論

5 11/8 線形計画基礎III 実践: python

6 11/15 非線形(制約なし) 最急降下法,ニュートン法

7 11/22 非線形(制約あり) 未定乗数法,KKT条件

8 11/29 非線形まとめ 大域最適、局所最適、ラグランジュ双対

python

9 12/6 中間試験?

10 12/13 数理計画法I

11 12/20 数理計画法II

12 1/10 数理計画法III

13 1/15 数理計画法IV

14 1/24 数理計画法V

15 1/31 期末試験?

ネットワーク計画 最大流

組合せ最適化 マトロイド,劣モジュラ

ゲーム理論 二人零和ゲーム

多面体論

中間試験の範囲

期末試験の範囲

Page 8: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

8

はじめに: 数理計画法(mathematical programming)とは

(今あるもので)何かを “良く”したい

1. モデル化

2. 定式化

3. 求解

で解決/達成する数学的方法論。

数理計画法 = 最適化 (optimization)の技法

例1. 企業のコストを減らしたい。

例2. 消防署をどこに立てたら良いだろう?

例3. スケジュールをもっと良くしたい。etc.

関連分野

アルゴリズム,プログラム

機械学習

物理,エネルギー

統計

制約論理

Page 9: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

9

数理計画法: モデル化と定式化

何をどうしたいのか? => “目的”

満たすべき条件は? => “制約”

何かを “良く”したい

1. モデル化

2. 定式化

3. 求解

で解決/達成する方法。

例1. 企業のコストを減らしたい。

例2. 消防署をどこに立てたら良いだろう?

例3. スケジュールをもっと良くしたい。etc.

Page 10: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

10

数理計画法: モデル化と定式化

何をどうしたいのか? => “目的”

満たすべき条件は? => “制約”

モデル化

目的は? (具体的に)

条件は? (具体的に)

何かを “良く”したい

1. モデル化

2. 定式化

3. 求解

で解決/達成する方法。

例1. 企業のコストを減らしたい。

例2. 消防署をどこに立てたら良いだろう?

例3. スケジュールをもっと良くしたい。etc.

定式化

objective: 𝑓 𝒙

subject to 𝒙 ∈ 𝑆

Page 11: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

11

この講義で学んで欲しいこと

将来現実に現れる問題を

「如何に “解ける問題” に持ち込めるか」

モデル化

・「精密にすればするほど良い」わけではない。

・現実とかけ離れても仕方がない

・解けるのか!?

講義の大半は、現在知られている「最適化計算法」の紹介

=> 様々な“数学”を駆使

この講義で扱うこと

〇最適化ソルバー(の中の)原理(の基礎)

×どの{ソフト, エンジン, ライブラリ,ソルバー}が良い!

“妥協” も大事!

=> センスの良い妥協を

Page 12: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

標準的な数理計画法12

線形計画法

単体法

双対定理

楕円体法,内点法

多面体論

非線形計画法

最急降下法, ニュートン法

KKT条件/Lagrange関数

凸計画

SDP

ネットワーク計画法

最大フロー最小カット定理

最小費用流

最短路

整数計画法/組合せ最適化

動的計画法

Page 13: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

この講義で扱ったこと13

線形計画法

単体法

双対定理

非線形計画法

最急降下法, ニュートン法

KKT条件/Lagrange関数

整数計画法

P vs NP

TDI/完全単模行列

ネットワーク計画法

最大フロー最小カット定理

Page 14: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

1: 線形計画法(LP: Linear Programming)

Page 15: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

15

主問題 -双対問題

主問題(primal)max. cTxs. t. Ax b

x 0

双対問題(dual)min. yTbs. t. yTA c

y 0

弱双対定理 (問題が許容解を持つならば)

x,y: 実行可能解, cTx yTb

強双対定理 (問題が最適解を持つならば)

x,y: 実行可能解, cTx = bTy解法

単体法

楕円体法

内点法

Page 16: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

2: 非線形計画法(Nonlinear Programming)

Page 17: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

解法

17

非線形最適化

min. f(x)

s.t. gi(x) 0 (i=1,...,m)

hi(x) 0 (i=1,...,l)

x Rn

制約なし

勾配ベクトル (gradient)

ヘッセ行列 (Hessian)

制約あり

KKT条件

最急降下法

Newton法

Lagrange未定乗数法

一次近似

二次近似

連立方程式に変換

Page 18: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

18

KKT条件

Lagrange関数制約あり(不等式制約)の場合

min. f(x)

s.t. gi(x) 0 (i=1,...,m)

x Rn

KKT条件

最適化問題

連立方程式

Page 19: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

19

扱いやすい非線形計画問題

SDP (半正定値計画)

SOCP (二次錐計画)

多項式計画

凸計画双対理論

内点法

cf. 線形計画

Page 20: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

20

局所最適 vs大域的最適 凸性の理論

Kが凸集合

x,y K, (0 1),

x + (1-) y K

fが凸関数

x,y K, (0 1),

f( x + (1-) y) f(x) + (1-) f(y)

凸計画問題

min. f(x)

s.t. x K

Kが凸集合, fが凸関数

x*が局所的最適 (local opt) = x*が大域的最適 (global opt)

Page 21: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

3: 整数計画法(Integer Programming)

Page 22: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

22

整数計画問題

整数計画問題

max. cTx

s.t. Ax b

x Zn

ナップサック問題

max. cTx

s.t. Ax b

x {0,1}n

解が0-1整数の場合、

0-1整数計画

と言う。

NP困難

Page 23: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

4: ネットワーク計画法(Network Programming)

Page 24: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

24

最大流問題 --復習

強双対定理

最大流 = 最小カット

問題

s-t最大流を求めよ.

弱双対定理

フロー カット

解法

Ford-Fulkerson

Edmonds-Karp

Dinic

s t

3

2

5

43

1

12

33

3

3

3

Page 25: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

現在の数理計画法

Page 26: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

この講義で扱ったこと26

線形計画法

単体法

双対定理

非線形計画法

最急降下法, ニュートン法

KKT条件/Lagrange関数

整数計画法

P vs NP

TDI/完全単模行列

ネットワーク計画法

最大フロー最小カット定理

未解決多項式時間アルゴリズム?

汎用ソルバー CPLEX, glpk, SCIP SDPA, SeDuMiメタヒューリスティクス

発展的話題マトロイド理論劣モジュラ関数最小化

研究課題高速アルゴリズム近似アルゴリズム P vs NP, etc.

Page 27: 数理計画法 (Mathematical Programming)tcs.inf.kyushu-u.ac.jp/~kijima/MP19/MP19-14J.pdfはじめに: 数理計画法(mathematical programming)とは (今あるもので)何かを“良く”したい

おわり

27