モデル予測制御(MPC)
入力・出力の制約を守りながら最適に動かす制御を原理から把握。予測モデルで先を読み、毎ステップ最適化を解き直す仕組みと、なぜプロセス制御で使えるのかが腑に落ちます。
- 1.MPC はモデルで未来の出力を予測し、有限の予測区間で評価関数を最小化する最適入力列を毎ステップ計算する。求めた列の先頭だけを実行し、次の時刻でまた解き直す(receding horizon)。
- 2.最大の強みは制約を評価関数ではなく最適化問題の制約条件として明示的に扱えること。線形モデル+二次評価+線形制約なら凸の二次計画(QP)に帰着し、大域解が保証される。
- 3.代償は計算コスト。サンプリング周期ごとに QP を解くため、遅い時定数のプロセス制御で発展したが、明示的 MPC や高速ソルバで数百µs級の高速系にも広がっている。
PID では届かない領域
PID 制御 は現在の偏差から操作量を作る強力な定番ですが、二つの弱点があります。第一に、未来を先読みするのは微分項による一次外挿だけで、系の動特性を使った本格的な予測は行いません。第二に、アクチュエータの上下限やプロセス変数の許容範囲といった制約を、飽和処理やアンチワインドアップという後付けの小細工でしか扱えません。多変数(MIMO)で入出力が互いに干渉し、複数の制約を同時に守りたい系では、この枠組みは行き詰まります。
モデル予測制御(Model Predictive Control, MPC)は発想を変えます。系の数学モデルを持ち、それで未来の出力を予測し、これから先の有限区間で「目標追従の良さ」と「入力の穏やかさ」を測る評価関数を、制約を守りながら最小化する最適な入力列を計算します。制御が予測と最適化そのものになっている点が、古典制御との決定的な違いです。
予測モデル ── 未来を先まで展開する
MPC の心臓は予測モデルです。多くの実装は離散時間の状態空間モデルを使います。現在の状態 x[k] を起点に、これから与える入力列を仮に置いて、モデルを繰り返し適用すれば予測区間の各時刻の状態と出力が計算できます。
離散時間状態空間モデル:
x[k+1] = A x[k] + B u[k]
y[k] = C x[k]
未来の入力列 { u[k], u[k+1], …, u[k+Nc-1] } を仮定して前進展開:
x[k+1] = A x[k] + B u[k]
x[k+2] = A x[k+1] + B u[k+1] = A^2 x[k] + A B u[k] + B u[k+1]
⋮
→ 予測ホライズン Np 先までの出力 y[k+1 … k+Np] が
現在状態 x[k] と入力列の線形結合として書ける
区別すべき二つの長さがあります。予測ホライズン Np は未来をどこまで見通すか、制御ホライズン Nc(Nc <= Np)は入力を何ステップ分だけ自由に動かすかです。Nc を過ぎた入力は最後の値に固定し、最適化する変数を減らして計算量を抑えます。線形モデルなら、予測出力ベクトルは「現在状態からの自由応答」と「未来入力による強制応答」の和として、入力列の一次式にまとまります。
予測はあくまでモデル上の未来であり、実プラントとは必ずずれます。外乱・非線形性・パラメータ誤差により、Np 先の予測ほど信頼できません。だからこそ MPC は予測列を最後まで実行せず、後述の receding horizon で毎ステップ実測に基づいて予測をやり直します。予測は「今どう動かすか」を決めるための道具であって、未来を確定させる予言ではありません。
有限区間の最適化 ── 何を最小化するか
制御目標は評価関数(コスト関数)で表現します。典型的には、予測出力と目標値(参照)の偏差の二乗和に、入力の動きの二乗和を重み付けして足したものを使います。
評価関数(二次形式):
J = Σ_{i=1..Np} || y[k+i] - r[k+i] ||_Q^2 ← 目標追従の誤差
+ Σ_{i=0..Nc-1} || Δu[k+i] ||_R^2 ← 入力の変化を抑制
Δu[k+i] = u[k+i] - u[k+i-1] (入力の増分)
Q : 出力偏差の重み行列(大きいほど追従重視)
R : 入力増分の重み行列(大きいほど穏やかな操作)
第一項は「目標にどれだけ速く正確に追従するか」、第二項は「入力をどれだけ穏やかに動かすか」を測り、重み Q, R の比が両者のトレードオフを決めます。入力そのもの u ではなく増分 Δu にペナルティを課す定式化が広く使われ、これは制御器に積分作用を内在させて定常偏差を消す効果があります(増分型 MPC)。目的は、この J を最小化する未来の入力列を求めることです。
制約の明示的な扱い ── MPC 最大の武器
MPC が他の制御と一線を画す点は、制約を最適化問題の制約条件そのものとして書けることです。PID では飽和として事後処理するしかなかった上下限を、MPC は最適化の内側で最初から守ります。
守るべき制約の例:
入力の大きさ: u_min <= u[k+i] <= u_max (バルブ開度・電流など)
入力の変化率: Δu_min <= Δu[k+i] <= Δu_max (スルーレート)
出力/状態: y_min <= y[k+i] <= y_max (圧力・温度・在庫など)
これらは入力列に関する線形不等式なので、線形モデル+二次評価と組み合わせると、最適化問題は凸の二次計画(QP: Quadratic Programming)になります。凸性は極めて重要で、局所解に嵌まらず大域最適解が保証され、成熟した QP ソルバで確実かつ高速に解けます。制約を明示できるため、安全限界ぎりぎりの高効率な運転点で系を動かせるのが、プロセス産業で MPC が選ばれる最大の理由です。
出力制約を厳しく課すと、外乱で状態が制約領域の外に押し出された瞬間、どんな入力を打っても全制約を満たせない実行不可能(infeasible)な状況が起こり得ます。素朴に解くと最適化が解なしを返し、制御が止まります。実務では出力制約をソフト制約にし、違反量にスラック変数と大きなペナルティを付けて「なるべく守るが、いざとなれば破る」よう定式化します。入力の物理限界(ハード制約)は常に守り、緩めるのは出力側という切り分けが定石です。
Receding horizon ── なぜ先頭だけ実行するのか
最適化を解くと予測区間全体(Nc ステップ分)の入力列が得られますが、MPC はその先頭の u[k] だけを実際にプラントへ与えます。そして次のサンプリング時刻になったら、新しく測定した状態を起点に、ホライズンを一つ先へずらして最適化を丸ごと解き直します。この「窓を毎回ずらしながら解き続ける」やり方が receding horizon(後退ホライズン/移動ホライズン)制御であり、MPC の運転原理の核心です。
receding horizon の1サイクル:
1. 現在の状態 x[k] を測定(または推定)する
2. x[k] を起点に予測区間の最適入力列 { u[k], …, u[k+Nc-1] } を解く
3. 先頭 u[k] だけをプラントに印加する
4. 残りは捨てる
5. 時刻を k+1 に進め、1 に戻る(区間全体が1つ後ろへずれる)
なぜ全列を実行せず捨てるのか。理由はフィードバックです。計算した入力列はあくまで「現時点のモデル予測が正しければ最適」なものにすぎず、実際には外乱やモデル誤差でずれます。毎ステップ最新の実測から解き直すことで、その誤差を常に取り込み、予測制御でありながら閉ループのフィードバック制御として働きます。有限区間で最適化しつつ、ホライズンをずらし続けることで、実質的に無限に先まで制御を継続できるわけです。
receding horizon は毎ステップ現在状態 x[k] を必要としますが、状態が直接測れないことは珍しくありません。その場合はカルマンフィルタなどの状態推定器を前段に置き、推定値 x̂[k] を最適化の初期状態として渡します。さらに、定常偏差を消すために外乱を状態に加えて推定する「外乱モデル(オフセットフリー MPC)」を併用するのが実務の定番構成です。予測・最適化・状態推定の三点セットで一つの制御系になります。
計算コスト ── 実用性を左右する現実
MPC の代償は計算量です。PID が数回の掛け算と足し算で済むのに対し、MPC はサンプリング周期ごとに最適化問題(QP)を解き直します。QP の変数の数は概ね「入力次数 × 制御ホライズン Nc」に比例し、ホライズンを伸ばすほど予測は賢くなる一方で計算負荷は急増します。この重さゆえ、MPC はまずサンプリング周期が秒〜分オーダーと長い、化学プラントや製油所のプロセス制御で1970年代から実用化されました。1周期に数百ミリ秒〜数秒かければ QP を解ける余裕があったからです。
その後、状況は大きく変わりました。オンラインで QP を解く陰的(implicit)MPC に加え、制約ごとに最適解が状態の区分的線形関数になる性質を使い、解をあらかじめオフラインで計算してテーブル化する明示的(explicit)MPC が登場しました。実行時は状態がどの領域に入るかを引くだけなので、ミリ秒未満で応答でき、自動車のパワートレインやモーター制御といった高速系にも MPC が入り込んでいます。
| 方式 | 最適化を解くタイミング | 実行時コスト | 向く領域 |
|---|---|---|---|
| 陰的 MPC(オンライン) | 毎サンプリング周期にQPを解く | ソルバ次第で重い | 変数・制約が多い大規模プロセス |
| 明示的 MPC(オフライン) | 事前に全領域の解を計算し表化 | テーブル参照のみで軽い | 状態次元が小さい高速・組込み系 |
| PID(参考) | 解かない(固定式で計算) | 極めて軽い | 単一ループ・制約が緩い系 |
明示的 MPC は速い反面、状態次元が増えると領域数が指数的に爆発してテーブルが巨大化するため、変数の多い大規模系では依然オンライン QP が主役です。
プロセス制御での実用性
MPC が最初に、そして最も深く根付いたのが石油精製・化学・製紙などのプロセス産業です。これらの系には MPC が輝く条件が揃っています。第一に、多数の入力(バルブ・ヒータ)と出力(温度・圧力・組成)が複雑に干渉する MIMO 系であること。第二に、収率・エネルギー・安全に関わる制約が多く、しかも制約の境界ぎりぎりで運転するほど利益が出ること。第三に、時定数が長くサンプリングに余裕があり、計算コストを許容できること。
MPC はモデルの予測に基づいて多変数を協調させ、制約を明示的に守りながら、目標を最適に追う操作を毎回計算します。安全限界に対して過剰なマージンを取らずに済むため、装置能力の限界近くで高効率に運転でき、これが省エネ・増産という形で直接の経済価値を生みます。今日では大規模プロセスの上位制御層に MPC を置き、その下で個々のループを PID が担う階層構成が標準です。
- 基本原理: モデルで未来出力を予測し、有限予測区間で評価関数を最小化する最適入力列を毎ステップ計算。先頭だけ実行し解き直す(receding horizon)。
- 二つのホライズン: 予測ホライズン
Np(どこまで見るか)と制御ホライズンNc(何ステップ入力を動かすか、Nc <= Np)。 - 制約の扱い: 入力・入力変化率・出力の制約を最適化の制約条件として明示。線形モデル+二次評価+線形制約 → 凸の QP、大域解が保証。
- 実行不可能性: 出力制約はソフト制約(スラック+ペナルティ)、入力の物理限界はハード制約にする。
- 計算コスト: 毎周期 QP を解くため重い。プロセス制御で発展。明示的 MPC でテーブル化すれば高速系にも適用可。
まとめ
モデル予測制御は、制御を予測と有限区間最適化の反復として捉え直す枠組みです。要点は、(1) 状態空間などのモデルで未来出力を予測し、予測区間で追従誤差と入力の動きを測る評価関数を最小化する最適入力列を計算すること、(2) 最大の武器は入力・出力の制約を最適化問題の制約条件として明示的に扱える点で、線形なら凸の QP に帰着して大域解が保証されること、(3) 求めた列の先頭だけを実行し、毎ステップ最新の実測から解き直す receding horizon により、予測制御でありながら閉ループのフィードバックとして働くこと、(4) 代償は毎周期 QP を解く計算コストで、時定数の長いプロセス制御で発展し、明示的 MPC や高速ソルバで高速系にも広がったこと。制約を守りながら最適点で系を攻める必要がある場面で、MPC は PID や状態フィードバックの先にある強力な選択肢になります。
信号処理・制御 Article
モデル予測制御(MPC)を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
制御工学
比較で見る軸
難易度: advanced / カテゴリ: 信号処理・制御 / タグ数: 5
導入後に効く点
最大の強みは制約を評価関数ではなく最適化問題の制約条件として明示的に扱えること。線形モデル+二次評価+線形制約なら凸の二次計画(QP)に帰着し、大域解が保証される。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- 信号処理・制御
- タグ数
- 5
判断チェックリスト
- 自社の用途が「制御工学 / モデル予測制御」に近いか確認する。
- 強みである「MPC はモデルで未来の出力を予測し、有限の予測区間で評価関数を最小化する最適入力列を毎ステップ計算する。求めた列の先頭だけを実行し、次の時刻でまた解き直す(receding horizon)。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。