二千十三年五月 あたらしい数理最適化 出版記念セミナー

Post on 04-Jan-2016

46 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

二千十三年五月 あたらしい数理最適化 出版記念セミナー. 主催 近代科学社 オクトーバースカイ 共催 構造計画研究所. http://www.logopt.com/book/gurobi.htm. まずは自己紹介. 久保幹雄. 東京海洋大学 サプライ・チェイン最適化工学. フェイスブック: http://www.facebook.com/mikio.kubo.737 ホームページ: http://www.logopt.com/mikiokubo/. アジェンダ. 13:00-13:50 「あたらしい数理最適化」概説. 16:00-16:50 - PowerPoint PPT Presentation

TRANSCRIPT

二千十三年五月あたらし

い数理最適化

出版記念セミナー

主催近代科学社オクトーバースカイ

共催構造計画研究所http://www.logopt.com/book/gurobi.htm

まずは自己紹介久保幹雄

東京海洋大学サプライ・チェイン最適化工学

フェイスブック:http://www.facebook.com/mikio.kubo.737ホームページ:http://www.logopt.com/mikiokubo/

アジェンダ13:00-13:50 「あたらしい数理最適化」概説

16:00-16:50 数理最適化の応用例 と実験的解析

「あたらしい数理最適化」概説

1. この本のどこが新しいのか2. 数理最適化の基本の基本3. 定式化のコツ

前半

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

何があたらしいの?

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

Since 2010

昔は...数理計画 (Mathematical Programming)Up to 2010 its name was "Mathematical Programming Society

みんなの投票で改名!(最適化に 1 票!)

Dantzig (1947) Programming in linear structure

Koopmans (1948)Linear Programming

Dorfman (1949) Mathematical Programming

あたらしいこと 1

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

ピボット選択有限収束の証明改訂単体法

などは一切なし

双対性分枝限定法列生成分枝カット法そして二次錘最適化まで!

きちんと解説

あたらしいこと 2

Python 言語ですぐ解ける

原案: Python と Gurobiでぐんぐん解ける!(小山社長)

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.

http://xkcd.com/353/

MIT の講義の表紙

import すれば何でもできる!

import gurobipy # 数理最適化import scop # 制約最適化import optseq # スケジューリング

import antigravity ( 空を飛ぶ ?)

あたらしいこと 3色々なソルバーを紹介

数理最適化 Gurobi制約最適化 SOCPスケジューリング OptSeq

Zonghao Gu, Edward Rothberg , Robert Bixby

Gurobi とは

Gurobi とは

Zonghao GuEdward RothbergRobert Bixby

混合整数 線形,凸二次,二次錘最適化において(たぶん)最速( MIP ソルバーの限界を見極めたい!)

これでダメなら,他でもダメ

なぜ Gurobi ? (他にもたくさんあるじゃない)

マルチコア対応長時間まわしても壊れない(安定性抜群)Python からの呼び出しが“容易”(他のソルバーは,呼び出し“可”レベル)

会議中でも実装可能!

なぜ Gurobi ?

SCOP とは野々部先生,茨木先生作

Tabu Search に基づく制約最適化ソルバー

Gurobi でダメな問題でも大丈夫(でも最適性の保証はなし!)

野々部先生 茨木先生

SCOP & OptSeq

時間割作成看護婦スケジューリングの国際コンペで好成績!

後で , 野々部先生が詳しくお話してくれると 思います

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

OptSeq とは野々部先生,茨木先生作

Tabu Search に基づく汎用」スケジューリング最適化ソルバー

Gurobi でダメな問題でも大丈夫モデル化の工夫で実 務問題の多くをカバー

SCOP, OptSeq ともにPython インターフェイスあり!(しかも Python のソース開示!)

上手なメタヒューリスティクス => 汎用なのに高性能!

あたらしいこと  4

色々な実用的+代表的な問題例で比較

後半の講演でお話しします.

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

あたらしいこと  5

数理最適化とは?

お金を儲けたいん だよね-

でも,色々としがらみがあって ね-.

数理最適化とは?

maximize  お金

subject to しがらみ

目的関 数

制約条件

数理最適化とは?

maximize f(x)subject to g(x) 0≧ x ∈ X

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

単体法内点法

目的関 数

解法

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

使い分け

どこまで解ける?  -- GUROBI-5.5.0 内点法

非ゼロ要素数

 http://plato.asu.edu/bench.html (Mittelmann による実験 )

rail4284 4284行1092610列12372358 非ゼロ

L1_d10_4080477行420366列2062656 非ゼロ

整数最適化とは?max. cxs.t. Ax≦b x は整数

目的関数

解法:分枝限定法=基本は線形最適化

分枝操作

目的関数

整数解実行可能解下界

上界

コツ 1整数最適化に対しては,良い定式化良い定式化 をしよ う!

上界と下界のギャップが小さい定式化

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

コツ  2

解が対称性をもつ場合には注意!

対称性とは?グラフ彩色問題

「点」に色を塗る!枝の両端点は別色.

対称性とは?グラフ彩色問題の解(の1つ)

「点」に色を塗る!枝の両端点は別色.

対称性とは?

赤,青,黄を交換しても 同じ解!

分枝限定法の基本

点1は黄色に塗る

点1は黄色に塗らない

X1,黄色 = 0.5 緩和問題

X1,黄色 = 1 X1,黄色 = 0

分枝しても限定できない!

 

点1は黄色に塗らない

分枝しても限定できない!

 

点1は青色に塗らない

やっと限定操作

 

点1は黄色に塗らない

点1は赤色に塗らない

解決法:対称性を除去

例:赤使用 ≧ 青使用 ≧ 黄使用

無 記名の「色」に 優先順序を付加

でも,あまり 効かない(実験は 後ほど)

対称性の例2ビンパッキング問題

色々なアイテムを「同じ大きさ」の箱(ビン)に詰める!箱の数を最小に!( =すきまを最小に!)

対称性の例2

最適解(の1 つ)

箱の番号を変えても同じ解!

分枝限定法を使うと...

アイテム1は箱1に入れる

アイテム1は箱1に入れない

X1,箱1 = 0.5 緩和問題

X1,箱1 = 1 X1,箱1 = 0

分枝しても限定できない!アイテム1箱1

アイテム1は箱1に入れない

アイテム1

アイテム1

アイテム1は箱2に入れない

解決法:パターンの列挙

アイテムをちょうど1つ含むように(たくさんの) パターンから選択

・・・・

コツ  3

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

列生成法

c

A

行列 A が超横長 必要な「列」だけ生成!

min. cxs.t. Ax=b

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

切除平面法

A行列 A が超縦長 必要な「行」だけ生成!

min. cxs.t. Ax=b

b

切除平面(カット)

分枝カット法

A b

分枝する度にカットを追加!

例:巡回セールスマン問題

すべての点をちょうど 1回通過する最 短巡回路

巡回セールスマン問題の最適解

すべての点をちょうど 1回通過する最 短巡回路

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

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

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

この中の枝の本数 2 本以下!

コツ  5

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

SOS Type 1変数の うちの高々1つが正

特殊な分枝操作で高速化A>0 or B>0 or C>0 => 変数 A,B,C は SOS と宣言

SOS Type 2連続する高々 2つの変数が 正

[0 0 0 0.5 0.4 0 0] => OK[0.5 0 0 0 0 0.4 0] => NG[0 0 1 0 0 0 0] => OK

区分的線形関数の 宣言で使用

線分の表現

区分的線形関 数の表 現

は SOS Type 2

コツ  6

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

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

x y

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

x y

=z と置いて

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

x y

=z と置いて

min. z s.t. f(x,y)≦z

(混合)整数最適化では,これをやると終わらない!

問題に応じた工夫(二分 探索)もしくは他の 手法を用いる!

謝辞

Acknowledgement

近代科学社  小山社長,大塚様

オクトーバースカイ         和多田社長,中村様

主催

構造計画研究所 斉藤 様 池水 様

共催 & 会場提供

野々部先生 茨木先生

SCOP & OptSeq

ジョアン(ジョン)・ペドロ・ペドロソ先生「ジョア」ではないらしい

All Python Codes

Experimental Analysis

村松先生@電通大

Another Co-Author Abdur Rais@Porto

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

ご来場の皆様

懇親会もあります!

top related