Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
2© 2014 The MathWorks, Inc.
最適化入門
MathWorks Japan
アプリケーションエンジニアリング部
アプリケーションエンジニア
中川 慶子
3
4
最適なトロリーの加速は?
荷物の揺れが最小になる三変数の組を決める。
– 加速時間 t1
– 減速時間 t2
– 全移動時間 tf
204
151
151
:
2
1
21
f
p
p
ppf
t
t
t
ttt
制約条件
5
)t,ttf( f ],[ 21
ft
t
t
2
1
入力
どの時間の組( t1, t2, tf )が
面積を最小にするか?
出力
最適化問題とは…
青い部分の面積
6
)x,xf( n ],[ 1
nx
x
1
どの入力(x1,…,xn)が、
出力 y を最小にするか?
y
一般に、最適化問題とは…
入力出力
目的関数Objective Function
変数Variables
Parameters
7
最適化関数がやること
目的関数と
入力の初期値
目的関数の評価
入力値の変更
最適解判定基準を満たしますか
?
No
Yes
8
最適なトロリーの加速は?
荷物の揺れが最小になる 三変数の組を決める。
– 加速時間 t1
– 減速時間 t2
– 全移動時間 tf
204
151
151
2.0
:
2
1
21
f
f
t
t
t
ttt
制約条件
9
制約条件の表現1
線形不等式制約
𝐴 𝑥 ≤ 𝑏 の形で表現(𝐴:行列、𝑏:ベクトル)
1 1 −1
𝑡1𝑡2𝑡𝑓
≤ 0.2𝑡1 + 𝑡2 − 𝑡𝑓 ≤ 0.2
A b
10
制約条件の表現2
範囲制約変数の最大値・最小値が決まっているとき
114
≤
𝑡1𝑡2𝑡𝑓
≤151520
1 ≤ 𝑡1 ≤ 15
1 ≤ 𝑡2 ≤ 15
4 ≤ 𝑡𝑓 ≤ 20
𝑙𝑏 ≤ 𝑥 ≤ 𝑢𝑏 の形で表現(𝑙𝑏, 𝑢𝑏:ベクトル)
lb ub
11
1.最適化UIの起動
2.アルゴリズム選択
3.目的関数を指定
4. 初期値設定
5. スタート
答え!
12
準備:関数ハンドル (@)
「@」によって
– 無名関数の作成
– MATLAB関数を変数としてワークスペースへ保存
などといったことができる
特に最適化ソルバーなどのように「関数を入力引数」とするような場合には必須のテクニック
ex)
>> integral( @sin, 0, pi )
13
Optimization ToolboxTM
14
大域的最適化問題Grobal Optimization ToolboxTM
複数の極小値/極大値を持つ関数の最小値/最大値を見つけたい
⇒ 局所探索ソルバーは初期値依存性が強く、大域的な最適解の探索が困難
大域的最適解
局所解
15
PATTERN SEARCH
DIRECT SEARCH
パターン探索
16
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Pattern Search – Iteration 反復1与えられた初期値 x0から出発します。
x
y
3
17
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Pattern Search – Iteration 反復1pattern vectorの方向に移動して目的関数を評価(poll)
x
y
3
Mesh size = 1
Pattern vectors = [1,0], [0,1], [-1,0], [0,-1]
0_*_ xvectorpatternsizemeshPnew
0]0,1[*1 x1.6
0.4
4.6
2.8
First poll successful
Complete Poll (not default)
18
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Pattern Search – Iteration 反復2
x
y
3
Mesh size = 2
Pattern vectors = [1,0], [0,1], [-1,0], [0,-1]
1.6
0.4
4.6
2.8
-4
0.3-2.8
Complete Poll
19
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Pattern Search – Iteration 反復3
x
y
3
Mesh size = 4
Pattern vectors = [1,0], [0,1], [-1,0], [0,-1]
1.6
0.4
4.6
2.8
-4
0.3-2.8
20
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Pattern Search – Iteration 反復4
x
y
3
Mesh size = 4*0.5 = 2
Pattern vectors = [1,0], [0,1], [-1,0], [0,-1]
1.6
0.4
4.6
2.8
-4
0.3-2.8
21
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Pattern Search – Iteration 反復N停止条件を満たすまで探索範囲の伸縮expansion/contractionを繰り返す
x
y
31.6
0.4
4.6
2.8
-4
0.3-2.8
-6.5
22
Pattern Search パターン探索とは?
現在地から決まった方向に対して最適解を探します。
より良い解が見つからないときは、探索の範囲を拡張・収縮します。
勾配に依存しません。微分可能 smooth な問題と微分不可能 nonsmooth な問題の両方に適応できます。
23
パターン探索:山の標高データから最高峰を探す
24
では、様々なソルバーから適したものを選ぶには…
25
目的関数と制約によるソルバーの選択Optimization Toolbox
線形 二次 最小二乗法 滑らかな非線形 滑らかでない
なし なし quadprog ¥,
lsqcurvefit,
lsqnonlin
fminsearch,
fminunc
fminsearch,
*
範囲 linprog quadprog lsqcurvefit,
lsqlin,
lsqnonlin,
lsqnonneg
fminbnd,
fmincon,
fseminf
fminbnd, *
線形 linprog quadprog lsqlin fmincon,
fseminf
*
一般的な滑らか
fmincon fmincon fmincon fmincon,
fseminf
*
制約条件
目的関数
26
目的関数と制約によるソルバーの選択Optimization Toolbox
+ Global Optimization Toolbox
線形 二次 最小二乗法 滑らかな非線形
滑らかでない
なし なし Quadpro
g
¥,
lsqcurvefit,
lsqnonlin
fminsearc
h,
fminunc
fminsearch,
simulatedannealbnd,
patternsearch, ga,
Particleswarm
範囲 linprog quadpro
g
lsqcurvefit,
lsqlin,
lsqnonlin,
lsqnonneg
fminbnd,
fmincon,
fseminf
fminbnd,
simulatedannealbnd,
patternsearch, ga,
Particleswarm
線形 linprog quadpro
g
lsqlin fmincon,
fseminf
patternsearch, ga
一般的な滑らか
fmincon fmincon fmincon fmincon,
fseminf
patternsearch, ga
離散 Linintprog,
ga
ga ga ga ga
目的関数
27
Global Optimization Toolboxソルバ一覧
ソルバ 特徴 勾配依存
並列計算
マルチスタートMultistart
• 複数の開始点の全ての点の最適解を計算• 勾配ベースの局所探索ソルバを利用
O ✓
グローバルサーチGlobal Search
• 複数の開始点から優良点を選択し最適解を計算• 勾配ベースの局所探索ソルバを利用
O
焼きなまし法Simulated Annealing
• 単一の開始点から最適解を探索• 乱数/温度変化により解の収束性/多様性を表現
X
パターンサーチPattern Search
• 単一の開始点から勾配を使用せず、メッシュ上の点で評価することにより最適解を探索
• メッシュの伸縮により最適解を探索
X ✓
遺伝的アルゴリズムGeneric Algorithm
• 複数の開始点で最適解を探索• 交差、突然変異などの遺伝的操作により解の収束性/
多様性を表現• 多目的最適化に対応
X ✓
粒子群最適化Particle Swarm
(R2014b-)
• 複数の開始点で最適解を探索• 各粒子/近隣の粒子の履歴より速度を決定• 多目的最適化に対応
X ✓
46
GENETIC ALGORITHM遺伝的アルゴリズム
47
Genetic Algorithm 遺伝的アルゴリズムとは?
遺伝生物学の考えに基づいています。
第一世代と呼ばれる複数の変数のセットから評価を始めます。
第二世代以降は、選択selection、交叉 crossover、突然変異 mutationにより、次世代の変数セットが決められていきます。
48
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Genetic Algorithm – Generation 1第一世代の目的関数を評価
x
y
49
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Genetic Algorithm – Generation 1次世代に継承するための良い個体を選択
x
y
50
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Genetic Algorithm – Generation 2次世代の生成と目的関数の評価
x
y
51
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Genetic Algorithm – Generation 2
x
y
52
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Genetic Algorithm – Generation 3
x
y
53
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Genetic Algorithm – Generation 3
x
y
54
-3 -2 -1 0 1 2 3-3
-2
-1
0
1
2
3
Genetic Algorithm – Generation N停止条件を満たすまで世代交代を繰り返す
x
y
Solution found
55
用語
局所解/大域解 Local solution / Global solution
線形/非線形 linear/nonlinear
目的関数-適応度関数 Objective Function - Fitness
Function
等式制約/不等式制約 Equality Constrain / Inequality
Constrain
計画法 Programing
微分可能/微分不可能 Smooth/ Non-smooth
決定論的/確率論的 Deterministic / Stochastic
56
1.曲線近似(最小二乗法)lsqcurvefit
teccty 21
)(
),ccf( ][ 21
2
1
c
cy
係数
残差
57
),x,,xxf( n ][ 21
nx
x
x
2
1方程式の右辺
出力y
未知数
2.連立方程式の求解 fsolve
0][
0][
0][
213
212
211
),x,,xx(f
),x,,xx(f
),x,,xx(f
n
n
n
58
)y,x,,yxf( ],[ 151511
15
15
1
1
y
x
y
x
白の面積
y
円の
中心座標
3.携帯基地局の最適配置 fmincon
59
4.多目的最適化 fgoalattain
ガントリークレーンのゆれ角θ
移動中のゆれ角が小さい! 移動後のゆれがない!
60
)t,tt(f f ],[ 211
ft
t
t
2
1
入力 出力
青い部分の面積
最大
ゆれ角
4.多目的最適化 fgoalattain
)t,tt(f f ],[ 212
𝑤1
𝑤2
61
4.多目的最適化 fgoalattain
パレート図
青い部分の面積
最大
ゆれ角
62
Item Nuts Bolts
Gadget 5 2 3.00$
Widget 3 8 10.00$
Requirements Revenue
per Item
5. 変数が整数の問題
仕様
問題– 現在の在庫 29 nuts / 34 bolts
– Gadgets と widgets を何個づつ作れば利益最大?
63
最適化問題として考えられます
fmincon
3.8235 gadgets
3.2941 widgets
– 四捨五入で整数にしてみる
4 gadgets
3 widgets
linintprog 混合整数計画問題 (MILP) のソルバ(R2014aより)
1 gadgets
4 widgets
$44.11(実現不可能)
$42.00
$43.00
64
5. 変数が整数の問題
発電機起動停止問題
現在ある燃料で利益を最大化する稼動スケジュールは?
– 条件
起動レベル三段階
OFF/MED/MAX
起動時にコストがかかる
使用燃料に上限あり
過去48時間の
電力価格データを利用
0 0 0 0 1 0 0 1 0 0
0 0 0 0 0 1 1 0 1 0
MED
MAX
65
),x,,xxf( ][ 3021
30
2
1
x
x
x
電気の売却益
y
目的関数として表現
各時刻の
起動レベル
66
6. 金融商品の自動取引戦略 ga
一定期間の価格データと経済指標のデータがあります。
0と1の列で、戦略の組み合わせを表現します。
Signal 1 Signal 2 Signal 3AND OR
1 0 0 1 0 1 1 1 1 1
Sig
nal 1
Sig
nal 2
Sig
nal 3
AND ORSignals
Active?
67
),b,,bbf( ][ 1021
10
2
1
b
b
b
-1×利益
y
目的関数として表現
売買シグナル
の選び方
過去の価格データに対し戦略を適応して売買をした
として利益を計算。
68
MATLABによる最適化
並列化による高速計算
MATLAB環境の活用
GUIによるアプリ化
豊富なアルゴリズム
解の質と計算時間
69
Training Services
MATLAB トレーニング
MATLAB & Simulink を
もっと活用しませんか?
EXPO 展示コーナーでトレーニングテキストを閲覧可能です!
70
MathWorks展示部分
Drone
Nao
TurtleBot
Mars Rover