You are here

Aula 9 - Clarion: Controlando o WorldServer3D

Objetivo

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.

Atividade

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:

  • Teste 1: A criatura deve buscar todas as jóias designadas em seu leaflet e deve parar depois disso.
  • Teste 2: Duas criaturas devem competir para buscaras jóias que lhes foram delegadas. A primeira delas será a criatura com o controlador desenvolvido em SOAR na aula 6. A segunda será a criatura com o controlador usando o Clarion.

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:

  • Um arquivo com os executáveis do controlador, de tal forma que eu apenas desempacote a aplicação utilizando o mono. O teste será realizado em ambiente Linux 64 bits, como no laboratório.
  • Um arquivo com toda a árvore de código fonte necessária à recompilação do controlador, caso seja necessário.

Além disso, no relatório da atividade deve ser descrita a lógica da solução, para que eu compreenda seu funcionamento.

Dicas para a Implementação

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