Relatório das atividades:
ATIVIDADE 1: Instalando o Soar

- Todos os elementos da memória de trabalho são organizados dentro de grafos de ESTADOS.
- Cada NÓ do grafo pode ser um IDENTIFICADOR (nó não terminal) ou CONSTANTES (nós terminais).
- As arestas do grafo são direcionais e correspondem a ATRIBUTOS do NÓ origem; somente INDENTIFICADORES podem ter atributos.
- A memoria de trabalho é constituída, então, de triplas (IDENTIFICADOR, ATTRIBUTO, VALOR), sendo que VALOR pode ser um outro IDENTIFICADOR ou uma CONSTANTE.
- Um OBJETO é o nome dado ao conjunto de triplas que derivam de um mesmo IDENTIFICADOR comum. Cada tripla que compõe um OBJETO é chamada de EXTENSÃO (augmentation).
- Como cada OBJETO normalmente representa algo do mundo real, cada EXTENSÃO pode ser entendido como um ATRIBUTO do objeto ou RELAÇÃO desse objeto com outro.
- Para entrada e saída a memória de trabalho utiliza IDENTIFICADORES especiais que permitem acomplamentos externos.

Segundo o próprio tutorial, o uso de OPERADORES permite:
- Criar AÇÕES que serão consideradas (avaliadas) para execução em diversas situações, a partir das REGRAS DE PROPOSIÇÃO dos operadores;
- Permite que uma AÇÃO seja selecionada a partir de vários RACIOCÍONIOS, através das REGRAS DE SELEÇÃO dos operadores;
- Permite que uma AÇÃO seja executada de diversas maneiras, através das REGRAS DE APLICAÇÃO dos operadores.
Na fase de PROPOSIÇÃO, a regra de proposição do operador funciona criando o operador como atributo específico - "^name hello-world" - no IDENTIFICADOR que a própria regra seleciona. Essa regra, quando ativada (condição é verdadeira), modifica a memória de trabalho, criando essa nova EXTENSÃO ao IDENTIFICADOR selecionado.
A regra de aplicação, já na fase de DECISÃO, utiliza a sua condição para selecionar um operador e definir o que serão, de fato, as suas AÇÕES. Essa regra, quando ativada, modifica a memória de trabalho, criando uma nova EXTENSÃO no IDENTIFICADOR que propôs o OPERADOR; essa nova extensão é que indica a execução do OPERADOR.
Uma primeira análise do VisualSoar permite concluir a funcionalidade do "Datamap" adiciona uma facilidade durante o desenvolvimento de uma aplicação no Soar, não somente para a visualização gráfica da estrutura da memória de trabalho - os IDENTIFICADORES e suas EXTENSÕES, no formato que o "SoarDebugger" apresenta são um pouco difíceis de visualizar, especialmente para OBJETOS muito extensos. A funcionalidade de validação da memória de trabalho também parece aumentar a eficiência do desenvolvimento.
PERSISTÊNCIA DE ELEMENTOS DA MEMÓRIA DE TRABALHO
O Soar faz uma distinção entre os elementos da memória de trabalho considerando se eles foram gerados ou não por uma regra de APLICAÇÃO de um operador: caso tenham sido geradas, essas modificações são consideradas como tendo o SUPORTE DE OPERADOR ("operator-support" ou simplesmente "o-support"); as modificações que não geradas a partir de regras de aplicação são consideradas como tendo o SUPORTE DE INSTANCIAÇÃO ("instantiation-support" ou simplesmente "i-support").
Modificações com suporte de instanciação são aquelas geradas no processo de proposição e seleção - criadas durante o proceso ocorrido até checar na aplicação de fato de um operador.
De forma a garantir a consistência do conhecimento capturado na memória de trabalho, o Soar DESFAZ quaisquer modificações com SUPORTE DE INSTANCIAÇÃO a partir do momento que as CONDIÇÕES que levaram até elas (as condições descritas pelas regras que realizaram as modificações na memória de trabalho) DEIXAM de ser VERDADEIRAS.
- Fase de ENTRADA
- Fase de ELABORAÇÃO DO ESTADO e PROPOSIÇÃO DE OPERADORES
- Fase de DECISÃO - SELECÃO DE OPERADORES
- Fase de EXECUÇÃO - APLICAÇÃO do operador selecionado
- Fase de SAÍDA
É possível fazer o monitoramento de estados e operadores criando regras que tenham como condições o que se quer monitorar e cuja ação seja o comando Soar "write", o qual concatena todos os seus parâmetro e manda para a saída do programa.
Dessa maneira, essas regras de monitoramento são disparadas durante as fases 2 (ELABORAÇÃO DO ESTADO e PROPOSIÇÃO DE OPERADORES) e 4 (EXECUÇÃO - APLICAÇÃO do operador selecionado), produzindo as saídas que permitem o monitoramento.
RECONHECIMENTO DO ESTADO DESEJADO
Para se fazer com que o Soar reconheça o um estado desejado, é preciso criar regras que determinem quais são esses estados. Assim como uma regra de monitoramento, uma regra que define um estado desejado tem como condições justamente a configuração dos elementos da memória de trabalho que definem um estado desejado; como ação, essa regra pode, por exemplo, interromper o programa com o comando "halt".
Durante as fases 2 e 4, o Soar irá continuamente testar essas regras de reconhecimento de estado desejado e, eventualmente, dispará-las.
É possível criar essas regras de reconhecimento contendo diretamente em suas condições os parâmetros que descrevem um estado desejado. Uma maneira um pouco mais versátil é criar estruturas na memória de trabalho - durante a etapa de inicialização da aplicação - para armazenar esses parãmetros: dessa maneira, as regras de reconhecimento comparariam as estruturas da memória de trabalho com essas estruturas de referência.
CONTROLE DE BUSCA
Através do uso dos modificadores das preferências é possível alterar a semântica de uma preferência, estabelecendo critérios para a sua escolha.
Da mesma maneira que foi acrescentado o modificador "=" para indicar que a seleção do operador pode ser randômica, no caso de haver mais de um operador proposto; alguns dos modificadores adicionais existentes são:
- "op >" - para indicar que um operador é o melhor de todos
- "op <" - para indicar que um operador é o pior de todos
- "op1 >, op2 <" - para indicar que "op1" é melhor que "op2", caso ambos estejam propostos
- "op -" - para rejeitar um operador
Com esses operadores, é possível criar regras que verifiquem se um determinado operador foi proposto e, em determinadas condições adicionais, modifiquem a sua preferência, adicionando modificadores.
Na aplicação "water-jug" é exatamente isso que faz as regras adicionadas para cada operação, como a abaixo, adicionada para a operação "fill", de maneira a torná-la a pior, caso a última operação executada tenha sido justamente a inversa, ou seja, "empty" sobre o mesmo jarro:
(state <s> ^name water-jug
^operator <o> +
^last-operator <lo>)
(<o> ^name fill
^fill-jug <i>)
(<lo> ^name empty
^empty-jug <i>)
-->
(<s> ^operator <o> <)
}

Os experimentos realizados dentro do tutorial 1 permitiram criar uma noção básica a respeito do funcionamento do Soar, no que diz respeito ao seu mecanismo de armazenamento do conhecimento na forma de conhecimento de longo-prazo - o que pode ser chamado de programa Soar - e na forma de conhecimento intermediário - a memória de trabalho.
O funcionamento do Soar está baseado na premissa de que o processo de resolução de um problema pode ser modelado em uma sucessão de diferentes estados, transicionados a partir da aplicação de operadores. A busca de um estado meta é, então, a sucessão contínua de etapas de proposição de operadores, seleção de apenas um operador e aplicação do operador.
Até o que foi explorado nesse primeiro tutorial, o Soar se assemelha com um sistema especialista uma vez que:
- O conhecimento existente é modelado;
- As regras para análise desse conhecimento são modeladas;
- O funcionamento do sistema busca reproduzir a cognição humana;
De fato, as primeiras implementação de larga escala do Soar foram feitas sobre reimplementações de sistemas especialistas - vide R1-Soar (Rosenbloom et al. 1985).
Entretanto, ao contrário de sistemas especialistas que focam em um domínio específico e estático, visando reproduzir o pensamento e conclusões de um especialista nesse mesmo domínio, pode ser considerado que o Soar tem um alcance mais amplo, sendo possível a implementação de sistemas especialistas a partir do Soar, mas com outras possibilidades, como a criação de modelos cognitivos baseados na aplicação do conhecimento, modelos de comportamento humano e agentes autônomos.
Essa possibilidade de aplicar diversos métodos cognitivos talvez seja o ponto que faz com que o Soar englobe as características dos sistemas especialistas.
- 1 view