Projeto Final
Este é o projeto final da disciplina. É um projeto que deverá ser entrega por um grupo de até 2 integrantes.
Objetivo
O principal objetivo desta atividade é exercitar os conceitos vistos ao longo do semestre. Este exercício pode ser feito de diversas maneiras:
- o grupo de alunos pode escolher um problema, de algum setor qualquer, e aplicar as técnicas de reinforcement learning vistas ao longo deste curso para resolver este problema;
- o grupo de alunos pode aprofundar os seus conhecimentos sobre uma técnica específica de reinforcement learning através da implementação de um algoritmo específico e compará-lo com outros já conhecidos;
- o grupo de alunos pode criar novos environments que respeitam os padrões da https://farama.org/projects.
Para alcançar este objetivo, o grupo deverá:
- definir o objetivo, método e resultados esperados do trabalho em conjunto com o professor da disciplina;
- executar o método definido, colher métricas que comprovam o resultado alcançado e documentar tanto o método de desenvolvimento, como os resultados obtidos;
- compartilhar com os demais colegas da disciplina o trabalho desenvolvido.
Entregas e datas
30/04: deadline para definição do objetivo do trabalho, definição do método e resultados esperados. Cada grupo deverá entregar uma página que descreve o objetivo, métodos e resultados esperados do trabalho. As principais referências que serão utilizadas para o desenvolvimento do trabalho devem constar neste texto. Este texto pode ser entregue na forma de um arquivo Markdown ou LaTex no repositório do projeto.
14/05: trata-se de um marco intermediário onde o professor da disciplina irá analisar os artefatos existentes no repositório do projeto e, consequentemente, o andamento do mesmo.
19/05: cada grupo terá 10 minutos para apresentar o projeto desenvolvido. Importante: todos os artefatos, inclusive qualquer material utilizado para a apresentação, devem estar prontos no dia 19/05.
Submissão dos artefatos produzidos
Todos os artefatos produzidos ao longo do projeto deverão ser submitidos via Github Classroom. O link para submissão é https://classroom.github.com/a/bFrIHgJ3.
Cada grupo deverá adicionar ao repositório do projeto:
- todo código fonte necessário para a execução do mesmo;
- um arquivo README.md que descreve a organização do repositório e como executar cada um dos principais scripts;
- o relatório final do projeto.
O relatório final do projeto deve ter a seguinte estrutura:
- contexto e objetivo do trabalho;
- descrição do ambiente utilizado;
- descrição do método;
- resultados obtidos, e;
- considerações finais.
E não ultrapassar 4 páginas. Você pode baixar um template em \(\LaTeX\) para o relatório aqui. Neste outro link você consegue visualizar o arquivo PDF gerado a partir do template.
Rubrica do projeto
Cada projeto será avaliado considerando os itens listados na tabela abaixo.
Item | Peso na composição da nota |
---|---|
Implementação | 30% |
Relatório | 40% |
Vídeo com a apresentação do projeto | 30% |
Para conseguir a nota máxima é necessário:
- implementação: precisa estar funcionando, bem organizada e código legível.
- relatório: precisa ter todos os itens descritos acima. O texto precisa ser auto-contido, ter início, meio e fim.
- vídeo: o vídeo também precisa ser auto-contido, ter início, meio e fim. Não deve ultrapassar 10 minutos.
Vídeo
Cada equipe deverá gravar um vídeo de até 10 minutos apresentando os resultados do projeto. O vídeo deve ser colocado em alguma plataforma de vídeo (YouTube, Vimeo, etc.) e o link deve ser enviado junto com o relatório no repositório do projeto. De preferência, colocar o link para o vídeo no README do repositório. O vídeo deve conter os seguintes tópicos:
- Contexto e objetivo do projeto;
- Descrição do método utilizado;
- Resultados obtidos;
- Demonstração do funcionamento do agente.
Nota importante
A definição do objetivo do trabalho deve acontecer até o dia 30/04/2023. Se esta definição não acontecer até este dia a nota máxima no projeto será 8.
Sugestão de temas
-
Uso de Reinforcement Learning no dilema do prisioneiro iterado. Referência https://www.youtube.com/watch?v=mScpHTIi-kM.
-
Algo usando o ambiente Minigrid. Sugestão: procurar por artigos que citam o artigo https://arxiv.org/abs/2306.13831.
-
Algo relacionado com o artigo https://arxiv.org/abs/1703.04908 e o ambiente https://pettingzoo.farama.org/environments/mpe/.
Sugestão de ambientes a serem utilizados
-
https://github.com/Farama-Foundation/HighwayEnv : simulação de autopistas
-
https://github.com/google-deepmind/lab : DeepMind Lab
-
https://github.com/deepdrive/deepdrive: Self-driving cars
-
https://github.com/Kinds-of-Intelligence-CFI/animal-ai : Animal AI
-
https://github.com/Unity-Technologies/obstacle-tower-env : Ambiente com vários ambientes e desafios
-
https://github.com/upb-lea/gym-electric-motor : simulação de motores elétricos
-
https://github.com/icu-sepsis/icu-sepsis : simulação de ambiente médico
-
https://github.com/AI4Finance-Foundation/FinRL: Finanças e Reinforcement Learning
-
https://github.com/SimonHashtag/EconRL: Economics and Reinforcement Learning
-
Ambiente para simulação de carteiras: https://rlportfolio.readthedocs.io/en/latest/ , artigo: https://sol.sbc.org.br/index.php/eniac/article/view/33804/33595
-
https://github.com/mikelma/craftium: ambientes estilo minicraft.
-
https://github.com/rajcscw/nlp-gym: NLP Gym.
-
https://github.com/arvijj/rl-cpp: Ambiente para Coverage Path Planning.
-
https://github.com/omron-sinicx/ShinRL/: ambiente para avaliação de algoritmos de RL.