Criação de um agente baseado no Framework
LIDA que seja capaz de controlar a criatura no ambiente
WorldServer3D. A criatura devera completar os leaflets que
lhe forem atribuídos da mesma forma do que foi feito anteriormente
nos projetos do SOAR e Clarion.
Relatório
Um novo projeto com o Framework LIDA
foi criado no Netbeans a partir do tutorial do LIDA. De acordo com
o que foi sugerido no tutorial foi criado o projeto LIDA_WS3D_Agent
no Netbeans, foi adicionado o arquivo WS3DProxy.jar
para prover uma interface para o WorldServer3D.
Passos para a implementação de agentes usando
o Framework LIDA baseado nos códigos do
edu.memphis.ccrg.lida:
a. Criação de uma classe para representar o
mundo (Environment),
estendendo environment.EnvironmentImpl
Método init:
inicia a conexão com o WS3D e cria uma criatura;
Método
getState
fornece informações sobre os objetos no mundo;
Método
processAction
executa as ações selecionadas.
b. Criação da
classe para representar a memória sensorial do agente
(SensoryMemory),
estendendo: sensorymemory.SensoryMemoryImpl
Método
runSensors:
obtém as informações sensoriais através da chamada ao método
getState, da
classe Environment;
Método
getSensoryContents:
fornece as informações para os codelets de percepção
(perceptual codelets).
c. Criação das
classes para detecção dos objetos e situações relevantes ao
agente (feature detectors), os codelets de
percepção, estendendo pam.tasks.BasicDetectionAlgorithm
Método init:
define que informação, ou conteúdo sensorial, o codelet
deve detetar;
Método
detect: obtém
essa informação da memória sensorial através da chamada ao
método getSensoryContent,
da classe SensoryMemory.
d. Declaração de elementos nos arquivos de
declaração do agente, LidaWs3dAgent.xml,
e de definição dos elementos utilizados (tipos de nodes,
links,
strategy e
task),
factoryData.xml
Nodes definidos:
done,
representa a situação em que todos os leaflets foram
completados e entregues
lowEnergy,
representa o nível de energia menor ou igual a 400 unidades
enoughEnergy,
representa o nível de energia superior a 400 unidades
food,
representa a presença de comida no campo visual da criatura
thingAhead,
representa uma jóia ou comida a uma distância menor ou igual a
50 unidades
leafletJewel,
representa uma jóia no campo visual do agente e que consta de um
dos seus leaflets
noLeafletJewel,
representa a situação inversa a anterior
completeLeaflets,
representa que um ou mais leaflets foram completados
Todas
essas informações foram obtidas através da interface WS3DProxy,
na classe Environment
e repassadas como descrito anteriormente.
A
cada um dos detetores, corresponde um codelet de atenção,
que se encarregará de encaminhar as informações para o Global
Workspace.
As
decisões vencedoras no Global
Workspace passarão para a memória procedural que
instanciará esquemas com o contexto e as ações correspondentes.
Esses
esquemas passam para o módulo de seleção de ação que por sua
vez encaminha a ação selecionada para o módulo Sensory-Motor.
E
por fim deverá mapear a ação para o algoritmo correspondente e
enviará para o módulo Environment
através da chamada ao método processAction.
Os
resultados das ações executadas no mundo retornarão ao agente na
próxima atualização do estado, repetindo o ciclo.
A
figura a seguir apresenta o arquivo LidaWs3dAgent.xml.
Figura
1
A figura a seguir mostra a estrutura do
Enviroment.
Figura
2
A figura a seguir exibe a criatura no
Worldserver3D:
Figura
3
A interface do LIDA será apresentada na próxima
figura.
Figura
4
A figura abaixo ilustra a saída da execução
do agente de controle no Netbeans.

Figura 5