VSI09 — Aprendizagem por reforço

Agente DQN escolhendo o estado de chaveamento no lugar do MPC-FSC

Aviso

Em andamento. Modelo e script de treinamento escritos, ainda sem agente treinado.

Formulação

O bloco AgenteFSC (RL Agent) substitui o bloco FSC da VSI05 no mesmo circuito:

  • ação: um dos 8 estados de chaveamento (rlFiniteSetSpec(1:8));
  • observação (bloco ObsRew): \([P^*, Q^*, v_\alpha, v_\beta, i_\alpha, i_\beta]\);
  • recompensa: \(r = \exp\!\big(-(w_P e_P^2 + w_Q e_Q^2)\big)\), com \(e_P = P^* - P\), \(e_Q = Q^* - Q\);
  • fim do episódio (bloco done): \(t \geq 40\) ms;
  • agente: DQN, crítico MLP 6–24–24, \(\gamma = 0{,}99\), minibatch 32, buffer \(10^5\).

Arquivos

Arquivo Conteúdo
MPCFSCRL.slx modelo Simulink com o bloco RL Agent AgenteFSC
AgenteRL.m cria o ambiente, o agente DQN, treina e salva AgenteFSC.mat
blocos/ObsRew.m, blocos/done.m código dos blocos MATLAB Function (extraído, somente leitura)

O nome do modelo (MPCFSCRL) é usado em AgenteRL.m e não deve ser mudado sem atualizar o script.

Pendências (revisão do código)

  • \(T_s\): AgenteRL.m define os próprios parâmetros com Ts = 10e-6, diferente de Comum/Parametros.m (Ts = 1/48e3). É preciso escolher um valor e usar Parametros.
  • Crítico: rlQValueFunction com uma saída escalar e só a observação como entrada não é aceito para ações discretas. Use rlVectorQValueFunction (8 saídas, uma por ação) ou acrescente a ação como segunda entrada da rede.
  • Escala da recompensa: com erros de potência da ordem de centenas de W, \(\exp(-e^2) \approx 0\) quase sempre e o agente não recebe gradiente útil. Normalize os erros (por exemplo, por \(P_{nom}\)).
  • Potência: ObsRew calcula \(P = v_\alpha i_\alpha + v_\beta i_\beta\) sem o fator \(3/2\) usado nas VSI05/VSI08.
  • Episódio: MaxStepsPerEpisode = 200 com Ts = 10e-6 dá 2 ms, mas done só encerra em 40 ms. Alinhe os dois.