You are here

Aula 02



Atividade 1 - Instalando o SOAR


Baixando o Soar

Seguindo as instruções da aula, baixei o Soar para Windows x64, que é o sistema que utilizo em casa.

Baixando o Soar.


Instalando

Copiei o arquivo .zip para uma pasta de ferramentas e o desempacotei, renomeando a pasta raiz e deletando a pasta Agents e Documentation.

Instalando o Soar.


Copiando os agentes e documentação

Em seguida baixei também o arquivo disponibilizado pelo professor e copiei as pastas Agents e Documentation para o mesmo local da instalação, pois já possuia os agentes e tutoriais organizados em sequência.

Também copiei o arquivo Eaters_TankSoar.jar para a pasta \bin.

Copiando os agentes e documentação.


Soar instalado e rodando

Executei o arquivo SoarJavaDebugger.bat para verificar o funcionamento.

Soar instalado e rodando.



Atividade 02 - Construindo um Agente SOAR Simples usando Regras


Um resumo sobre o Soar

O Soar é uma arquitetura para desenvolvimento de sistemas inteligentes que provê uma estrutura computacional na qual o conhecimento pode ser codificado e utilizado para produzir ações que devem realizar um objetivo.

Pode ser considerado um tipo de linguagem de programação especializada pois possui atributos que permitem um melhor processamento de ações como tomada de decisão, aprendizado e planejamento dentre outros que são hipoteticamente necessários para se obter um comportamento inteligente.

Como parte desses atributos está um modelo de memória dividido entre Memória de Regras e Memória de Trabalho, e seu funcionamento se dá através de um sistema de regras, estados e ações que definem o funcionamento de um programa.

Memória de Regras (Rule Memory)

  • Também chamada de memória de longo prazo. (LTM - Long-Term Memory)
  • Contém todas as regras.
  • Adicionar regras é a forma básica de se criar agentes/programas.
  • As regras são verificadas e executadas em paralelo.

Memória de Trabalho (Working Memory)

  • Também chamada de memória de curto prazo. (STM - Short-Term Memory)
  • Todos os dados armazenados aqui são globais. (Soar não possui dados locais)
  • Esses elementos são criados por regras ou por sensores.
  • Contém toda a informação dinâmica sobre o mundo de um agente e os dados necessários para suas tomadas de decisão.
  • Contém dados de sensores, cálculos intermediáros, operadores e objetivos.
  • É o local onde informações de curto prazo são armazenadas.
  • É comparada com a memória de regras para determinar qual regra será disparada.
  • Quando regras são disparadas pode ocorrer modificações nos elementos e/ou executar ações simples.

Eis uma imagem que ilustra essa arquitetura:

Soar - modelo de alto nível


Utilizando a Memória de Trabalho

A memória de trabalho possui toda a informação a respeito do mundo de um agente, como cálculos intermediários, dados de sensores, operadores e objetivos. O agente utiliza essas informações para definir seu comportamento e apredizado.
O Soar organiza essa memória em uma estrutura do tipo grafo, por elementos que são criados por regras definidas ou dados de sensores. Sendo um grafo, possui nós (nodes) conectados através de elos (links or edges), sendo que há dois tipos de nós.
Nós que possuem elos que saem de si são chamados Identificadores (Não-terminais) e os outros nós são chamados Constantes (Terminais).

Todos os elementos são ligados direta ou indiretamente à um estado e são formados por um identificador, um atributo e um valor, conforme a imagem à seguir:

Memória de trabalho - Exemplo de estrutura

Ao carregar um agente, o Soar cria automaticamente um conjunto de elementos que são obrigatórios para todos os agentes, representados pela figura abaixo.

Na figura, S1 é um identificador de estado. Todos os identificadores são criados automaticamente pelo Soar e seus nomes, por definição, consistem de uma letra seguida de um número.
Em contraste, o elemento state é uma constante e não pode emanar elos. No Soar os elos são chamados de atributos e são precedidos pelo símbolo ^. Somente identificadores possuem atributos.

Memória de trabalho - Elementos implícitos

Sendo assim a memória de trabalho é formada por elementos que consistem de um identificador, um atributo e um valor, onde o valor é o nó para o qual o atributo aponta. Um valor pode ser uma constante ou identificador. A figura abaixo contém a representação textual da figura acima.

Memória de trabalho - Elementos implícitos em texto

Uma coleção de elementos que têm como origem o mesmo identificador é chamada de objeto. Os três elementos que têm S1 como seu identificador de origem fazem parte do mesmo objeto. Cada um desses elementos que formam um mesmo objeto são chamados de aumentos.

Memória de trabalho - Aumentos

Finalmente, os objetos que ocupam a memória de trabalho representam coisas que existem no mundo, como blocos e paredes, e os aumentos seriam as propriedades desses objetos (cor, tamanho ou peso), ou relações com outros objetos (em cima, dentro ou atrás).

Também pode-se representar objetos conceituais (invisíveis), como o objeto S1 dos exemplos acima, o qual define um estado, o que não seria um objeto vísível.

Memória de trabalho - Objetos


Formato das regras

O Soar define uma linguagem precisa para regras, que também são chamadas de produções

Toda regra inicia com o símbolo sp que significa Soar production, e o restante do corpo da regra fica entre chaves.
O corpo é formado pelo nome da regra, seguido por uma ou mais condições do tipo se, em seguida o símbolo --> seguido de uma ou mais ações que constituiriam a parte então. A figura abaixo mostra um modelo de regras.

Regras - Modelo

O nome da regra pode conter qualquer combinação de letras, números, hífens e asteriscos. A única exceção é que não pode ser uma única letra seguida de um número, pois essa é a notação que o Soar utiliza para nomear os seus identificadores. Embora o nome em si seja indiferente para a execução da regra, é recomendade utilizar nomes que tenham algum significado.

Após o nome da regra, deve haver pelo menos uma condição. As condições testam a existência ou ausência de dados na memória de trabalho e sempre iniciam com a palavra state. Caso todas as condições sejam verdadeiras, a regra será disparada e todas as ações serão executadas em sequência. A maioria das ações cria ou remove elementos da memória de trabalho.


Variáveis

Sempre que um agente Soar é criado ele tem a condição: (s1 ^type state) na memória de trabalho, o que significa que de alguma forma ele existe.

Como S1 é um símbolo arbitrário, pode-se usar variáveis para definir um valor genérico para um identificador. Dessa forma qualquer símbolo pode ser verificado na memória de trabalho, sendo que a única restrição é o fato de todas as ocorrências da mesma variável representa o mesmo símbolo em uma regra.

Variáveis podem ser usadas para representar identificadores, atributos ou valores, dependendo da sua posição em uma condição. Uma variável é representada por um símbolo tal como <s>

Variáveis - Exemplo de produção com variáveis



Criando um agente e utilizando o Soar Debugger

Criei um agente simples modificando o hello-world-rule e o carreguei no Soar Debugger:

Criando um agente com regras simples - programa

Ao executá-lo obtive o seguinte resultado na janela de interação do Soar Debugger:

Criando um agente com regras simples - resultado

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer