LQR — Regulador Quadrático Linear
O LQR encontra o ganho de realimentação de estados que minimiza o custo quadrático:
A solução e , onde e e a solução da Equacao Algebrica de Riccati (ARE).
Uso
import numpy as np
from synapsys.algorithms import lqr
from synapsys.api import ss
# Pendulo invertido simplificado
A = np.array([[0, 1], [10, 0]])
B = np.array([[0], [1]])
Q = np.diag([10.0, 1.0]) # penaliza posicao mais que velocidade
R = np.array([[0.1]]) # penaliza esforco de controle
K, P = lqr(A, B, Q, R)
print(f"Ganho K: {K}") # ex: [[-29.14, -7.61]]
# Verificar estabilidade da malha fechada
A_cl = A - B @ K
sys_cl = ss(A_cl, B, np.eye(2), np.zeros((2, 1)))
print(f"Estavel: {sys_cl.is_stable()}") # True
Ajuste de Q e R
| Objetivo | Ajuste |
|---|---|
| Resposta mais rápida | Aumentar (penalizar erro de estado) |
| Menor esforco de atuacao | Aumentar |
| Priorizar um estado especifico | Aumentar elemento diagonal de correspondente |
Regra de Bryson
Um ponto de partida clássico: e
Referência da API
Consulte a referência completa em synapsys.algorithms — lqr.