制御アルゴリズムを 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
© Copyright 2024 Paperzz