制御アルゴリズムを 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
[email protected]
© 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
© Copyright 2025 Paperzz