制御アルゴリズムを MATLAB ® で書く ~ C

制御アルゴリズムを MATLAB® で書く
~ C/GMRES 法による非線形モデル予測制御 ~
MathWorks Japan
アプリケーションエンジニアリング部 制御
赤阪 大介
© 2015 The MathWorks, Inc.
1
アジェンダ

はじめに

モデル予測制御 (MPC) の考え方

MATLAB で非線形モデル予測制御 (NMPC) を書く

まとめ
2
近年、高度アルゴリズムの適用への動きが飛躍的に進んでいる
製品・システムとしての価値の追求が進む中で
求められる機能・性能はより 高度 かつ 複雑 に
センサ情報処理
技術
アルゴリズム
フィードバック制御
技術
データ解析
技術
モデル予測制御 (MPC)
複雑な系に対して、より高性能な制御を実現
制御系の性能を最大限引き出すための基盤技術
3
お伝えしたいこと
提起
日本の産業界で MPC 適用へ向けた取り組みを
より活発化させてゆきませんか?
提案
制御アルゴリズムの統合開発環境として
MATLAB を是非ご活用ください
4
アジェンダ

はじめに

モデル予測制御 (MPC) の考え方

MATLAB で非線形モデル予測制御 (NMPC) を書く

まとめ
5
MPC の鍵は 「予測」 と 「最適化」
プラントの数理モデル を利用して未来の挙動を 予測 し
各時刻で 最適化問題 を解きながら制御入力を決定する方法
目標
指令
r(t)
最適化器
予測モデル
制御
入力
u(t)
プラント
制御
出力
y(t)
MPC
測定
6
MPC は最適化ベースの制御
目的:
ラップタイムの最小化
制約:
• 他の自動車と衝突しない!
• 道路からはみ出さない!
• 横滑りしない!
• 加速しすぎない! etc
最適制御問題 と捉えて解く
ラップタイムを
短縮したい
予期せぬことが
起こる可能性も
先を予測し
車両運動制御
MPC は走りながら、計測しながら、予測して考えながら
常に 経路の再計画 や 車両の動き方の決定 を行う
7
予測 & 最適化により制御入力を決定
次の時間ステップの
入力として使用
上限
例: 誤差面積が最小に
なるように入力を決定
上限
目標値
下限
予測区間
下限
現時刻
目標
指令
r(t)
未来
最適化器
予測モデル
現時刻
制御
入力
u(t)
プラント
未来
制御
出力
y(t)
MPC
測定
8
MPC がなぜ求められているか?
複雑な系に対して、より高度な制御を実現する手段
制御系の性能を最大限引き出すための基盤技術
1. 汎用性
汎用的な手法ゆえ、幅広い応用先 が考えられる
2. 制約遵守
物理・性能・安全などの 制約 を守りながら制御
3. 協調上手
多入出力系のような 複雑な対象 へ適用しやすい
4. 最適性
最適制御 に実用的な フィードバック制御 の補正効果
9
MPC の適用先は ?
計算機 (HW) とアルゴリズム (SW) の進化に伴い適用範囲は拡大
サンプリング時間
産業分野の広がり
例) 自動車分野で想定される適用先
ナノ秒
コンピュータ制御
マイクロ秒
パワエレ・電力系

ミリ秒
トラクション制御

秒
ビル

分
石油精製
時
人員配置計画
日
電車スケジューリング
週
生産計画

エンジン・パワートレイン制御
車両運動制御
エネルギーマネジメント
車群制御 etc
エコ・自動運転支援・V2X
10
MPC の可能性 ~ 車両のダブルレーンチェンジ
目標車速 10m/s
20 m
0m
MPC
6m
40 m
目標軌道
滑りやすい路面 (雪)
60 m
80 m
100 m
120 m
操舵角制限 ±10°
PID
11
モデル予測制御は最適制御問題に帰着する
MPC で解くべき問題
探索:
② 数値計算アルゴリズム
u
制御入力のパターン
最小化: 目的関数
制約条件
① 制御目標
の定式化
𝑢0
𝑢1
𝑢2
予測区間
t
現時刻
目標
指令
r(t)
最適化器
予測モデル
制御
入力
u(t)
プラント
制御
出力
y(t)
MPC
測定
12
解くべき最適化問題を一般的に定式化すると …
探索
目的関数
目的関数を最小化する制御入力のパターン
範囲は現時刻 𝑡0 から予測区間 𝑡0 + 𝑇 に限定
制御性能の評価関数
系のエネルギー消費やコスト
制約条件
𝑢
𝐽 = 𝜑 𝑥 𝑡0 + 𝑇
𝑡0
𝑡0 +𝑇
+
終端コスト
𝑡0 + 𝑇
𝑡0
𝐿 𝑥 𝜏 , 𝑢 𝜏 𝑑𝜏
エネルギーコスト
プラントの予測モデル
𝑥(𝑡) = 𝑓(𝑥 𝑡 , 𝑢 𝑡 )
常微分方程式
初期条件
𝑥 𝑡0 = 𝑥0
現時刻での状態
拘束条件
𝐶 𝑥(𝑡), 𝑢(𝑡) ≥ 0
物理・性能・安全
などの制約
13
例題: DC モーターの角度制御
𝑢 電圧
(範囲制約 ±5V)
目的関数
𝑥1 角度 (範囲制約 ±90°)
𝑥2 角速度
𝑥3 電流
プラント
制御性能の評価関数
追従性と入力大きさを評価
制約条件
目標角度 45° (𝜋/4 rad) に追従
プラントの予測モデル
運動・回路方程式
拘束条件
角度・電圧の範囲制約
𝐽=
𝑡0 +𝑇
𝑡0
{𝑞 𝑥1 (𝜏) − 𝜋/4
2
+ 𝑟 𝑢(𝜏)2 }𝑑𝜏
角度追従偏差 制御入力の大きさ
𝑥1
0
1
𝑥2 = 0 −𝑏/𝐽
0 −𝐾𝑒 /𝐿
𝑥3
𝑥1
0
0
𝐾𝑇 /𝐽 𝑥2 + 0 𝑢
1/𝐿
−𝑅/𝐿 𝑥3
−𝜋/2 ≤ 𝑥1 ≤ 𝜋/2
−5 ≤ 𝑢 ≤ 5
14
MPC の最適化問題を解くアプローチは様々
オフラインでの計算方法
動的計画法
Hamilton-JacobiBellman 方程式 を解く
最適制御問題
オンラインでの計算方法
間接法
変分法から導出される
多点境界値問題 を解く
直接法
非線形計画問題
に変換して解く
間接法の手法
 勾配法 例: ニュートン法、最急降下法、共役勾配法 …
 連続変形法 例: C/GMRES 法 …
15
なぜ C/GMRES 法か?
Continuation/GMRES 法は 非線形 MPC の 高速解法
MPC の課題である 非線形プラントの扱い や 計算量の低減 を克服
速さのポイント
各サンプリング時刻で連立 1 次方程式を一回解くだけ
1. 連続変形法
最適制御の時間依存を利用し 反復計算を回避
2. GMRES 法
連立 1 次方程式の 効率的な解法 を利用
3. 差分近似
ヤコビ行列とベクトルの積を近似し 演算量を低減
GMRES: generalized minimal residual method
16
変分法から導出される 「2点境界値問題」 を解く…課題は?
2 点境界値問題 𝑢 𝑡 、𝜇 𝑡 を求めたい
𝑥(𝑡) = 𝑓(𝑥(𝑡), 𝑢(𝑡))
課題 1 境界値問題をどう解くか?
𝑥0 𝑡 = 𝑥 𝑡
解決策 予測区間にわたり離散化し
非線形連立方程式に帰着
初期条件
𝜆 𝑡 = −𝐻𝑥𝑇 𝑥(𝑡), 𝜆 𝑡 , 𝑢 𝑡 , 𝜇 𝑡
𝜆 𝑡 + 𝑇 = 𝜑𝑥𝑇 (𝑥(𝑡 + 𝑇))
𝐻𝑢 𝑥(𝑡), 𝜆 𝑡 , 𝑢 𝑡 , 𝜇 𝑡
終端条件
=0
𝐶 𝑥(𝑡), 𝑢(𝑡) = 0
課題 2
必要な数式の導出は?
解決策 数式処理技術を利用した
数式の導出が有効
ハミルトニアン: 𝐻 𝑥, 𝜆, 𝑢, 𝜇 = 𝐿(𝑥, 𝑢) + 𝜆𝑇 𝑓(𝑥, 𝑢) + 𝜇𝑇 𝐶(𝑥, 𝑢)
評価コスト
予測モデル
制約条件
17
𝑥𝑖∗ :
𝜆∗𝑖 :
𝑢𝑖∗ :
𝜇𝑖∗ :
予測区間で 「離散化」 し差分方程式へ
2 点境界値問題 𝑢 𝑡 、𝜇 𝑡 を求めたい
∗
𝑥𝑖+1
𝑡 = 𝑥𝑖∗ 𝑡 + 𝑓 𝑥𝑖∗ 𝑡 , 𝑢𝑖∗ 𝑡 Δ𝜏
𝑥0∗ 𝑡 = 𝑥 𝑡
𝑖 ステップ先の状態 (予測)
共状態 (随伴変数)
制御入力
拘束に関するラグランジュ乗数
プラントの予測モデル
初期条件 (測定された状態)
𝜆∗𝑖 𝑡 = 𝜆∗𝑖+1 𝑡 + 𝐻𝑥𝑇 𝑥𝑖∗ 𝑡 , 𝜆∗𝑖+1 𝑡 , 𝑢𝑖∗ 𝑡 , 𝜇𝑖∗ 𝑡 Δ𝑡
𝜆∗𝑁 𝑡 = 𝜑𝑥𝑇 (𝑥𝑁∗ (𝑡))
終端条件 (終端コストの偏微分)
𝐻𝑢 𝑥𝑖∗ 𝑡 , 𝜆∗𝑖+1 𝑡 , 𝑢𝑖∗ 𝑡 , 𝜇𝑖∗ 𝑡
𝐶 𝑥𝑖∗ 𝑡 , 𝑢𝑖∗ 𝑡
=0
随伴方程式
=0
ハミルトニアンの偏微分
制約条件
ハミルトニアン: 𝐻 𝑥, 𝜆, 𝑢, 𝜇 = 𝐿(𝑥, 𝑢) + 𝜆𝑇 𝑓(𝑥, 𝑢) + 𝜇𝑇 𝐶(𝑥, 𝑢)
評価コスト
予測モデル
制約条件
18
MPC は 「非線形方程式」 を解く問題に帰着する
探索
制御入力 𝒖𝒊 と ラグランジュ乗数 𝝁𝒊 の系列
𝑈 𝑡 =
非線形方程式
𝐹 𝑈 𝑡 ,𝑥 𝑡 ,𝑡 ≔
𝑇
𝑢0∗
𝑡
𝑇
, 𝜇0∗
𝑡
𝑇
∗
, ⋯ , 𝑢𝑁−1
𝑡
𝑇
∗
, 𝜇𝑁−1
𝑡
𝑇
𝐻𝑢 𝑥0∗ 𝑡 , 𝜆1∗ 𝑡 , 𝑢0∗ 𝑡 , 𝜇0∗ 𝑡
∗
𝐻𝑢 𝑥𝑁−1
𝐶 𝑥0∗ 𝑡 , 𝑢0∗ 𝑡
⋮
∗
∗
𝑡 , 𝜆∗𝑁 𝑡 , 𝑢𝑁−1
𝑡 , 𝜇𝑁−1
𝑡
=0
∗
∗
𝐶 𝑥𝑁−1
𝑡 , 𝑢𝑁−1
𝑡
各時刻 𝒕 で測定された状態 𝒙(𝒕) に対して
方程式 𝑭(𝑼, 𝒙, 𝒕) = 𝟎 を解き 𝑼(𝒕) を計算
19
C/GMRES 解法: 連続変形法の実時間利用による反復計算の回避
𝐹 𝑈 𝑡 ,𝑥 𝑡 ,𝑡 = 0
課題
ニュートン法のような反復解法は非効率
解決策 𝐹 = 0 が安定となるように 𝑈(𝑡) を更新
𝐹 𝑈, 𝑥, 𝑡 = −𝑎𝐹(𝑈, 𝑥, 𝑡)
𝐹
𝐹(𝑡) = 𝑒 −𝑎𝑡
𝐹 = 0 に収束
(𝑎 > 0)
𝑡
基本アルゴリズム
1.
2.
𝐹 𝑈 0 , 𝑥 0 , 0 = 0 となるように初期値 𝑈(0) を選択
𝐹 = 𝐹𝑈 𝑈 + 𝐹𝑥 𝑥 + 𝐹𝑡 = −𝑎𝐹
連立1次方程式を解き
𝑈 を実時間で積分
時間パラメータ t に沿って時刻と共に解 U(t) を追跡できる
20
C/GMRES 解法: GMRES法 と 前進差分近似 による数値計算の効率化
𝐹𝑈 𝑈 + 𝐹𝑥 𝑥 + 𝐹𝑡 = −𝑎𝐹
課題
𝑈 を求めたい
ヤコビ行列 𝐹𝑈 , 𝐹𝑥 , 𝐹𝑡 や 逆行列 𝐹𝑈−1 の計算により演算量が増加…
解決策 1. 連立 1 次方程式の効率的な解法を利用(GMRES 法)
2. ヤコビ行列とベクトルの積を近似し演算量を低減(前進差分近似)
前進差分近似 し、F の評価回数を減らす
𝐹 𝑈, 𝑥, 𝑡 ≈
𝐹 𝑈 + ℎ𝑈, 𝑥 + ℎ𝑥, 𝑡 + ℎ − 𝐹 𝑈, 𝑥, ℎ
ℎ
= −𝑎𝐹(𝑈, 𝑥, 𝑡)
𝐴 𝑈 = 𝑏 GMRES 法 で解く
(クリロフ部分空間法の一種)
21
要点まとめ
1.
MPC は 実時間最適制御
– 複雑な系に対してより高度な制御を実現する手段 ~ 4 つの利点
– 「性能目標の定式化」 と 「数値計算アルゴリズム」 が必要
皆様のご業務で MPC を検討する価値がありそうでしょうか?
2.
C/GMRES 法 は非線形 MPC の高速解法
– 2 点境界値問題から非線形方程式を解く問題へ
– 速さのポイントは 「連続変形法」 と 「GMRES法」
では、アルゴリズム構築や制御系の検証をどう行いますか?
22
アジェンダ

はじめに

モデル予測制御 (MPC) の考え方

MATLAB で非線形モデル予測制御 (NMPC) を書く

まとめ
23
なぜ MATLAB で書くのか?
プログラミング環境
行列計算・数学関数
数値シミュレーション技術
数式処理技術
制御アルゴ開発
自動コード生成技術
データ分析・評価技術
24
C/GMRES アルゴリズム開発ワークフロー
アルゴリズム開発
M 関数生成
数式処理
制御アルゴに必要
な数式の導出
MATLAB Function,
S-Function ブロック
MATLAB 関数作成
制御
C/GMRES 法 を
M 言語でプログラム
高速化
閉ループ系シミュレーション
による制御アルゴの評価
(プラントモデルと接続)
MEX
(dll)
プラント
シミュレーション検証
MEX 生成
C 生成
シミュレーション検証
システム設計・検証
実装
C 関数
機能・性能評価
 性能指標
 相関/感度
 ロバスト性
 トレードオフ etc
25
例題: 車両のダブルレーンチェンジ
𝐹𝑓𝑦 (𝛼𝑓 )
プラントモデル
𝑋 = 𝑉𝑥 cos 𝜑 − 𝑉𝑦 sin(𝜑)
𝐹𝑟𝑦 (𝛼𝑟 )
𝑌 = 𝑉𝑥 sin 𝜑 + 𝑉𝑦 cos(𝜑)
𝜑=𝜔
𝑉𝑥 = (2𝐹𝑟𝑥 − 2𝐹𝑓𝑦 𝑠𝑖𝑛𝛿 + 𝑚𝑉𝑦 𝜔)/𝑚
𝑉𝑦 = (2𝐹𝑟𝑦 + 2𝐹𝑓𝑦 𝑐𝑜𝑠𝛿 − 𝑚𝑉𝑥 𝜔)/𝑚
𝜔 = (2𝐹𝑓𝑦 𝑙𝑓 𝑐𝑜𝑠𝛿 − 2𝐹𝑟𝑦 𝑙𝑟 )/𝐼𝑍
スリップ角
𝛼𝑓
𝛼𝑓
𝛼𝑟
横力
𝐹𝑟𝑦 (𝛼𝑟 )
𝛿
𝐹𝑓𝑦 (𝛼𝑓 )
𝑉𝑦
𝑉𝑥
𝛼𝑟
𝜑
𝜔
入力1:
制動力 𝐹𝑟𝑥
入力2:
操舵角
𝑙𝑓
𝑙𝑟
𝑌
制約 (操舵角)
𝛿𝑚𝑖𝑛 ≤ 𝛿 ≤ 𝛿𝑚𝑎𝑥
4 輪車両の等価2輪モデル
𝑋
26
問題設定
目標: 進行方向に一定速度で目標軌道 (位置・姿勢) に追従
• 目標車速 10 m/s
• 操舵角制限 ±10°
20 m
0m
𝑌
0
𝑋
6m
40 m
60 m
滑りやすい路面 (雪)
80 m
100 m
120 m
目標軌道
27
例題の流れ
1.
数式処理技術の活用
2.
C/GMRES 法アルゴリズムの記述
3.
自動コード生成技術の活用
4.
ブロック線図表現のシミュレーション
28
1. 数式処理技術の活用
必要な数式の解析的な操作・導出には数式処理が有効
数式が非線形になる.. 試行を重ねたい.. 自動化したい場合は特に有効
𝐹(𝑈, 𝑥, 𝑡) = 0 に必要な数式は?
ハミルトニアン𝐻や終端コスト𝜑のヤコビ行列 𝐻𝑢 , 𝐻𝑥 , 𝜑𝑥
𝐻 𝑥, 𝜆, 𝑢, 𝜇 = 𝐿 𝑥, 𝑢 + 𝜆𝑇 𝑓 𝑥, 𝑢 + 𝜇𝑇 𝐶(𝑥, 𝑢)
例)
𝐿 𝑥, 𝑢 = 𝑥 − 𝑥𝑓
𝑇
𝑄(𝑥 − 𝑥𝑓 ) + 𝑢𝑇 𝑅𝑢 − ∑𝑘𝑖 log(𝑢𝑖 − 𝑢𝑚𝑎𝑥 )(𝑢𝑚𝑖𝑛 − 𝑢𝑖 )
𝑥4 cos 𝑥3 − 𝑥5 sin(𝑥3 )
𝑥4 sin 𝑥3 + 𝑥5 cos(𝑥3 )
𝑥6
𝑓 𝑥, 𝑢 =
(2𝑢1 − 2𝐹𝑓𝑦 (𝑥)𝑠𝑖𝑛𝑢2 + 𝑚𝑥5 𝑥6 )/𝑚
(2𝐹𝑟𝑦 (𝑥) + 2𝐹𝑓𝑦 (𝑥)𝑐𝑜𝑠𝑢2 − 𝑚𝑥4 𝑥6 )/𝑚
(2𝐹𝑓𝑦 (𝑥)𝑙𝑓 𝑐𝑜𝑠𝑢2 − 2𝐹𝑟𝑦 (𝑥)𝑙𝑟 )/𝐼𝑍
𝐶 𝑥, 𝑢 = 0
𝜕𝐻 𝜕𝐻
𝜕𝑢 𝜕𝑥
?
29
Symbolic Math Toolbox ~ MATLAB 数式処理ツール



微積分 (勾配、ヤコビ行列、ヘシアン)
数式の代入・単純化
代数計算、微分方程式の求解
Symbolic Math Toolbox



変換、特殊関数、線形代数
可変精度計算
コード生成 (MATLAB, Simscape言語)
MuPAD Notebook
(リッチテキスト形式の専用エディタ)
30
2. C/GMRES 法アルゴリズムの記述
プラント測定信号
サンプリング時間 Δ𝑡
𝑥 𝑡 : 測定されたプラント状態
𝛥𝑥
: 状態の時間微分 (差分近似)
𝛥𝑡
𝑡:
時間
パラメータ設定用
ファイル
制御開始前に
勾配法などで計算
U(0)
C/GMRES 関数 (作成例)
初期化関数
Δ𝑥
初期値 U(0) 計算
𝑈 = fdgmres (𝐹, 𝑈 𝑡 , 𝑥 𝑡 , , 𝑡, 𝑝𝑎𝑟𝑎𝑚)
Δ𝑡
Call
F 計算用関数 lib
𝑈 𝑡 + 𝛥𝑡 = 𝑈 𝑡 + 𝑈(𝑡)𝛥𝑡 % 𝑈 𝑡 の積分
𝐹(𝑈(𝑡), 𝑥, 𝑡)
𝑢 𝑡 + 𝛥𝑡 = 𝑃0 (𝑈 𝑡 + 𝛥𝑡 ) % 制御入力の抽出
プラント非依存関数 (汎用)
数式処理を通じて
出力
作成した関数を使用
MATLAB で簡潔なプログラミング
制御入力
31
入力
3. 自動コード生成技術の活用
制御アルゴリズム
シミュレーション高速化
MATLAB Coder
M
M
M
MEX
MATLAB MATLAB Coder/
関数ファイル Embedded Coder
MPC
Simulink
モデルサブシステム
ラピッド/組込み実装
C
プラント
Simulink Coder/
Embedded Coder
MATLAB から
呼び出せるDLL
C ソースコード
1. プロトタイプ試験目的
2. 組込み実装目的
高速化・実装への近道
32
4. ブロック線図表現のシミュレーション
制御アルゴリズムを Simulink へ
制御系を見通しよく設計・検証できる数値シミュレーション環境
33
非線形 MPC モデル
状態
時間
目標値
M
M
M
U
積分
U
制御入力
制御パラメータ
MATLAB Function ブロック
34
プラントモデル
微分方程式左辺の計算
積分
制御入力
状態
スリップ角計算
(数式処理の結果を利用)
35
要点まとめ

MATLAB は制御アルゴリズムの統合開発環境
1. 数式処理技術の活用 ~ Symbolic Math Toolbox
2. C/GMRES 法アルゴリズムの記述 ~ MATLAB
3. 自動コード生成技術の活用 ~ MATLAB Coder/Embedded Coder
4. ブロック線図表現のシミュレーション ~ Simulink
制御アルゴ開発に MATLAB 環境と道具をぜひ有効活用ください
開発者の思考や試行錯誤を助け、開発をより一層快適にします
36
アジェンダ

はじめに

モデル予測制御 (MPC) の考え方

MATLAB で非線形モデル予測制御 (NMPC) を書く

まとめ
37
まとめ
提起
日本の産業界で MPC 適用へ向けた取り組みを
より活発化させてゆきませんか?
皆様の MPC 適用への活動を促進する一助となれば幸いです
提案
制御アルゴリズムの統合開発環境として
MATLAB を是非ご活用ください
MathWorks 製品、ワークフローを評価・導入してゆきませんか?
38
ご清聴いただき誠にありがとうございました
赤阪 大介 MathWorks Japan
Daisuke.Akasaka@mathworks.co.jp
© 2015 The MathWorks, Inc. MATLAB and Simulink are registered trademarks of The MathWorks,
Inc. See www.mathworks.com/trademarks for a list of additional trademarks. Other product or brand
names may be trademarks or registered trademarks of their respective holders.
39