制御アルゴリズムを matlab で書く - mathworks€¦ · 最適化器 予測モデル...

Post on 27-May-2020

13 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1© 2015 The MathWorks, Inc.

制御アルゴリズムを MATLAB® で書く~ C/GMRES 法による非線形モデル予測制御 ~

MathWorks Japan

アプリケーションエンジニアリング部 制御

赤阪 大介

2

アジェンダ

はじめに

モデル予測制御 (MPC) の考え方

MATLAB で非線形モデル予測制御 (NMPC) を書く

まとめ

3

近年、高度アルゴリズムの適用への動きが飛躍的に進んでいる

製品・システムとしての価値の追求が進む中で求められる機能・性能はより 高度 かつ 複雑 に

複雑な系に対して、より高性能な制御を実現制御系の性能を最大限引き出すための基盤技術

アルゴリズム

フィードバック制御技術

センサ情報処理技術

データ解析技術

モデル予測制御 (MPC)

4

お伝えしたいこと

日本の産業界で MPC 適用へ向けた取り組みをより活発化させてゆきませんか?

制御アルゴリズムの統合開発環境としてMATLAB を是非ご活用ください

提起

提案

5

アジェンダ

はじめに

モデル予測制御 (MPC) の考え方

MATLAB で非線形モデル予測制御 (NMPC) を書く

まとめ

6

MPC の鍵は 「予測」 と 「最適化」

プラント最適化器

予測モデル

目標指令

MPC

制御入力

制御出力

r(t)u(t) y(t)

測定

プラントの数理モデル を利用して未来の挙動を 予測 し各時刻で 最適化問題 を解きながら制御入力を決定する方法

7

目的:ラップタイムの最小化

制約:• 他の自動車と衝突しない!• 道路からはみ出さない!• 横滑りしない!• 加速しすぎない! etc

MPC は最適化ベースの制御

最適制御問題 と捉えて解く

予期せぬことが起こる可能性も

MPC は走りながら、計測しながら、予測して考えながら常に 経路の再計画 や 車両の動き方の決定 を行う

先を予測し車両運動制御

ラップタイムを短縮したい

8

プラント最適化器

予測モデル

目標指令

MPC

制御入力

制御出力

r(t) u(t) y(t)

測定

予測 & 最適化により制御入力を決定

現時刻 未来

上限

下限

次の時間ステップの入力として使用

現時刻 未来

上限

下限

目標値

例: 誤差面積が最小になるように入力を決定

予測区間

9

MPC がなぜ求められているか?

多入出力系のような 複雑な対象 へ適用しやすい

複雑な系に対して、より高度な制御を実現する手段制御系の性能を最大限引き出すための基盤技術

1. 汎用性

2. 制約遵守

3. 協調上手

4. 最適性

汎用的な手法ゆえ、幅広い応用先 が考えられる

物理・性能・安全などの 制約 を守りながら制御

最適制御 に実用的な フィードバック制御 の補正効果

10

MPC の適用先は ?

ナノ秒

マイクロ秒

ミリ秒

コンピュータ制御

パワエレ・電力系

トラクション制御

ビル

石油精製

人員配置計画

電車スケジューリング

生産計画

計算機 (HW) とアルゴリズム (SW) の進化に伴い適用範囲は拡大

例) 自動車分野で想定される適用先

エンジン・パワートレイン制御

車両運動制御

エネルギーマネジメント

車群制御 etc

サンプリング時間

産業分野の広がり

エコ・自動運転支援・V2X

11

MPC の可能性 ~ 車両のダブルレーンチェンジ

MPC

PID

0 m 20 m 40 m 60 m 80 m 100 m 120 m

目標軌道操舵角制限 ±10°

目標車速 10m/s 滑りやすい路面 (雪)

6m

12

プラント最適化器

予測モデル

目標指令

MPC

制御入力

制御出力

r(t) u(t) y(t)

測定

モデル予測制御は最適制御問題に帰着する

最小化:

制約条件

制御入力のパターン探索:

目的関数

u

現時刻

𝑢0

𝑢1𝑢2

予測区間

t

MPC で解くべき問題

① 制御目標の定式化

② 数値計算アルゴリズム

13

解くべき最適化問題を一般的に定式化すると …

目的関数

制約条件 𝑥(𝑡) = 𝑓(𝑥 𝑡 , 𝑢 𝑡 )プラントの予測モデル

拘束条件 𝐶 𝑥(𝑡), 𝑢(𝑡) ≥ 0

𝐽 = 𝜑 𝑥 𝑡0 + 𝑇 + 𝑡0

𝑡0+𝑇

𝐿 𝑥 𝜏 , 𝑢 𝜏 𝑑𝜏

𝑥 𝑡0 = 𝑥0

制御性能の評価関数系のエネルギー消費やコスト

初期条件

目的関数を最小化する制御入力のパターン範囲は現時刻 𝑡0 から予測区間 𝑡0 + 𝑇 に限定

探索

終端コスト エネルギーコスト

𝑢

𝑡0 𝑡0 + 𝑇

常微分方程式

現時刻での状態

物理・性能・安全などの制約

14

例題: DC モーターの角度制御

目的関数

制約条件 𝑥1 𝑥2 𝑥3

=

0 1 00 −𝑏/𝐽 𝐾𝑇/𝐽0 −𝐾𝑒/𝐿 −𝑅/𝐿

𝑥1𝑥2𝑥3

+001/𝐿

𝑢

𝑥1 角度 (範囲制約 ±90°)𝑥2 角速度𝑥3 電流

−5 ≤ 𝑢 ≤ 5−𝜋/2 ≤ 𝑥1 ≤ 𝜋/2

𝐽 = 𝑡0

𝑡0+𝑇

{𝑞 𝑥1(𝜏) − 𝜋/4 2 + 𝑟 𝑢(𝜏)2}𝑑𝜏

𝑢 電圧(範囲制約 ±5V)

角度追従偏差 制御入力の大きさ

プラントの予測モデル運動・回路方程式

制御性能の評価関数追従性と入力大きさを評価

拘束条件角度・電圧の範囲制約

プラント

目標角度 45° (𝜋/4 rad) に追従

15

MPC の最適化問題を解くアプローチは様々

最適制御問題

動的計画法間接法 直接法

Hamilton-Jacobi-Bellman 方程式 を解く 変分法から導出される

多点境界値問題 を解く非線形計画問題に変換して解く

オフラインでの計算方法オンラインでの計算方法

間接法の手法

勾配法 例: ニュートン法、最急降下法、共役勾配法 …

連続変形法 例: C/GMRES 法 …

16

なぜ C/GMRES 法か?

MPC の課題である 非線形プラントの扱い や 計算量の低減 を克服

Continuation/GMRES 法は 非線形 MPC の 高速解法

最適制御の時間依存を利用し 反復計算を回避1. 連続変形法

2. GMRES 法

3. 差分近似

速さのポイント

各サンプリング時刻で連立 1 次方程式を一回解くだけ

連立 1 次方程式の 効率的な解法 を利用

ヤコビ行列とベクトルの積を近似し 演算量を低減

GMRES: generalized minimal residual method

17

変分法から導出される 「2点境界値問題」 を解く…課題は?

𝑥(𝑡) = 𝑓(𝑥(𝑡), 𝑢(𝑡))

𝑥0 𝑡 = 𝑥 𝑡

𝐻𝑢 𝑥(𝑡), 𝜆 𝑡 , 𝑢 𝑡 , 𝜇 𝑡 = 0

𝜆 𝑡 = −𝐻𝑥𝑇 𝑥(𝑡), 𝜆 𝑡 , 𝑢 𝑡 , 𝜇 𝑡

𝐶 𝑥(𝑡), 𝑢(𝑡) = 0

𝜆 𝑡 + 𝑇 = 𝜑𝑥𝑇(𝑥(𝑡 + 𝑇))

𝐻 𝑥, 𝜆, 𝑢, 𝜇 = 𝐿(𝑥, 𝑢) + 𝜆𝑇𝑓(𝑥, 𝑢) + 𝜇𝑇𝐶(𝑥, 𝑢)

2 点境界値問題

ハミルトニアン:

初期条件

終端条件

𝑢 𝑡 、𝜇 𝑡 を求めたい

課題 2 必要な数式の導出は?

解決策 数式処理技術を利用した数式の導出が有効

課題 1 境界値問題をどう解くか?

解決策 予測区間にわたり離散化し非線形連立方程式に帰着

評価コスト 予測モデル 制約条件

18

予測区間で 「離散化」 し差分方程式へ

プラントの予測モデル

ハミルトニアンの偏微分

初期条件 (測定された状態)

随伴方程式

終端条件 (終端コストの偏微分)

制約条件

𝑥𝑖∗: 𝑖 ステップ先の状態 (予測)

𝜆𝑖∗ : 共状態 (随伴変数)𝑢𝑖∗ : 制御入力

𝜇𝑖∗ : 拘束に関するラグランジュ乗数

𝑥𝑖+1∗ 𝑡 = 𝑥𝑖

∗ 𝑡 + 𝑓 𝑥𝑖∗ 𝑡 , 𝑢𝑖

∗ 𝑡 Δ𝜏

𝑥0∗ 𝑡 = 𝑥 𝑡

𝐻𝑢 𝑥𝑖∗ 𝑡 , 𝜆𝑖+1

∗ 𝑡 , 𝑢𝑖∗ 𝑡 , 𝜇𝑖

∗ 𝑡 = 0

𝜆𝑖∗ 𝑡 = 𝜆𝑖+1

∗ 𝑡 + 𝐻𝑥𝑇 𝑥𝑖

∗ 𝑡 , 𝜆𝑖+1∗ 𝑡 , 𝑢𝑖

∗ 𝑡 , 𝜇𝑖∗ 𝑡 Δ𝑡

𝐶 𝑥𝑖∗ 𝑡 , 𝑢𝑖

∗ 𝑡 = 0

𝜆𝑁∗ 𝑡 = 𝜑𝑥

𝑇(𝑥𝑁∗ (𝑡))

2 点境界値問題 𝑢 𝑡 、𝜇 𝑡 を求めたい

𝐻 𝑥, 𝜆, 𝑢, 𝜇 = 𝐿(𝑥, 𝑢) + 𝜆𝑇𝑓(𝑥, 𝑢) + 𝜇𝑇𝐶(𝑥, 𝑢)ハミルトニアン:

評価コスト 予測モデル 制約条件

19

MPC は 「非線形方程式」 を解く問題に帰着する

制御入力 𝒖𝒊 と ラグランジュ乗数 𝝁𝒊 の系列探索

𝑈 𝑡 = 𝑢0∗𝑇 𝑡 , 𝜇0

∗𝑇 𝑡 ,⋯ , 𝑢𝑁−1∗ 𝑇

𝑡 , 𝜇𝑁−1∗ 𝑇

𝑡𝑇

非線形方程式

𝐹 𝑈 𝑡 , 𝑥 𝑡 , 𝑡 ≔

𝐻𝑢 𝑥0∗ 𝑡 , 𝜆1

∗ 𝑡 , 𝑢0∗ 𝑡 , 𝜇0

∗ 𝑡

𝐶 𝑥0∗ 𝑡 , 𝑢0

∗ 𝑡

⋮𝐻𝑢 𝑥𝑁−1

∗ 𝑡 , 𝜆𝑁∗ 𝑡 , 𝑢𝑁−1

∗ 𝑡 , 𝜇𝑁−1∗ 𝑡

𝐶 𝑥𝑁−1∗ 𝑡 , 𝑢𝑁−1

∗ 𝑡

= 0

各時刻 𝒕 で測定された状態 𝒙(𝒕) に対して方程式 𝑭(𝑼, 𝒙, 𝒕) = 𝟎 を解き 𝑼(𝒕) を計算

20

時間パラメータ t に沿って時刻と共に解 U(t) を追跡できる

C/GMRES 解法: 連続変形法の実時間利用による反復計算の回避

𝐹 𝑈 𝑡 , 𝑥 𝑡 , 𝑡 = 0

基本アルゴリズム

課題 ニュートン法のような反復解法は非効率

𝐹 𝑈, 𝑥, 𝑡 = −𝑎𝐹(𝑈, 𝑥, 𝑡) (𝑎 > 0)

解決策 𝐹 = 0 が安定となるように 𝑈(𝑡) を更新

𝐹 = 𝐹𝑈 𝑈 + 𝐹𝑥 𝑥 + 𝐹𝑡 = −𝑎𝐹 連立1次方程式を解き 𝑈 を実時間で積分

𝐹 𝑈 0 , 𝑥 0 , 0 = 0 となるように初期値 𝑈(0) を選択1.

2.

𝐹

𝑡

𝐹 = 0 に収束

𝐹(𝑡) = 𝑒−𝑎𝑡

21

C/GMRES 解法: GMRES法 と 前進差分近似 による数値計算の効率化

前進差分近似 し、F の評価回数を減らす

解決策 1. 連立 1 次方程式の効率的な解法を利用(GMRES 法)

2. ヤコビ行列とベクトルの積を近似し演算量を低減(前進差分近似)

課題 ヤコビ行列 𝐹𝑈, 𝐹𝑥, 𝐹𝑡 や 逆行列 𝐹𝑈−1 の計算により演算量が増加…

𝐹 𝑈 + ℎ𝑈, 𝑥 + ℎ 𝑥, 𝑡 + ℎ − 𝐹 𝑈, 𝑥, ℎ

ℎ 𝐹 𝑈, 𝑥, 𝑡 ≈ = −𝑎𝐹(𝑈, 𝑥, 𝑡)

𝐹𝑈 𝑈 + 𝐹𝑥 𝑥 + 𝐹𝑡 = −𝑎𝐹

𝐴 𝑈 = 𝑏 GMRES 法 で解く(クリロフ部分空間法の一種)

𝑈 を求めたい

22

要点まとめ

1. MPC は 実時間最適制御– 複雑な系に対してより高度な制御を実現する手段 ~ 4 つの利点

– 「性能目標の定式化」 と 「数値計算アルゴリズム」 が必要

2. C/GMRES 法 は非線形 MPC の高速解法– 2 点境界値問題から非線形方程式を解く問題へ

–速さのポイントは 「連続変形法」 と 「GMRES法」

では、アルゴリズム構築や制御系の検証をどう行いますか?

皆様のご業務で MPC を検討する価値がありそうでしょうか?

23

アジェンダ

はじめに

モデル予測制御 (MPC) の考え方

MATLAB で非線形モデル予測制御 (NMPC) を書く

まとめ

24

なぜ MATLAB で書くのか?

数値シミュレーション技術数式処理技術

プログラミング環境行列計算・数学関数

自動コード生成技術 データ分析・評価技術

制御アルゴ開発

25

アルゴリズム開発

C/GMRES アルゴリズム開発ワークフロー

システム設計・検証

M 関数生成

数式処理 MATLAB 関数作成

MEX 生成C 生成

C/GMRES 法 をM 言語でプログラム

シミュレーション検証

閉ループ系シミュレーションによる制御アルゴの評価(プラントモデルと接続)

制御アルゴに必要な数式の導出

高速化

C 関数MEX(dll)

実装

プラント制御

シミュレーション検証

性能指標

相関/感度

ロバスト性

トレードオフ etc

機能・性能評価

MATLAB Function,S-Function ブロック

26

例題: 車両のダブルレーンチェンジ

𝑌

𝑋

𝜑

𝜔

𝛿

𝛼𝑓

𝛼𝑟

𝑉𝑦 𝑉𝑥

𝐹𝑓𝑦(𝛼𝑓)

𝐹𝑟𝑦(𝛼𝑟)

𝐹𝑟𝑥 𝑙𝑟

𝑙𝑓

4 輪車両の等価2輪モデル

𝐹𝑟𝑦(𝛼𝑟)

𝛼𝑟

𝐹𝑓𝑦(𝛼𝑓)

𝛼𝑓プラントモデル

制約 (操舵角)

𝑋 = 𝑉𝑥 cos 𝜑 − 𝑉𝑦sin(𝜑)

𝑌 = 𝑉𝑥 sin 𝜑 + 𝑉𝑦cos(𝜑)

𝜑 = 𝜔

𝑉𝑥 = (2𝐹𝑟𝑥 − 2𝐹𝑓𝑦𝑠𝑖𝑛𝛿 +𝑚𝑉𝑦𝜔)/𝑚

𝑉𝑦 = (2𝐹𝑟𝑦 + 2𝐹𝑓𝑦𝑐𝑜𝑠𝛿 − 𝑚𝑉𝑥𝜔)/𝑚

𝜔 = (2𝐹𝑓𝑦𝑙𝑓𝑐𝑜𝑠𝛿 − 2𝐹𝑟𝑦𝑙𝑟)/𝐼𝑍入力1:制動力

入力2:操舵角

𝛿𝑚𝑖𝑛 ≤ 𝛿 ≤ 𝛿𝑚𝑎𝑥

横力

スリップ角

27

問題設定

0 m 20 m 40 m 60 m 80 m 100 m 120 m

目標: 進行方向に一定速度で目標軌道 (位置・姿勢) に追従

𝑌

𝑋0

• 目標車速 10 m/s• 操舵角制限 ±10°

目標軌道

滑りやすい路面 (雪)

6m

28

例題の流れ

1. 数式処理技術の活用

2. C/GMRES 法アルゴリズムの記述

3. 自動コード生成技術の活用

4. ブロック線図表現のシミュレーション

29

1. 数式処理技術の活用

数式が非線形になる.. 試行を重ねたい.. 自動化したい場合は特に有効

必要な数式の解析的な操作・導出には数式処理が有効

𝐹(𝑈, 𝑥, 𝑡) = 0 に必要な数式は?

𝐻 𝑥, 𝜆, 𝑢, 𝜇 = 𝐿 𝑥, 𝑢 + 𝜆𝑇𝑓 𝑥, 𝑢 + 𝜇𝑇𝐶(𝑥, 𝑢)

𝜕𝐻

𝜕𝑢

ハミルトニアン𝐻や終端コスト𝜑のヤコビ行列 𝐻𝑢, 𝐻𝑥, 𝜑𝑥

𝐿 𝑥, 𝑢 = 𝑥 − 𝑥𝑓𝑇𝑄(𝑥 − 𝑥𝑓) + 𝑢𝑇𝑅𝑢 − ∑𝑘𝑖 log(𝑢𝑖 − 𝑢𝑚𝑎𝑥)(𝑢𝑚𝑖𝑛 − 𝑢𝑖)

𝑓 𝑥, 𝑢 =

𝑥4 cos 𝑥3 − 𝑥5sin(𝑥3)

𝑥4 sin 𝑥3 + 𝑥5cos(𝑥3)𝑥6

(2𝑢1 − 2𝐹𝑓𝑦(𝑥)𝑠𝑖𝑛𝑢2 +𝑚𝑥5𝑥6)/𝑚

(2𝐹𝑟𝑦(𝑥) + 2𝐹𝑓𝑦(𝑥)𝑐𝑜𝑠𝑢2 −𝑚𝑥4𝑥6)/𝑚

(2𝐹𝑓𝑦(𝑥)𝑙𝑓𝑐𝑜𝑠𝑢2 − 2𝐹𝑟𝑦(𝑥)𝑙𝑟)/𝐼𝑍

𝐶 𝑥, 𝑢 = 0

例)

𝜕𝐻

𝜕𝑥

30

Symbolic Math Toolbox ~ MATLAB 数式処理ツール

微積分 (勾配、ヤコビ行列、ヘシアン)

数式の代入・単純化

代数計算、微分方程式の求解

Symbolic Math ToolboxMuPAD Notebook

(リッチテキスト形式の専用エディタ)

変換、特殊関数、線形代数

可変精度計算

コード生成 (MATLAB, Simscape言語)

31

𝑥 𝑡 : 測定されたプラント状態𝛥𝑥

𝛥𝑡: 状態の時間微分 (差分近似)

𝑡: 時間

2. C/GMRES 法アルゴリズムの記述

数式処理を通じて作成した関数を使用

初期化関数

初期値 U(0) 計算

C/GMRES 関数 (作成例)

𝑈 = fdgmres (𝐹, 𝑈 𝑡 , 𝑥 𝑡 ,Δ𝑥

Δ𝑡, 𝑡, 𝑝𝑎𝑟𝑎𝑚)

𝑈 𝑡 + 𝛥𝑡 = 𝑈 𝑡 + 𝑈(𝑡)𝛥𝑡 % 𝑈 𝑡 の積分

𝑢 𝑡 + 𝛥𝑡 = 𝑃0(𝑈 𝑡 + 𝛥𝑡 ) % 制御入力の抽出

プラント測定信号

F 計算用関数 lib𝐹(𝑈(𝑡), 𝑥, 𝑡)

プラント非依存関数 (汎用)

U(0)

Call

制御入力

制御開始前に勾配法などで計算

サンプリング時間 Δ𝑡

パラメータ設定用ファイル

入力

出力MATLAB で簡潔なプログラミング

32

3. 自動コード生成技術の活用

MMM

C

MEX MATLAB から呼び出せるDLL

プラントMPC

Simulinkモデルサブシステム

MATLAB関数ファイル

制御アルゴリズム

C ソースコード

MATLAB Coder

Simulink Coder/Embedded Coder

シミュレーション高速化

MATLAB Coder/Embedded Coder ラピッド/組込み実装

1. プロトタイプ試験目的2. 組込み実装目的

高速化・実装への近道

33

4. ブロック線図表現のシミュレーション

制御アルゴリズムを Simulink へ制御系を見通しよく設計・検証できる数値シミュレーション環境

34

非線形 MPC モデル

MATLAB Function ブロック

MMM

制御パラメータ

状態時間目標値

制御入力U U積分

35

プラントモデル

スリップ角計算

微分方程式左辺の計算

(数式処理の結果を利用)

状態制御入力

積分

36

要点まとめ

MATLAB は制御アルゴリズムの統合開発環境1. 数式処理技術の活用 ~ Symbolic Math Toolbox

2. C/GMRES 法アルゴリズムの記述 ~ MATLAB

3. 自動コード生成技術の活用 ~ MATLAB Coder/Embedded Coder

4. ブロック線図表現のシミュレーション ~ Simulink

制御アルゴ開発に MATLAB 環境と道具をぜひ有効活用ください開発者の思考や試行錯誤を助け、開発をより一層快適にします

37

アジェンダ

はじめに

モデル予測制御 (MPC) の考え方

MATLAB で非線形モデル予測制御 (NMPC) を書く

まとめ

38

まとめ

皆様の MPC 適用への活動を促進する一助となれば幸いです

日本の産業界で MPC 適用へ向けた取り組みをより活発化させてゆきませんか?

制御アルゴリズムの統合開発環境としてMATLAB を是非ご活用ください

提起

提案

MathWorks 製品、ワークフローを評価・導入してゆきませんか?

39

ご清聴いただき誠にありがとうございました

赤阪 大介 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.

top related