- - Tutorial 1 -
Neste tutorial o SOAR foi instalado e o primeiro contato com o SoarDebugger
e outros elementos foi estabelecido, sendo propostos alguns exercícios simples
para construção desde agentes bem simples, passando por agentes com operadores
e chegando, por fim, a criação de agentes simples para o "Water Jug Problem", ou,
"Problema dos Jarros d´Água".
Deste tutorial alguns pontos importantes podem ser destacados:
- 1) O SOAR não é um simples sistema especialista ou um sistema de regras convencionais. O SOAR tem como principal diferente a capacidade de aprender, através de vários métodos, fato este que o dá ao SOAR um leque muito mais extenso de possibilidades;
- 2) O SOAR tem vários tipos de memórias internas, sendo estas as responsáveis pela capacidade de cognição do SOAR. Neste tutorial, com o auxílio do SoarDebugger e do VisualSoar (ferramenta própria para edição de "programas" SOAR) nós podemos entender o funcionamento da Memória de trabalho, que é o local onde informações temporárias são gravadas. Para isto foi importante a leitura, visualização e compreensão do arquivo hello-world-rule.soar que foi o primeiro exemplo estudado e tem como função escrever uma simples mensagem "Hello World" na tela;
- 3)O SOAR funciona em 5 fases: entrada - Elaboração de Estados e Operadores - Decisão (escolha do operador apropriado) - Execução (aplicação do operador) - saída. Basicamente a função dos operadores é verificar se uma determinada condição existe ou não na memória de trabalho, aplicando-se assim ou não a ação proposta para aquele operador;
- - Tutorial 2 -
O tutorial 2 nos apresenta o jogo "Eaters" baseado no antigo "Pac Man".
A primeira regra "move-to-food.soar" mostra bem como o eater age, contudo esta primeira regra é muito limitada pois o agente somente se alimenta das fontes ao seu redor e não mais procura comida. Com o avanço da leitura do Tutorial, fomos aprendendo a "debuggar" um programa SOAR usando desde técnicas muito simples (tais como escrever linhas de texto indicando em qual Soar Production o agente está operando), até os mais elaborados linhas de comando do próprio SOAR (tais como os comando "print" que nos mostra as estruturas que estão ativas na memória de trabalho; o comando "wmes" que imprime o estado individual de estrutura na memória de trabalho; e por aí vai...). Além disso também nos foi introduzida a ideia de precedência de operadores (ou "preferências" utilizando uma linguagem SOAR) usando os sinais "+", "<", ">" e outros.
- - Tutorial 3 -
O tutorial 3 nos apresentou o jogo "TankSoar" que é similar ao "Eaters" só que muito mais complexo. Primeiramente pelo fato de ter mais sensores e atuadores, e também por introduzir um conceito bem interessante que é o de "SubGoals", ou seja, metas intermediárias. No jogo "Eaters" a única meta era alimentar-se buscando sempre a comida mais próxima. Aqui no jogo "TankSoar" além de se "alimentar" de combustível e armas, um tanque ataca o outro o que torna o jogo extremamente mais interessante e bem mais complexo.
Um ponto importante que vale salientar nesse tutorial foi a introdução do conceito de "impasse" que ocorre toda vez que o conhecimento adquirido pelo SOAR impossibilita a escolha de um determinado operador. Este impasse gera um novo estado, que por sí só é um novo problema a ser resolvido, criando assim o "SubGoal" (ou submeta)
- - Tutorial 4 -
Aqui o problema dos "Missionários e dos Canibais" é apresentado para que possamos avançar no entendimento da arquitetura SOAR. Aqui não temos o dinamismo dos jogos "Eaters" e "TankSoar", mas poderemos entender como o SOAR faz para o melhor operador no meio de vários. Como nos diz no tutorial, o único caminho é através da tentativa-e-erro, aprendendo e não mais escolhendo aquela opção em situações similares no futuro.
- - Tutorial 5 -
Os problemas dos "Jarros d´Água" e dos "Missionários e Canibais" novamente são apresentados nesse tutorial para aprendermos mais sobre a arquitetura SOAR, sendo introduzido o conceito de Planejamento (pelo método "Look Ahead") e aprendizado (por "Chunking").
- - Tutorial 6 -
Aqui nos foi mostrado como montar grandes programas usando o SOAR e para isso o Jogo "Soar QuakeBot" foi implementado. Este tutorial não foi indicado para estudo formal na grade de aulas da disciplina, contudo a leitura é interessante pois dá uma overview da utilização do SOAR em um jogo que fez muito sucesso.
- - Tutorial 7 -
Aqui o conceito de "Reinforcement Learning" é introduzido. Este tipo de aprendizado nos permite na arquitetura SOAR que operadores sejam selecionados levando em consideração um sistema de recompensas, fazendo assim com que este seja um sistema incremental de aprendizado, diferentemente do método por Chunking que é baseado na solução de impasses.
- - Tutorial 8 -
Aqui a Memória Semântica do SOAR é estudada. Aqui ficam armazenados conhecimentos de forma persistente, permitindo ao agente guardar e recuperar esta informação por um longo tempo. Tal capacidade complementa as memórias de trabalho (que é de curta duração) e a memória procedural
- - Tutorial 9 -
Aqui a memória Episódica do SOAR é estudada. Esta memória de longa duração é a responsável pelo armazenamento de dados autobiográficos do agente, capturando, armazenando e indexando os estados do agente.