mathworksjapan–ga は並列計算オプションが使用可能 >> numlines_gaopt parallel...
TRANSCRIPT
1© 2015 The MathWorks, Inc.
最適化による課題解決とパフォーマンス向上
MathWorks Japan
アプリケーションエンジニアリング部 テクニカルコンピューティング
井原瑞希
2
身近な最適化問題
3
最適化とは
(ある条件を満たした)目的に合うような状況を求めること
利益の最大化
コスト / リスクの最小化
4
Agenda
最適化の流れ– 目的関数の定義
– 制約条件の設定
MATLAB® における最適化– ソルバの選び方
– 大域的ソルバの使用
– 例: 生産プロセスの最適化
– 計算時間のかかる問題について
最適化に関連した最新機能
5
例: スーツケース選び目的関数の定義
最大化したい関数f = x1 * x2 * x3
機内持ち込みの手荷物の体積を最大化するような鞄を選びたい 目的関数
6
最適化とは
出力を最小化 / 最大化する入力パラメタの組み合わせを見つける
f ([x1, x2, … , xn])
nx
x
x
2
1
入力
y
出力目的関数
7
例: スーツケース選び制約条件の設定
最大化したい関数f (x1, x2, x3) = x1 * x2 * x3
制約条件– 3 ≦ x1 + x2 + x3≦ 115
– 1 ≦ x1≦ 55
– 1 ≦ x2≦ 40
– 1 ≦ x3≦ 25
機内持ち込みの手荷物の体積を最大化するような鞄を選びたい
サイズの制約– 3辺の合計が115cm以内
– 幅: 55cm
– 高さ: 40cm
– 奥行: 25cm
目的関数
>> volume_UI
8
最適化の流れ
目的関数の評価
最適解判定基準を満たす?
パラメタ値の変更
No
Yes初期パラメタの設定
9
最適化の流れ手荷物最適化課題に MATLAB を使用した場合
目的関数の評価
最適解判定基準を満たす?
パラメタ値の変更
No
Yes初期パラメタの設定
f (x1, x2, x3)x1, x2, x3
Optimization Toolbox™
経験と勘で決めていたパラメタを自動で決定容器設計なども同じ問題
10
例: スーツケース選びMATLAB コード
目的関数f = x1 * x2 * x3
制約条件– 3≦ x1 + x2 + x3≦ 115
– 1 ≦ x1≦ 55
– 1 ≦ x2≦ 40
– 1 ≦ x3≦ 25
MATLAB の最適化は最小化– 最大化したい場合は目的関数に
マイナスをつける
数式から行列に変換– - (x1 + x2 + x3)≦ -3
– x1 + x2 + x3 ≦ 115
1変数の制約は上限、下限に設定
>> opt_volume
11
最適化ツールボックスで扱うことのできる問題
Optimization Toolbox, Global Optimization Toolbox
12
Optimization Toolbox と Global Optimization Toolbox
OptimizationToolbox
GlobalOptimization
Toolbox
高速な解の探索 ✓
さまざまな目的関数、制約条件に対応
✓ ✓
大域的最適解の探索 ✓
特殊な目的関数に対応例: 微分不可能な関数
✓
並列計算対応 ✓ ✓課題によって
ソルバを変える必要あり
13
最適化問題局所解に陥ってしまう場合
Optimization Toolbox のソルバは解が初期値に強く依存
>> pso_main
粒子群最適化を使用した大域的最適化Global Optimization Toolbox
大域的最小値局所最小値
14
最適化の流れ粒子群最適化を使用した場合
目的関数の評価
最適解判定基準を満たす?
パラメタ値の変更
No
Yes初期パラメタの設定
初期値を定めずに大域的な解を探索
15
最適化問題整数が関わる場合
仕様
問題– 現在の在庫
ナット: 29個
ボルト: 34個
– 製品1 と製品2 を何個ずつ作れば利益が最大になるか
16
最適化問題整数が関わる場合
44.11 ドル
42.00 ドル
43.00 ドル
四捨五入で整数化
小数は実現不可能
fmincon (制約付き非線形最適化関数) による最適化
– 製品1: 3.8235個
– 製品2: 3.2941個
– 製品1: 4個
– 製品2: 3個
intlinprog/ga を使った混合整数線形計画法 (MILP)
– 製品1: 1個
– 製品2: 4個
17
例: 工場の生産ラインのスケジューリング背景
待ち 設備
1個 / 0.85秒1個 / 1秒
18
例: 工場の生産ラインのスケジューリング背景
SimEvents™
19
補足: Simulink®と SimEvents の違い
s1
s2
s3
s4
tt2
e2
x(t)
t3 t4 t5
e3 e4 e5
t1
e1
SimEvents
イベント
状態
イベント駆動型システム
t
x(t)
Simulink
時間
状態
時間駆動型システム
SimEvents はイベント駆動型のシミュレーションを扱うことが可能
20
例: 工場の生産ラインのスケジューリング課題
1個/5秒
1個/7秒
製造設備1
修正
出荷A製造設備2
検査
出荷B
不良品
20%
μ=10, σ=3 μ=5, σ=1 μ=5, σ=3
μ=60, σ=30
必要な各製造設備数、検査ライン数、修正ライン数は?
10%
>> ProcessLines_opVisualization
生産計画
処理時間
21
例: 工場の生産ラインのスケジューリング遺伝的アルゴリズムを使った混合整数線形計画法
制約条件の設定
– 解の下限
– 解の上限
– 整数制約のある設備の番号
目的関数の指定
– 各設備のコスト
– 計画未達コスト
ga 関数による最適化
補足
– intlinprog は使用が簡単
– ga は並列計算オプションが使用可能
>> numlines_gaopt
Parallel Computing Toolbox™
ハードウェアリソースを活用して計算時間短縮
22
例: 工場の生産ラインのスケジューリング結果
最適化
製造設備1: 4製造設備2: 2検査ライン数: 5修正ライン数: 2
最適化の結果
23
最新機能~最適化編~
グラフ&ネットワークアルゴリズム MATLAB
京都駅
東山三条
施設配置、ネットワーク解析などにも応用可能
24
まとめ
最適化に関連したツールボックス
その他便利なツールボックス
関連ツールボックス 課題
Optimization Toolbox基本的な最適化計算
- 混合整数線形計画法 (intlinprog)
Global Optimization Toolbox
特殊な目的関数の最適化計算
- 遺伝的アルゴリズム (ga)- 粒子群最適化 (particleswarm)
MATLAB グラフアルゴリズム
SimEvents 離散イベントシステムモデリング
Parallel Computing Toolbox マルチコアマシンやGPUによる並列計算