💡

モデル予測制御入門 1:モデル予測制御の考え方

2023/07/02に公開

モデル予測制御とは?

モデル予測制御(Model Predictive Control, MPC)とは、PID制御に代わる多くのメリットを持った強力な制御アルゴリズムです。
MPCは予測モデルと最適化ソルバーの2つの要素からなっていて、予測モデルは制御対象のダイナミクスを記述する運動方程式であり、最適化ソルバーは与えられたコスト関数を最小にするような方法を見つけます。
将棋で例えると、予測モデルを用いて相手の手を数十手先まで予測し、最適化ソルバーを用いてその中で最も良い手を選択します。(実際にBonanzaという将棋AIはこれに近いアイデアが用いられていました。)

MPCの強みとして以下のような性質が挙げられます。

  • 多入力多出力(MIMO)系に対応
  • 最適制御可能
  • 拘束条件を扱える
  • むだ時間に強い
  • ハンチングやオーバーシュートが起きにくい
  • 離散変数を扱える

一方で、MPCはリアルタイムで最適化問題を解き続けなければならないため比較的計算資源を要求するというデメリットを持っていますが、近年の計算機の進化によってそれは段々と問題にならなくなってきています。

MPCの定式化(最適化問題への帰着)

まずは離散時間でかつ全状態量が観測可能なMPCを考えてみます。
制御対象のダイナミクスを時刻k \in \mathbb{N}における状態量x_k \in [x_{min}, x_{max}]^{n_x}、制御入力u_k \in [u_{min}, u_{max}]^{n_u}、非線形な微分可能な関数f: \mathbb{R}^{n_x} \times \mathbb{R}^{n_u} \rightarrow \mathbb{R}^{n_x}を用いて

x_{k+1} = f(x_k, u_k)

と表せるとします。もしここで時刻0の状態が\tilde{x}_0、時刻K-1までの制御入力が[\tilde{u}]_0^{K-1} = \{ \tilde{u}_0,\tilde{u}_1, \dots, \tilde{u}_{L-1} \}として与えられれば自動的に時刻Kまでの状態の軌道[x]_1^K=\{ x_1,x_2, \dots, x_{K} \}が以下のように得られます。

\begin{align*} x_{1} & = f(\tilde{x}_0, \tilde{u}_0) \\ x_{2} & = f(x_1, \tilde{u}_1) = f(f(\tilde{x}_0, \tilde{u}_0), \tilde{u}_1) \\ \vdots \\ x_{K} & = x_{K}(\tilde{x}_0, \tilde{u}_0, \tilde{u}_1, \dots, \tilde{u}_ {K-1}) \end{align*}

すなわち、制御入力の系列[\tilde{u}]_0^{K-1} = \{ \tilde{u}_0,\tilde{u}_1, \dots, \tilde{u} _{L-1} \}をうまく選んでやることで、好ましい状態の軌道を実現できるというわけです。(当然ですが、拘束条件を破るものは実現不可能です。)
では、好ましさとはどのように定義されるのでしょうか?
一般的には例えば状態量とその時間差分を用いて以下のようなコスト関数

\mathcal{L} = \sum_{k=0}^K L(x_k, \Delta x_k, u_k, \Delta u_k)

をうまく設計することで、その最小値が実現されるときに好ましい軌道[x^{opt}]_1^Kが得られるようにします。
すなわち、「欲しい軌道を実現するための制御入力を得る」という問題を最適化問題に帰着させていることになります。

上記のままでは非線形関数fが入り組んだ構造になってしまうので、通常は以下のように定式化します。

[u^{opt}]_0^{K-1} = \argmin_{[u]_0^{K-1}} \mathcal{L} \\ s.t. \left\{ \begin{align*} x_{k+1} = f(x_k, u_k) \\ x_{min} \leq x_k \leq x_{max} \\ u_{min} \leq u_k \leq u_{max} \end{align*} \right.

このようにして不等式制約と等式制約の下での最適化問題に帰着できます。
この問題を解くために、次の章では制約条件下の最適化問題を解くための主双対内点法というアルゴリズムについて解説します。

次章:制約付きの非線形最適化問題

Discussion