Programação dinâmica e aprendizado por reforço

Programação dinâmica é uma técnica que permite a modelagem de problemas de decisão sequencial sob incerteza. Um tomador de decisão (também chamado de controlador) interage com um sistema, o qual pode assumir estados diferentes ao longo do tempo. As decisões tomadas afetam os estados futuros do sistema, cuja evolução ao longo do tempo é imprevisível (estocástica).
A cada decisão, o tomador de decisão recebe uma recompensa (ou incorre em um custo). O objetivo da programação dinâmica é obter uma política ótima (um conjunto de regras de decisão) de forma a maximizar a recompensa total esperada ou minimizar o custo total esperado ao longo do horizonte de planejamento.
A técnica é alternativamente chamada de aprendizado por reforço (reinforcement learning) na comunidade envolvida com aprendizado de máquina, e tem sido aplicada promissoramente nas áreas de robótica e jogos. Neste caso, o tomador de decisão é chamado de agente, enquanto o sistema é referido como ambiente.

Neste projeto, é estudada a modelagem de problemas de decisão sequenciais estocásticos que ocorrem nas áreas de produção, logística e transportes. Os problemas são abordados com uso de técnicas de programação dinâmica aproximada e aprendizado por reforço.
São utilizados modelos estatísticos e redes neurais como aproximadores para as funções de valor ou aproximadores diretos de políticas. Para o treinamento, são usados algoritmos com base no método do gradiente estocástico, filtro de kalman e aprendizado bayesiano.
Também tem sido explorada a técnica de aprendizado por reforço profundo, no qual se utilizam redes neurais profundas como aproximadores para funções de valor e políticas. Essa técnica permite, por exemplo, a representação de estados por meio de formatos de dados não estruturados, como imagens e texto.
Integrantes do projeto
Anselmo R. Pitombeira Neto (Coordenador)
Arthur H. F. Murta (Mestrando)
Vitória I.T. Mendonça (Mestranda)
Rodrigo F. Meneses (bolsista de iniciação científica)