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