You are here

Aula 2 - SOAR: Tutorial 1

SOAR: Tutorial 1

 

Objetivo

O objetivo desta aula é iniciar o estudo do SOAR, que é uma arquitetura cognitiva desenvolvida na Universidade de Michigan, pela equipe do Prof. John Laird.Serão desenvolvidas as atividades do Tutorial 1.

Relatório das Atividades


Atividade 1: Instalando o SOAR

Foi realizado o download do arquivo SoarTutorial_9.3.2-Linux_64bit.zip e instalado em ${home}/SoarTutorial_9.3.2-Linux_64bit, referenciado no restante deste documento como ${soar_home}.

Atividade 2: Construindo um Agente SOAR Simples usando Regras

Conforme o Tutorial 1, localizado em ${soar_home}/Documentation/Soar Tutorial Part 1.pdf, o arquivo ${soar_home}/Agents/hello-world-rule/hello-world-rule.soar foi carregado e executado no Soar Debugger.

No Soar, todo o conhecimento é representado por regras se-então, também chamadas de produções. O agente hello-world-rule possui apenas uma regra: "Se o agente existe então imprima "Hello World" e pare. O código fonte, carregado no editor VisualSoar é mostrado na Fig. 2.1.

 

A Fig. 2.2 mostra o Soar Debugger após a execução do agente hello-worl-rule. O procedimento realizado, passo a passo, foi:

  1. Iniciar o SoarJavaDebugger (um agente padrão soar1 é criado e mostrado no título da interface)
  2. Menu File; seleção da opção Load source file...; seleção do arquivo ${soar_home}/Agents/hello-world-rule/hello-world-rule.soar
  3. Execução através do botão Run, parte inferior esquerda da interface
  4. Verificação das etapas da execução na janela de interação (maior à esquerda)
  5. Verificação do conteúdo da memória de trabalho nas janelas à direita

 

Fig. 2.1 - hello-world-rule.soar no editor VisualSoar

 

Fig. 2.2 - hello-world-rule.soar no Soar Debugger

 

A Memória de Trabalho do Soar

A memória de trabalho contém todas as informações dinâmicas que um agente no Soar possui sobre o seu mundo e o estado de seu raciocínio interno. Contém informações dos sensores, cálculos intermediários, operações correntes e objetivos e é organizada em grafos de estados. Seus elementos (working memory elements - WME) estão conectados direta ou indiretamente a um símbolo de estado. Há dois tipos de nós: identificadores e constantes. Identificadores (nós não terminais) podem possuir ligações com outros nós enquanto constantes (nós terminais) não. As ligações são chamadas de atributos. A memória de trabalho é constituída de elementos individuais que são triplas com um identificador, um atributo e um valor, onde este último é um nó apontado pelo atributo e pode ser tanto um outro identificador ou quanto uma constante. Um conjunto de WMEs que compartilham o mesmo identificador é chamado um objeto que usualmente representa algo no mundo. Cada WME componente de um objeto é chamado extensão (augmentation) e representa uma propriedade do objeto ou uma relação com outros objetos.

Entrada e Saída no Soar

 

Atividade 3: Agentes Simples utilizando Operadores

O arquivo ${soar_home}/Agents/hello-world-operator/hello-world-operator.soar (fig 3.1) foi carregado no SoarJavaDebugger (fig 3.2).

Fig. 3.1 - hello-world-operator.soar no VisualSoar

 

Fig. 3.2 - hello-world-operator.soar no Soar Debugger

Vantagens do uso de operadores

 

Ação dos operadores

 

Vantagens do Visual Soar

 

Atividade 4: Criando um Agente para o Water Jug Problem

Foi criado um agente para resolver o problema dos jarros de água (Water Jug Problem), clássico na área de Inteligência Artificial.

O enunciado do problema é:
"São dados dois jarros. um comporta cinco galões de água e o outro comporta três galões.
Há uma fonte de água ilimitada que pode se usada para encher os jarros.
Também é possível esvaziar os jarros ou transferir o conteúdo de um jarro para o outro.
Não há marcas de níveis intermediários nos jarros.
O objetivo é encher o jarro de três galões com um galão de água."

O código do agente foi desenvolvido no Visual Soar, conforme o Tutorial 1, acrescentando-se passo a passo as regras e operadores necessários:
Iniciação, Elaboração de Estado, Proposição de Operadores, Aplicação de Operadores, Monitoramento de Estados e Operadores, Reconhecimento do Estado Desejado e Controle de Busca.

A Fig. 4.1 mostra os alguns dos códigos e o Datamap do agente completo.

Fig. 4.1 - códigos monitor, record e goal-test e Datamap para o agente para resolver o problema dos jarros de água

A Fig. 4.2 mostra o Soar Debugger após a execução do agente completo (incluindo o controle de busca) para resolver o problema dos jarros de água.

Essa foi o melhor resultado em dezenas de tentativas.

Fig. 4.2 - Soar Debugger após a execução do agente completo

 

Persistência de WMEs

 

Elaboração de Estado

 

Proposição de Operadores

 

Aplicação de Operadores

 

Monitoramento de Estados e Operadores

 

Reconhecimento do Estado Desejado

 

Controle de Busca

 

Conclusão

Os experimentos dessa aula introduziram os mecanismos por trás do funcionamento básico do Soar.

Assim como os sistemas especialistas, o Soar utiliza regras Se-então mas difere daqueles pela capacidade de remover automaticamente resultados que não correspondem mais a nenhuma regra ativa.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer