Presentation is loading. Please wait.

Presentation is loading. Please wait.

二千十三年五月 あたらしい数理最適化 出版記念セミナー 主催 近代科学社 オクトーバースカイ 共催 構造計画研究所

Similar presentations


Presentation on theme: "二千十三年五月 あたらしい数理最適化 出版記念セミナー 主催 近代科学社 オクトーバースカイ 共催 構造計画研究所"— Presentation transcript:

1 二千十三年五月 あたらしい数理最適化 出版記念セミナー 主催 近代科学社 オクトーバースカイ 共催 構造計画研究所

2 まずは自己紹介 久保幹雄 東京海洋大学 サプライ・チェイン最適化工学 フェイスブック:
ホームページ:

3 アジェンダ 13:00-13:50 「あたらしい数理最適化」概説 16:00-16:50 数理最適化の応用例 と実験的解析

4 前半 「あたらしい数理最適化」概説 この本のどこが新しいのか 数理最適化の基本の基本 定式化のコツ

5 あたらしい 数理最適化って 本が出たらしいけど 何があたらしいの?

6 あたらしいこと 0 数理最適化 (Mathematical Optimization) Since 2010

7 Programming) Up to 2010 its name
昔は... 数理計画 (Mathematical Programming) Up to 2010 its name was "Mathematical Programming Society みんなの投票で改名!(最適化に1票!)

8 Dantzig (1947) Programming in linear structure
Koopmans (1948) Linear Programming Dorfman (1949) Mathematical Programming

9 あたらしいこと 1 他のテキストとは違って 解法の中身より 使いこなすためのテク

10 ピボット選択 有限収束の証明 改訂単体法 などは一切なし

11 双対性 分枝限定法 列生成 分枝カット法 そして二次錘最適化まで! きちんと解説

12 あたらしいこと 2 Python言語ですぐ解ける 原案:PythonとGurobi でぐんぐん解ける!(小山社長)

13 Pythonとは When he began implementing Python, Guido van Rossum was also reading the published scripts from “Monty Python’s Flying Circus”, a BBC comedy series from the 1970s. Van Rossum thought he needed a name that was short, unique, and slightly mysterious, so he decided to call the language Python.

14 MITの講義の 表紙

15 import すれば何でもできる! import gurobipy #数理最適化 import scop #制約最適化 import optseq #スケジューリング import antigravity (空を飛ぶ?)

16 あたらしいこと 3 色々なソルバーを紹介 数理最適化 Gurobi 制約最適化 SOCP スケジューリング OptSeq

17 Gurobiとは Zonghao Gu, Edward Rothberg,Robert Bixby

18 Gurobiとは Zonghao Gu Edward Rothberg Robert Bixby

19 なぜGurobi ? (他にもたくさんあるじゃない) 混合整数 線形,凸二次,二次錘最適化 において(たぶん)最速
(MIPソルバーの限界を見極めたい!) これでダメなら,他でもダメ

20 なぜGurobi ? マルチコア対応 長時間まわしても壊れない(安定性抜群) Pythonからの呼び出しが“容易”
(他のソルバーは,呼び出し“可”レベル) 会議中でも実装可能!

21 なぜGurobi ? その3 プロ仕様の出力(とある実際問題のログ)
Optimize a model with 4794 rows, 4777 columns and nonzeros Presolve removed 4483 rows and 2877 columns Presolve time: 0.05s Presolved: 311 rows, 1900 columns, 4467 nonzeros Variable types: 25 continuous, 1875 integer (1863 binary) Found heuristic solution: objective Found heuristic solution: objective Root relaxation: objective e+02, 351 iterations, 0.01 seconds

22 SCOPとは 野々部先生,茨木先生作 Tabu Searchに基づく制約最適化ソルバー Gurobiでダメな問題でも大丈夫
(でも最適性の保証はなし!)

23 SCOP & OptSeq 野々部先生 茨木先生

24 時間割作成 看護婦スケジューリングの 国際コンペで好成績! 後で,野々部先生が詳しくお話 してくれると思います

25 Shift Master (構造計画研究所様)でも採用!

26 OptSeqとは 野々部先生,茨木先生作 Tabu Searchに基づく 汎用」スケジューリング最適化ソルバー
Gurobiでダメな問題でも大丈夫 モデル化の工夫で実務問題の多くをカバー

27 SCOP, OptSeqともに Pythonインターフェイスあり! (しかもPythonのソース開示!) 上手なメタヒューリスティクス => 汎用なのに高性能!

28 あたらしいこと 4 色々な実用的+代表的な 問題例で比較 後半の講演でお話しします.

29 あたらしいこと 5 二次錘最適化 (second order cone optimization )
あたらしいこと 5 二次錘最適化 (second order cone optimization ) 後で,村松先生が詳しくお話してくれると思います

30 数理最適化とは? お金を儲けたいんだよね- でも,色々としがらみがあってね-.

31 数理最適化とは? maximize  お金 subject to しがらみ 目的関数 制約条件

32 数理最適化とは? maximize f(x) subject to g(x)≧0 x ∈ X

33 線形最適化とは? max. cx s.t. Ax≦b x は実数

34 解法 目的関数 内点法 単体法

35 使い分け 基本はデフォルト(双対単体法)で 単体法が遅いときには,内点法!

36 どこまで解ける? -- GUROBI-5.5.0 内点法
rail4284 4284行 非ゼロ L1_d10_40 80477行 420366列 非ゼロ 非ゼロ要素数   (Mittelmannによる実験)

37 整数最適化とは? max. cx s.t. Ax≦b x は整数

38 目的関数 解法:分枝限定法=基本は線形最適化

39 目的関数 上界 整数解 実行可能解 下界 分枝操作

40 コツ 1 整数最適化に対しては, 良い定式化をしよう! 上界と下界のギャップが 小さい定式化

41 そのためには 大きな数Mを用いた 実数変数≦M・整数変数 はなるべく避ける!

42 コツ 2 解が対称性をもつ場合 には注意!

43 対称性とは? グラフ彩色問題 「点」に色を塗る!枝の両端点は別色.

44 対称性とは? グラフ彩色問題の解(の1つ) 「点」に色を塗る!枝の両端点は別色.

45 対称性とは? 赤,青,黄を交換しても同じ解!

46 分枝限定法の基本 X1,黄色 = 0.5 緩和問題 点1は黄色 に塗る 点1は黄色に 塗らない X1,黄色 = 1 X1,黄色 = 0

47 分枝しても限定できない! 点1は黄色に塗らない

48 分枝しても限定できない! 点1は青色に塗らない

49 やっと限定操作 点1は黄色に塗らない 点1は赤色に塗らない

50 解決法:対称性を除去 無記名の「色」に優先順序を付加 例: 赤使用 ≧ 青使用 ≧ 黄使用 でも,あまり効かない(実験は後ほど)

51 対称性の例2 ビンパッキング問題 色々なアイテムを「同じ大きさ」の箱(ビン)に詰める! 箱の数を最小に!(=すきまを最小に!)

52 対称性の例2 最適解(の1つ) 箱の番号を変えても同じ解!

53 X1,箱1 = 1 X1,箱1 = 0 分枝限定法を使うと... X1,箱1 = 0.5 緩和問題 アイテム1は 箱1に入れる アイテム1は
箱1に入れない X1,箱1 = 1 X1,箱1 = 0

54 分枝しても限定できない! アイテム1 箱1 アイテム1は箱2に入れない アイテム1 アイテム1 アイテム1は箱1に入れない

55 解決法:パターンの列挙 ・・・・ アイテムをちょうど1つ含むように (たくさんの)パターンから選択

56 コツ 3 (パターン)変数の数が 非常に多い => 列生成法

57 min. cx s.t. Ax=b 列生成法 c A 行列 Aが超横長 必要な「列」だけ生成!

58 コツ 4 制約の数が非常に 多い=> 切除平面法 もしくは分枝カット法

59 min. cx s.t. Ax=b 切除平面法 A b 行列 Aが超縦長 必要な「行」だけ生成! 切除平面(カット)

60 分枝カット法 A b 分枝する度にカットを追加!

61 例: 巡回セールスマン問題 すべての点をちょうど1回通過する最短巡回路

62 巡回セールスマン問題 の最適解 すべての点をちょうど1回通過する最短巡回路

63 定式化 点に接続する枝の本数=2 for all 点 (次数制約)

64 定式化 点に接続する枝の本数=2 for all 点 (次数制約)

65 足りない制約を付加 枝の本数<点の数 for all 点の部分集合 (部分巡回路除去制約) この中の枝の本数 2本以下!

66 コツ 5 特殊順序集合 Special Ordered Setを 使いこなそう!

67 A>0 or B>0 or C>0 => 変数 A,B,C はSOSと宣言
SOS Type 1 変数のうちの高々1つが正 特殊な分枝操作で高速化 A>0 or B>0 or C>0 => 変数 A,B,C はSOSと宣言

68 SOS Type 2 連続する高々2つの変数が正 [0 0 0 0.5 0.4 0 0] => OK
[ ] => NG [ ] => OK 区分的線形関数の宣言で使用

69 線分の表現

70 区分的線形関数の表現 はSOS Type 2

71 コツ 6 最大値を最小化する 目的関数には注意!

72 線形最適化での 常套手段 min. max. f(x,y) y x

73 線形最適化での 常套手段 min. max. f(x,y) y x =zと置いて

74 線形最適化での 常套手段 min. max. f(x,y) y x =zと置いて min. z s.t. f(x,y)≦z

75 (混合)整数最適化では, これをやると終わらない! 問題に応じた工夫(二分探索) もしくは他の手法を用いる!

76 謝辞 Acknowledgement

77 主催 近代科学社  小山社長,大塚様 オクトーバースカイ          和多田社長,中村様

78 共催 & 会場提供 構造計画研究所 斉藤 様 池水 様

79 SCOP & OptSeq 野々部先生 茨木先生

80 Experimental Analysis
All Python Codes Experimental Analysis ジョアン(ジョン)・ペドロ・ペドロソ先生 「ジョア」ではないらしい

81 村松先生@電通大 Another Co-Author Abdur

82 樋口(ペドロソ)真美さん 綺麗な表紙をありがとう!

83 ご来場の皆様 懇親会もあります!


Download ppt "二千十三年五月 あたらしい数理最適化 出版記念セミナー 主催 近代科学社 オクトーバースカイ 共催 構造計画研究所"

Similar presentations


Ads by Google