Implementando um Aspirador de Pó
Importante!
As orientações sobre a entrega deste exercício estão abaixo. Este é um exercício individual. Os alunos poderão discutir sobre o problema, mas a implementação deve ser feita individualmente. Se usarem ferramentas de IA então tentem entender o que a ferramenta de IA está fazendo.
Importante 2!
Neste tipo de exercício é muito comum as ferramentas de IA gerarem código que não funciona. Por isso, se usarem ferramentas de IA, tentem entender o que a ferramenta de IA está fazendo. Se o código gerado não funcionar, tente entender o que a ferramenta de IA fez e corrija o código. Nem o professor da discipina, nem o ninja poderão ajudar a corrigir o código gerado por ferramentas de IA.
Configuração do ambiente
Para executar esta atividade você terá que criar um projeto e como dependência deste projeto instalar a biblioteca AIGYM:
pip install aigyminsper
Esta biblioteca implementa diversos algoritmos de busca que serão utilizados ao longo da disciplina. Além disso, esta biblioteca permite o desenvolvimento de agentes inteligentes através de uma interface padrão. Para entender melhor como esta biblioteca funciona, por favor, leia a documentação oficial da biblioteca em https://insper.github.io/ai_gym/.
Exercício: Aspirador de Pó
Para este exercício vamos utilizar o arquivo AgentSpecification.py.
- Faça uma cópia deste arquivo e chame ele de
AspiradorPo.py, por exemplo. Não esqueça de alterar o nome da classe dentro do arquivo. - No método
__init__defina a estrutura de dados que você especificou na aula passada. - No método
successorscodifique a execução das ações segundo o que você especificou na aula passada. Dica: cada novo estado é uma instância de um novo objeto da classe que é adicionado na lista retornada pelo método. - Codifique o comportamento do método
is_goal. Ele deve retornarTruequando encontrar um estado igual a meta. - O médoto
description()retorna uma descrição do problema que está sendo resolvido. Por favor, altere o que está descrito no método. - Faça um retorno para o método
env(). Peça para o professor explicar em sala de aula. - Altere o método
main()para que o mesmo chame a sua classe.
Conceitos que devem ser explorados neste exercício
Representação de um problema na forma de estado, transição, grafo
Conceitos que devem ser explorados neste exercício
Algoritmos de Busca, começando com o algoritmo de busca em largura.
Exercício 2: Aspirador de Pó com 4 quartos.
Vamos implementar um aspirador de pó que atua em um ambiente com 4 quartos? Um quadrado \(2 \times 2\)?
Mas, antes de implementar usando uma estrutura similar a descrita acima, responda as questões abaixo:
- O que é relevante representar nos estados do mundo? Como os estados são estruturados (estrutura de dados) e qual o significado dela (dos campos)?
- Mostre como ficam representados os estados inicial e final segundo a representação adotada.
- Quais as operações sobre os estados? (detalhe como cada operação irá alterar os estados e quais as condições para cada operação ser executada)
- Qual a estimativa do tamanho do espaço de busca (número de estados possíveis)?