LQR最適制御
極をどこに置くか悩まず、評価関数の重みだけで最適な状態フィードバックを自動決定。リカッチ方程式とQ・R設計の勘所が原理から腑に落ちます。
- 1.LQR は状態と入力の二次形式を積分した評価関数 J を最小化する状態フィードバック u = -Kx を求める設計法。最適ゲインは K = R⁻¹BᵀP で、P は代数リカッチ方程式(ARE)の正定対称解。
- 2.重み行列 Q は状態のずれへの、R は入力の大きさへのペナルティ。Q を大きくすると速く収束するが入力が暴れ、R を大きくすると省エネだが緩慢になる。極配置と違い設計者は極でなく重みを決める。
- 3.LQR は閉ループの漸近安定を自動保証し、単入力の連続時間系では位相余裕60°以上・ゲイン余裕無限大という強いロバスト性(ロバストネス)を持つ。ただしこの保証はオブザーバを挟むと崩れる。
極配置の「置き場所問題」を最適化で解く
状態フィードバック u = -Kx は、閉ループのシステム行列を A - BK に変え、その固有値(閉ループ極)をゲイン K で望みの位置へ動かせます(/dsp-control/state-space-control/ の極配置)。しかし可制御な系では極は「どこにでも置ける」がゆえに、逆にどこへ置くのが良いのかという指針が原理から出てこないという問題が残ります。極を左へ遠ざければ速いが入力 u が飽和し、モデル誤差やノイズへの感度も悪化します。多入力系では K の自由度がさらに増え、極の位置だけでは K が一意に決まりません。
LQR(Linear Quadratic Regulator、線形二次レギュレータ)は、この「置き場所問題」を評価関数の最小化にすり替えて解きます。設計者が決めるのは極ではなく、状態のずれと入力の大きさをどれだけ嫌うかという重みです。すると最適な K が数学的に一意に定まり、そのとき閉ループ極は自動的に「良い場所」へ配置されます。制御対象が線形(Linear)、評価関数が二次形式(Quadratic)だからこの名がつきます。
二次形式の評価関数 J を定義する
LQR が最小化するのは、状態と入力の二次形式を無限時間まで積分した評価関数(コスト関数) J です。
連続時間・無限時間ホライズンの評価関数:
J = ∫₀^∞ ( xᵀ Q x + uᵀ R u ) dt
├── 状態コスト ──┤ ├─ 入力コスト ─┤
Q : 状態の重み行列(n×n, 対称・半正定 Q ⪰ 0)
R : 入力の重み行列(m×m, 対称・正定 R ≻ 0)
第1項 xᵀ Q x は状態が原点(目標)からずれている度合いへのペナルティ、第2項 uᵀ R u は入力エネルギー(操作量の大きさ)へのペナルティです。積分は「速く原点へ戻したい/だが入力は使いすぎたくない」という相反する要求を、時間全体にわたる総和として1つのスカラー J に集約します。J を最小化する入力の時系列 u(t) を求めるのが最適制御問題であり、その解が状態フィードバックの形 u = -Kx になる、というのがLQRの核心です。
二次形式にする理由は本質的です。評価関数が状態と入力について二次であれば、最適解が状態の線形関数(定数ゲイン K による静的フィードバック)になることが保証され、実装が極めて簡潔になります。もし4乗や絶対値を混ぜれば、最適則は非線形になり実装も解析も一気に難しくなります。
Q ⪰ 0(半正定)は、状態コスト xᵀ Q x が負にならない(ペナルティが割引にならない)ことを保証します。半正定で足りるのは、一部の状態成分に重みゼロを許すためです。一方 R ≻ 0(正定)は必須です。もし R が特異だと、ある入力方向をコストゼロで無限に使えてしまい、最適解が発散したり K = R⁻¹BᵀP の逆行列 R⁻¹ が存在しなくなります。加えて (A, B) が可制御(あるいは可安定)、(A, √Q) が可観測(あるいは可検出)であれば、後述のリカッチ方程式は一意の安定化解を持ちます。
最適ゲインとリカッチ方程式
J の最小化はハミルトン–ヤコビ–ベルマン方程式や変分法(オイラー–ラグランジュ方程式)から導けますが、線形二次の場合、最適な状態フィードバックゲイン K は次のように代数リカッチ方程式(ARE, Algebraic Riccati Equation)の解 P から閉じた形で得られます。
最適状態フィードバック:
u(t) = -K x(t) , K = R⁻¹ Bᵀ P
P は連続時間代数リカッチ方程式(CARE)の
正定・対称な安定化解:
Aᵀ P + P A - P B R⁻¹ Bᵀ P + Q = 0
ここで P は n×n の対称正定行列です。リカッチ方程式は P について二次(P B R⁻¹ Bᵀ P の項)であるため、一般に複数の解を持ちますが、そのうち閉ループ A - BK を安定にする解(安定化解)はただ1つで、それを採用します。数値的にはハミルトン行列の安定固有空間から求める方法(care/lqr 関数)が標準です。
P が求まれば、最小コストそのものも初期状態から J_min = x(0)ᵀ P x(0) と即座に分かります。つまり P は「各初期状態から最適に制御したときの残りコスト」を表す価値関数の重み行列であり、リカッチ方程式はその価値関数が満たすべき関係式にほかなりません。
LQR 設計の流れ:
1. モデル (A, B) を用意 → 状態空間表現
2. 重み Q, R を選ぶ → 設計者の意図
3. CARE を解いて P を得る → AᵀP+PA-PBR⁻¹BᵀP+Q=0
4. K = R⁻¹ Bᵀ P を計算 → 最適ゲイン
5. u = -Kx を実装、A-BK の極を確認 → 自動で安定
離散時間系 x[k+1] = A x[k] + B u[k] でも枠組みは同じで、評価関数は総和 J = Σ (xᵀQx + uᵀRu) となり、対応する離散代数リカッチ方程式(DARE)を解いて K = (R + BᵀPB)⁻¹ BᵀPA を得ます。デジタル実装ではこちらを使います。
重み行列 Q と R の設計
LQR で設計者が実際に手を動かすのは Q と R の選定だけです。両者の比が挙動を支配します。
| 操作 | 評価関数への効果 | 閉ループ挙動 | 副作用 |
|---|---|---|---|
| Q を大きく | 状態のずれを強く嫌う | 速く原点へ収束(極が左へ) | 入力 u が大きく飽和しやすい |
| R を大きく | 入力の大きさを強く嫌う | 省エネで穏やかな操作 | 収束が緩慢・応答が遅い |
| Q の対角成分を個別調整 | 特定の状態成分を重点管理 | その成分だけ速く抑える | 他成分とのバランス調整が必要 |
実務では次の指針が使われます。第一に、Q と R は対角行列から始めるのが定石で、対角成分は各状態・各入力の「許容できる大きさの2乗の逆数」で正規化すると物理的に意味が通ります(ブライソンの重み付け則)。たとえば状態 x_i のずれを最大 x_i,max まで許すなら Q_ii = 1 / x_i,max²、入力 u_j を最大 u_j,max まで許すなら R_jj = 1 / u_j,max² と置きます。これで単位系の異なる量(角度と角速度など)を公平に比較できます。第二に、全体スケールは相対比のみが効くため、R を固定して Q を定数倍しながら応答と入力の飽和を見て追い込みます。
評価関数 J を定数 c 倍しても最小化する u は変わりません。したがって Q と R を同時に c 倍しても最適ゲイン K は不変で、効くのは Q と R の相対的な大きさだけです。設計時は片方(通常 R = I など)を固定し、もう片方をスカラー倍 ρ でスイープする「Q vs ρR」の1パラメータ探索に落とすと見通しが良くなります。ρ を上げれば入力を惜しんで遅く、下げれば入力を使って速く、という直交した軸で調整できます。
状態フィードバックとの関係・古典制御との違い
LQR は極配置と同じく u = -Kx という静的状態フィードバックを作る手法であり、出力する制御則の形はまったく同じです。違いは K の決め方だけです。極配置が「閉ループ極の位置」を直接指定して K を逆算するのに対し、LQR は「評価関数の重み Q, R」を指定して K を最適化で導きます。
| 観点 | 極配置 | LQR |
|---|---|---|
| 設計者が指定するもの | 閉ループ極の位置 | 重み行列 Q・R |
| 多入力系での一意性 | K は一意に決まらない | K が一意に定まる |
| 安定性の保証 | 極を左半面に置けば安定 | 自動的に安定(保証あり) |
| ロバスト性 | 特に保証なし | 強い余裕を保証(後述) |
| 物理的意味づけ | 極位置=速応性・減衰 | 重み=許容ずれ・許容入力 |
古典制御の PID が偏差の「今・積分・微分」を手調整のゲインで足すのに対し、LQR は系の全状態を使って理論最適なゲインを一括算出します。目標値 r への追従(レギュレーションでなくサーボ)が必要なら、フィードフォワード項や積分器を状態に拡大したサーボ形LQR(状態に ∫(r - y)dt を追加)で定常偏差をゼロにできます。また状態が直接測れない場合は、カルマンフィルタなどのオブザーバで推定した x̂ を使い u = -Kx̂ とします。LQR(制御)とカルマンフィルタ(推定)を組み合わせた設計はLQG(線形二次ガウス)制御と呼ばれ、分離定理により両者を独立に設計できます。
最適性と安定余裕(ロバスト性)
LQR の際立った長所は、最適であるだけでなく優れた安定余裕を自動的に備えることです。単入力(SISO)の連続時間LQRでは、開ループ伝達関数がナイキスト線図上で -1 点を中心とする半径1の円の外側を必ず通るという性質(リターンディファレンスが1以上)が成り立ちます。ここから次の古典的な余裕が保証されます。
連続時間・単入力 LQR のロバスト性保証:
ゲイン余裕 : 下方 -6 dB(1/2倍)〜 上方 +∞(無限大)
位相余裕 : 少なくとも ±60°
→ ループゲインが 0.5〜∞ 倍に変動しても安定を維持
→ 60°もの位相遅れが加わっても発振しない
これは手調整のPIDや素朴な極配置ではまず得られない強力な保証で、モデル誤差やゲイン変動に対して頑健であることを意味します(余裕の意味は /dsp-control/feedback-stability-nyquist/ を参照)。直感的には、最適制御は入力を「必要な分だけ」使うため、過度なゲインで -1 点へ近づくことがなく、結果として大きな余裕が残るのです。
LQR単体の見事な安定余裕は、全状態が正確に測れることを前提とします。実際にはオブザーバやカルマンフィルタで状態を推定して u = -Kx̂ とするLQG構成が普通ですが、このときLQRの余裕保証は一般に成立しません。ジョン・ドイルは1978年に「LQGには保証された安定余裕が存在しない(余裕がいくらでも小さくなる例が作れる)」ことを示しました。推定器を挟むと開ループ特性が変わり、-1 点への近さが保証されなくなるためです。実務ではLQG/LTR(ループ伝達回復)やH∞制御でロバスト性を明示的に取り戻します。「LQRは頑健、しかしLQGは自動では頑健でない」を必ず区別してください。
- 評価関数:
J = ∫(xᵀQx + uᵀRu)dt。Q は状態ずれ、R は入力のペナルティ。Q ⪰ 0、R ≻ 0。 - 最適ゲイン:
K = R⁻¹BᵀP。P は CAREAᵀP + PA - PBR⁻¹BᵀP + Q = 0の正定安定化解。 - 設計自由度: 設計者は極でなく Q・R を決める。効くのは Q と R の比。多入力でも K が一意。
- 最小コスト:
J_min = x(0)ᵀ P x(0)。P は価値関数(残りコスト)の重み行列。 - ロバスト性: SISO連続時間で位相余裕±60°以上・ゲイン余裕[-6dB, +∞]。ただしLQG(オブザーバ併用)では崩れる(ドイルの反例)。
まとめ
LQR は、状態フィードバック u = -Kx のゲインを「極をどこに置くか」ではなく「評価関数 J = ∫(xᵀQx + uᵀRu)dt を最小化する」という原理で一意に決める最適制御の枠組みです。要点は、(1) 二次形式の評価関数を最小化するので最適解が状態の線形フィードバックになること、(2) 最適ゲインは K = R⁻¹BᵀP で、P は代数リカッチ方程式の正定安定化解として求まること、(3) 設計者が触るのは重み Q(状態のずれを嫌う)と R(入力を嫌う)の比だけで、Q を上げれば速く・R を上げれば省エネになること、(4) 極配置と違い多入力でも K が一意に定まり閉ループ安定が自動保証されること、(5) 単入力連続時間では位相余裕60°以上という強いロバスト性を持つが、オブザーバを挟むLQGではその保証が崩れること。この原理は、電力変換器やモーターの最適制御から航空宇宙の姿勢制御まで、状態空間で表せるあらゆる系の系統的な設計基盤になります。
信号処理・制御 Article
LQR最適制御を実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
制御工学
比較で見る軸
難易度: advanced / カテゴリ: 信号処理・制御 / タグ数: 6
導入後に効く点
重み行列 Q は状態のずれへの、R は入力の大きさへのペナルティ。Q を大きくすると速く収束するが入力が暴れ、R を大きくすると省エネだが緩慢になる。極配置と違い設計者は極でなく重みを決める。
先に潰すリスク
用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。
- 難易度
- advanced
- カテゴリ
- 信号処理・制御
- タグ数
- 6
判断チェックリスト
- 自社の用途が「制御工学 / 最適制御」に近いか確認する。
- 強みである「LQR は状態と入力の二次形式を積分した評価関数 J を最小化する状態フィードバック u = -Kx を求める設計法。最適ゲインは K = R⁻¹BᵀP で、P は代数リカッチ方程式(ARE)の正定対称解。」が本当に評価軸になるか確認する。
- 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。