ギャラクシースーパーはてなブログ

ギャラクシースーパーはてなブログ

ギャラクシースーパーノヴァ子の日記だお

【モデル予測制御】ステップ応答のモデル推定値を有限個の和で表現する

目的

モデル予測制御の学習のために参考資料を読んでいたところ,サラッと出て来たステップ応答の有限和の表現(式(10))で躓いてしまった.備忘のために式の導出のノートを残しておく.

※というわけで,モデル予測制御と銘打っていますがモデル予測制御のモの字も出て来ません.私も悲しいのです.あしからず.

参考資料

概要

  • 足して引く(正味ゼロ)操作によって和の書き換えを行う.
  • 入力が加えられてから,時間 s以上経過した後の応答は一定値に収束すると仮定する.事前に定めたこの仮定によって, \sum_{k=s}^\inftyの無限和の項を消す.

本題

時刻 t+jでのステップ応答として,次に示す式(7)を得る.

 y_M(t+j)=\sum_{k=0}^{j-1}a_{j-k}\Delta u(t+k)+\sum_{k=1}^{\infty}a_{j+k}\Delta u(t-k)

ここで第1項が現在時刻 t以降の入力による応答であり,第2項は時刻 t-1以前の過去の入力による応答である. モデル予測制御では制御入力区間を定めて,時刻t+1以降の入力のうち,時刻t+N_M-1までの操作量u(t+1), \cdots, u(t+N_M-1)を求める.t+N_M以降は変化させずにu(t+N_M-1)のままとする. すなわち,  \Delta u(t+i)=0 \hspace{15pt} {\rm for}\hspace{5pt} i \geq N_M 以上から式(7)は次のように書き直せる.(式9)  y_M(t+j)=\sum_{k=0}^{N_M-1}a_{j-k}\Delta u(t+k)+\sum_{k=1}^{\infty}a_{j+k}\Delta u(t-k) モデルによる将来の推定値y_M(t+j)を計算するためには無限個の過去の操作量が必要となってしまう.現実のアルゴリズムとして実装するために,第2項の無限個の和を有限個の和に書き直したい. 第2項は次のように書き直せる.

\begin{align} \sum _ {k=1}^{\infty}a _ {j+k}\Delta u(t-k) &= \sum _ {k=1}^{s-1}a _ {j+k}\Delta u(t-k) + \sum _ {k=s}^{\infty}a _ {j+k}\Delta u(t-k) \\ &= \sum _ {k=1}^{s-1}(a _ {j+k}-a _ k+a _ k)\Delta u(t-k) + \sum _ {k=s}^{\infty}a _ {j+k}\Delta u(t-k) \\ &= \sum _ {k=1}^{s-1}a _ k\Delta u(t-k) + \sum _ {k=1}^{s-1}(a _ {j+k}-a _ k)\Delta u(t-k) + \sum _ {k=s}^{\infty}a _ {j+k}\Delta u(t-k) \\ &= \sum _ {k=1}^{s-1}a _ k\Delta u(t-k) + \sum _ {k=1}^{s-1}(a _ {j+k}-a _ k)\Delta u(t-k) + \sum _ {k=s}^{\infty}a _ {j+k}\Delta u(t-k) + \sum _ {k=s}^{\infty}a _ {k}\Delta u(t-k) - \sum _ {k=s}^{\infty}a _ {k}\Delta u(t-k) \\ &= \left (\sum _ {k=1}^{s-1}a _ k \Delta u(t-k) + \sum _ {k=s}^{\infty}a _ {k}\Delta u(t-k) \right) + \sum _ {k=1}^{s-1}(a _ {j+k}-a _ k)\Delta u(t-k) + \left( \sum _ {k=s}^{\infty}a _ {j+k}\Delta u(t-k) - \sum _ {k=s}^{\infty}a _ {k}\Delta u(t-k) \right) \\ &= \sum _ {k=1}^{\infty}a _ k \Delta u(t-k) + \sum _ {k=1}^{s-1}(a _ {j+k}-a _ k)\Delta u(t-k) + \sum _ {k=s}^{\infty}(a _ {j+k}-a _ {k})\Delta u(t-k) \\ &= y _ M(t) + \sum _ {k=1}^{s-1}(a _ {j+k}-a _ k)\Delta u(t-k) + \sum _ {k=s}^{\infty}(a _ {j+k}-a _ {k})\Delta u(t-k) \\ \end{align}

ここで,上の式の第3項は時刻tからsステップ以上過去の入力による成分である. sステップ経過すると,応答は一定値になると仮定した.すなわち,  a_i = a_s \hspace{15pt} {\rm for} \hspace{5pt} i \geq s であった.第3項の応答係数はそれぞれ

\begin{align} &a _ {j+s}, a _ {j+s+1}, a _ {j+s+2}, \cdots \\ &a _ {s}, a _ {s+1}, a _ {s+2}, \cdots \end{align}

であり,添え字は全てs以上であるから,応答係数は全てa_sになる.したがって,差a_{j+k}-a_{k}=0となり,第3項は消える. 以上を踏まえて,計算結果を元の式(9)に戻すと,  y_M(t+j)=\sum_{k=0}^{N_M-1}a_{j-k}\Delta u(t+k)+ y_M(t) + \sum_{k=1}^{s-1}(a_{j+k}-a_k)\Delta u(t-k) となって,これは式(10)に一致した.