+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + Atividade 2: Construindo um Agente SOAR Simples usando Regras + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> Criando um Agente SOAR e Utilizando o SOAR Debugger << Inicializar debugger foi feito com sucesso pelo arquivo SoarJavaDebugger.sh na raiz do ZIP file. >> Executando o Hello World do SOAR Conceitos: Conhecimento é representado como regras if-then, regras são chamadas de productions (produções) e regras são usadas para selecionar e aplicar operators (operadores). 'If' são condições e 'then' ações que envolvem manipular a memória de trabalho (working memory - WM). Visão geral da sintaxe: sp {rule*name (condition) (condition) --> (action) (action) } Vale ressaltar que não programei, o arquivo estava pronto na pasta. >> Utilizando a Memória de Trabalho A WM do Soar é organizada em uma estrutura de grafo em estados. Existem dois tipos de dados: identificadores (nós que têm links emanando deles, são não-terminais) e constantes (os outros, chamados nós terminais). Símbolos não são identificadores, portanto não podem emanar. Os links são chamados de atributos, e eles são marcados com um 'circunflexo' no nome. Somente identificadores têm atributos. Não precisa declarar variáveis. Uma coleção de elements da WM que compartilham o mesmo identificador é chamada de 'object'. Os elementos que formam uma coleção são chamados de 'augmentations'. Todo agente Soar começa com "(s1 ^type state)" na WM. Variáveis servem para encontrar (match) identificadores, atributos ou valores, depende de onde utilizarmos. Uma variável fica envolvida em menor e maior, "" por exemplo. Para escrever (output), vimos que "(write |Hello World|)" faz isso. Para ler (input), ainda não foi debatido neste capítulo (provavelmente a nova versão do documento está diferente)