K ótimo: 0.9583
Controle Baseado em Dados
Universidade Federal do Pará
Q-learning aprende \(Q^\ast(s,a)\) por tentativa e erro. Aqui, um LQR escalar — solução ótima conhecida em forma fechada. Q-learning tabular encontra a mesma resposta?
\[ x_{k+1} = a x_k + b u_k \qquad \text{custo: } x_k^2 + \rho\, u_k^2 \]
Custo ótimo \(V^\ast(x)=Px^2\), política ótima linear \(u^\ast(x)=-Kx\):
\[ P = 1 + \gamma a^2 P - \frac{(\gamma a b P)^2}{\rho + \gamma b^2 P} \qquad K = \frac{\gamma a b P}{\rho + \gamma b^2 P} \]
Resolvemos \(P\) por ponto fixo — o que a programação dinâmica faria.
alpha, n_ep, steps = 0.1, 4000, 30
for ep in range(n_ep):
x = rng.uniform(-5, 5)
eps = max(0.1, 1 - ep/2000)
for t in range(steps):
si = disc(x, x_grid)
ai = rng.integers(len(u_grid)) if rng.random() < eps else np.argmax(Q[si])
u = u_grid[ai]
custo = x**2 + rho*u**2
x2 = np.clip(a*x + b*u, -5, 5)
Q[si,ai] += alpha*(-custo + gamma*np.max(Q[disc(x2,x_grid)]) - Q[si,ai])
x = x2Recompensa \(=-\text{custo}\).
K aprendido: 0.9540 | K ótimo: 0.9583
Diferença menor que 1% entre o ganho aprendido e o ótimo analítico.