O objetivo da aula de hoje é utilizar a arquitetura cognitiva Clarion para controlar uma criatura artificial no WorldServer3D, de modo análogo ao que foi feito com o SOAR. Para tanto, é necessário que entendamos o funcionamento do Clarion, e desenvolvamos uma instância da arquitetura Clarion para controlar a criatura.
A proposta desta atividade é desenvolver um sistema de controle (uma mente artificial) para a criatura do WorldServer3D, utilizando o Clarion. Nosso desafio será semelhante ao desafio que foi proposto na implementação com o SOAR. A criatura deve obter sua meta de aquisição de jóias a partir de seu "leaflet", e buscar de maneira mais rápida possível cumprir a busca de jóias que lhe foi delegada. Para testar a capacidade da criatura, dois testes são propostos:
Para que eu possa fazer os testes do sistema de vocês de maneira rápida e eficiente, peço que me disponibilizem on-line dois arquivos ZIP diferentes:
Além disso, no relatório da atividade deve ser descrita a lógica da solução, para que eu compreenda seu funcionamento.
Antes de mais nada, é preciso dizer que vocês têm toda a liberdade para utilizar quaisquer estruturas disponíveis no Clarion para concluir a atividade. Para começar a pensar em uma solução, vamos relembrar algumas questões importantes sobre o Clarion. Em primeiro lugar, observemos a figura abaixo, que mostra como uma aplicação típica do Clarion funciona.
Observem que o "sensory input" corresponde a um ou mais DimensionValuePair, que podem conter informações genéricas. Existe no framework do Clarion, a classe SensoryInput, que deve ser utilizada para criar-se um objeto que funcionará como "sensory input". Essa classe possui o método Add, por meio do qual diversos DimensionValuePair podem ser inseridos, compondo a informação sensorial.
Na saída, devem ser criados diversos objetos da classe ExternalActionChunk, um para cada possível ação de saída que o Clarion pode gerar, controlando a criatura.
O ciclo cognitivo básico do Clarion, envolve a seguinte sequência:
Agent.Perceive(si);
ExternalActionChunk chosen = Agent.GetChosenExternalAction(si);
onde si é um objeto do tipo SensoryInput, devidamente preenchido com a informação sensorial.
Depois que as entradas do controlador foram definidas, e também as ações possíveis, é necessário agora criar as estruturas internas do ACS, que podem ser tanto no bottom-level (uma rede neural), como no top-level (regras).
Um exemplo (demo) bastante singelo de como usar o Clarion para controlar uma criatura no WorldServer3D pode ser visto aqui. Neste demo, duas regras fixas são utilizadas pelo Clarion para fazer a criatura desviar de obstáculos, virando à direita.
Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer