1. MPC は何をしているのか
MPC は現在状態から有限ホライズンの未来を予測し、制約を満たす最適入力列を求め、最初の入力だけを適用します。その後状態を再計測して再最適化します。この反復最適化が開ループ予測を閉ループフィードバックへ変えます。
重要ポイント
- 予測はモデル、最適化は入力列選択、フィードバックは新しい観測後の再最適化から生まれます。
- 状態・入力・エネルギー・衝突などの制約が重要な場合に MPC は特に有効です。
- 有限ホライズンで計算しつつ、receding horizon により長時間動作する制御器になります。
1次元の直感
停止線へ近づく車両なら、N ステップ先の位置・速度を予測し、停止誤差と制御入力を評価し、速度・加速度制約の下で制動列を求め、最初の制動だけ適用します。
2. システムモデルと離散化
MPC には予測モデルが必要です。連続線形系 ẋ=Ax+Bu をサンプリング周期 T_s で x_{k+1}=A_d x_k+B_d u_k に離散化するのが代表例です。非線形なら x_{k+1}=f(x_k,u_k) を使います。状態 x は将来予測に必要な情報、u は直接操作可能な入力です。
重要ポイント
- サンプリングが遅すぎると動特性を失い、速すぎると計算負荷やノイズ影響が増えます。
- モデル誤差は避けられず、robust/adaptive MPC、外乱モデル、頻繁なフィードバックで対処します。
- 追従では外乱状態や積分状態を拡張し、定常偏差を除くことがよくあります。
3. 多段予測と condensed form
離散線形系では未来状態を再帰展開できます。N ステップ分を積み上げると X=𝒜x_k+ℬU と書けます。この condensed form により動力学制約を行列関係にまとめ、U を変数とする QP として表せます。
重要ポイント
- 𝒜 は A の累乗、ℬ は A^iB を含み、各入力が将来状態へ与える影響を表します。
- Condensing は状態変数を減らす一方で密行列化しやすく、長いホライズンでは sparse formulation が有利な場合があります。
4. 目的関数:制御器に何を望ませるか
標準追従 MPC は状態・出力誤差と入力エネルギー、終端コストを評価します。Q は状態誤差の重要度、R は入力の強さ、必要なら Δu を罰して滑らかにします。重みは物理単位と優先順位に基づいて調整すべきです。
重要ポイント
- Q が R より大きいほど追従は積極的、R が大きいほど入力は保守的です。
- 状態量のスケール差が大きい場合は正規化してから重みを解釈します。
- soft constraint は slack と罰則で一時的な違反を許し、物理的に許容可能なら infeasible を避けられます。
5. 制約:MPC の実用上の強み
MPC は状態、入力、入力変化率、衝突、エネルギー、資源、エージェント間結合などを最適化問題に直接入れられます。hard constraint は必ず満たす必要があり、soft constraint は slack と罰則で緩和します。物理・安全制約と性能上の希望を区別することが重要です。
重要ポイント
- 系が可制御でも、制約とホライズン長によって有限ホライズン問題は infeasible になり得ます。
- robust MPC では不確かさの余裕を確保するため constraint tightening を使います。
- 論理・モード切替・割当を入れると mixed-integer MPC となり、通常の QP-MPC より計算負荷が大きくなります。
6. 線形MPCからQPへ
線形ダイナミクス、二次コスト、線形制約なら MPC は凸 QP です。X=𝒜x_k+ℬU を代入すると min 1/2 U^T H U + f(x_k)^T U, s.t. GU≤h+Ex_k の形になり、H が半正定値なら高信頼に解けます。
重要ポイント
- H は主に Q,R,P と予測行列で決まり、f は現在状態や参照値で変化します。
- 前時刻解をシフトして warm start すると計算時間を大きく短縮できます。
- 組込み実装では平均時間より最悪計算時間がサンプリング周期内に収まることが重要です。
7. Receding-horizon アルゴリズム
MPC 実装は各時刻で、状態推定 → 参照/予測更新 → 最適化構築 → 求解 → solver status 確認 → 最初の入力のみ適用 → 繰り返し、という流れです。予測軌道は計画であり、将来入力は実際に使う前に再計算されます。
重要ポイント
- 全状態を直接測定できない場合、状態推定器もループの一部です。
- 実システムでは timeout/infeasible 時の fallback control を必ず用意します。
- デバッグでは制約余裕、目的関数各項、solver status、計算時間を記録します。
8. 再帰的可行性
ある時刻で feasible でも次時刻も feasible とは限りません。再帰的可行性は、現在 feasible で制御を適用すれば次の MPC も feasible である性質です。典型証明では前回の可行入力列を1ステップシフトし、末尾に終端制御を追加します。終端集合と不変制御則がその末尾の可行性を保証します。
重要ポイント
- 再帰的可行性は solver の性能ではなく制御器設計の性質です。
- 外乱があると nominal shift argument は壊れるため、robust invariant set や margin が必要です。
- soft constraint は infeasible を減らしますが hard safety の保証とは別です。
9. 安定性・終端コスト・終端集合
短い有限ホライズンでは horizon 後を無視した行動を選ぶ可能性があります。terminal cost V_f は horizon 後のコストを近似し、terminal set X_f は局所制御器で可行性と安定化を保証できる領域です。標準条件下では MPC 最適値関数が Lyapunov 関数として使えます。
重要ポイント
- 線形二次 MPC では LQR から終端ゲイン K と行列 P を得ることがよくあります。
- 終端集合は終端制御器の下で正不変かつ状態・入力制約を満たす必要があります。
- 実務では terminal set を省略する場合もありますが、その場合に証明できる保証は変わります。
10. Robust MPC と Tube MPC
実系 x_{k+1}=Ax_k+Bu_k+w_k で w_k∈W のとき nominal MPC だけでは制約違反が起こり得ます。Tube MPC は x=z+e と分解し、名目軌道 z,v を tightened constraints 内で最適化し、局所フィードバック Ke で実状態を nominal trajectory 周辺の robust tube 内に保ちます。
重要ポイント
- E は誤差ダイナミクスの robust positively invariant set です。
- constraint tightening は最悪誤差分の余裕を確保します。
- すべての外乱系列を直接最適化するより実用的で、線形系では計算可能性とロバスト性のバランスが良い方法です。
11. 非線形MPCと分散MPC
NMPC は非線形ダイナミクス・制約を保持して NLP を解くため高精度ですが、実時間計算や大域最適性が難しくなります。DMPC は多エージェント系を局所問題へ分解し、予測軌道、結合変数、双対情報などを交換して協調します。
重要ポイント
- SQP や interior-point が NMPC でよく使われ、warm start が重要です。
- DMPC には協調型、ゲーム型、階層型、consensus/ADMM 型などがあります。
- ネットワーク制御では遅延やパケット損失自体が制御設計の一部になります。
12. MPC の調整・デバッグ
MPC がうまく動かない場合、まず Q/R を変えるのではなく、離散モデルと状態推定 → 無制約予測 → 制約追加 → 重みと horizon 調整の順で確認します。condition number、solver status、active constraint、予測誤差を記録し、数値問題と制御設計問題を分離します。
重要ポイント
- infeasible の場合は、罰則を大きくする前にどの制約が衝突しているか確認します。
- 振動する場合はサンプリング、モデル誤差、Q/R、Δu 罰則を確認します。
- 計算が遅い場合、horizon 短縮、疎構造、warm start、非線形簡略化、組合せ決定の上位層化を検討します。
この節の要点
このノート後には基本線形 MPC-QP を導出し、receding horizon の意味、可行性と安定性の違い、Tube MPC と DMPC の役割を説明できることを目標とします。