You are here

Aula 13 - LIDA 2: Exemplos de Implementação Prática

LIDA 2: Exemplos de Implementação Prática

 

Objetivo

Executar um tutorial prático utilizando a arquitetura LIDA.

Relatório das Atividades

 

Atividade 1

Foi realizado o download do tutorial prático do LIDA, e o arquivo zip foi expandido em ~/Documentos/ia006/aula13. Os exercícios introduzem o Framework LIDA através da demonstração de várias de suas funcionalidades principais, os vários modos de personalizá-lo, e o uso de sua interface gráfica. Os exercícios estão divididos em dois projetos chamados de BasicAgent e ALifeAgent, descritos no arquivo LIDA-Tutorial-Exercises.pdf.

Atividade 2 - Tutorial Project I

O primeiro projeto envolve um agente simples (BasicAgent) no ambiente "Button". Esse ambiente mostra, aleatoriamente, um quadrado vermelho, um círculo azul ou apenas um fundo branco. Ele também possui dois botões: "button 1", que deve ser pressionado "pelo agente" quando o quadrado vermelho aparecer, e o "button2 ", que deve ser pressionado quando o círculo azul aparecer. Os botões que aparecem na interface gráfica são apenas visualizações e não causam nenhum efeito se pressionados.

Esse projeto foi inspirado em agentes desenvolvidos com o propósito de reproduzir os dados humanos de experimentos com tempo de reação; entretanto, ele foi escolhido para o tutorial pela sua simplicidade. Os processos de percepção udados nesse projeto foram simplificados por razões pedagógicas, não representando a implementação completa dos processos de percepção do modelo LIDA atual.

Basic Agent Exercise 0

Objetivo: Explorar um agente básico funcional

Tarefa 1: Explorar a estrutura do projeto no Netbeans

A Fig. BA0.1 mostra a estrutura do projeto.

Fig. BA0.1 – Estrutura do projeto

 

Descrição das classes
myagent.RunExecuta a aplicação
myagent.modules.ButtonEnvironmentImplementação do ambiente "Button"
myagent.modules.ButtonSensoryMemoryImplementação da memória sensorial do agente
myagent.featuredetectors.ColorDetectorDetetor do atributo Color
myagent.featuredetectors.ShapeDetectorDetetor do atributo Shape

 

Fig. BA0.2 – Arquivos de configuração

 

Descrição dos arquivos de configuração
lidaConfig.propertiesArquivo de configiuração principal que serve como um diretório para outros arquivos de configuração necessários para construir a aplicação de um agente
basicAgent.xmlArquivo de declaração do agente. Define a arquitetura do agente incluindo os módulos e processos que a aplicação do agente irá usar.
factoryData.xmlDefinição dos elementos que podem ser obtidos da ElementFactory. Esse arquivo define diversos tipos de Node, Link, Strategy e Task. Esses tipos de elementos são referenciados por nome, p. ex., "defaultDecay", no arquivo de declaração do agente. (Esses mesmos nomes também são usados por diversas classes do Framework para obter novos elementos.)
guiPanels.propertiesArquivo de configuração para os painéis (GUIPanels) usados pela interface gráfica (GUI) do Framework. Esses painéis podem ser adicionados, removidos ou personalizados usando esse arquivo.

 

Nota: Nenhum desses nomes de arquivos é obrigatório. O nome padrão para o arquivo de configuração principal é lidaConfig.properties, no entanto, qualquer nome pode ser usado desde que apareça como o primeiro argumento na linha de comando da classe AgentStarter. Os nomes dos demais arquivos são definidos no arquivo lidaConfig.properties.

 

Basic Agent Exercise 1

Objetivos:
- Familiarizar-se com a interface gráfica do Framework
- Entender a barra de ferramentas e suas funcionalidades incluindo start/pause, ticks, step mode e tick duration
- Familizarizar-se com o ambiente "Button"
- Aprender sobre os painéis da interface gráfica Logging e ConfigurationFiles
 

Tarefa 1:

As Fig. BA1.1, BA1.2 e BA1.3 mostram a GUI para a aplicação antes do início da execução, durante a execução (após alguns ticks) e com a execução pausada. Os controles da execução estão na segunda linha da GUI, de cima para baixo, logo abaixo das opções de Menu (File, Panels e Help).

Fig. BA1.1 – Interface gráfica do Framework (GUI) para a aplicação

 

Fig. BA1.2 – GUI após alguns ticks de execução

 

Fig. BA1.3 – GUI com a execução em pausa

 

Tarefa 2:

O botão "Step mode" muda a aplicação para executar por uma quantidade de ticks especificada no campo ao seu lado (Fig. BA1.4). O botão "Run ticks" dispara a execução que irá parar após o número de ticks especificado (Fig. BA1.5).

Fig. BA1.4 – Botão "Step Mode"

 

Fig. BA1.5 – Botão "Run ticks"

 

Tarefa 3:

A duração de um tick também pode ser controlada através da GUI (Fig. BA1.6).

Fig. BA1.6 – Controle "Tick duration (ms)"

 

Tarefa 4:

A abrangência e a granularidade do log também podem ser controladas pela GUI (Fig. BA1.7). 

Fig. BA1.7 – Controles de log

 

Tarefa 5:

A Fig. BA1.8 mostra a aba "Configuration Files" na GUI que lista os arquivos de configuração em uso pela aplicação.

Fig. BA1.8 – 

 

 

Basic Agent Exercise 2

Objetivos:
- Familiarizar-se com a funcionalidade do "feature detector"
- Familiarizar-se com a funcionalidade do "running attention codelet"
- Estudar vários painéis da interface gráfica incluindo "PAM Table", "Perceptual Buffer" e "GlabalWorkspace"
- Personalizar a interface gráfica adicionando um painel para visualizar o conteúdo do "Workspace's Current Situational Model"

Fig. BA2.1 – Alteração do arquivo de declaração do agente

Tarefa 1:

A aba "PAM Table" mostra o que o agente percebe como resultado da sua entrada sensorial recente. As Fig. BA2.2 e Fig. BA2.3 mostram, respectivamente, a ativação corrente para os nodes square e red em 1.0 (percebidos; ativados) e 0.0 (não mais percebidos; decaídos).

Fig. BA2.2 – Aba "PAM Table" mostrando os nodes square e red ativados (= 1.0000)

 

Fig. BA2.3 – Aba "PAM Table" mostrando os nodes square e red após decaimento (= 0.0000)

 

Tarefa 2:

As Fig. BA2.4 e BA2.5 mostram a visualização do conteúdo do "Perceptual Buffer", respectivamente com e sem a presença de nodes percebidos pelo agente.

Fig. BA2.4 – Aba "Perceptual Buffer" mostrando os nodes square e red

 

Fig. BA2.5 – Aba "Perceptual Buffer" sem nenhum node

STUDY QUESTION 1.1: What module of the LIDA Model is the Perceptual Buffer in? Where do the nodes in this buffer come from? How do they differ from the nodes in other modules?

O Perceptual Buffer está no módulo Workspace. Os nodes no Perceptual Buffer vem assincronamente dos nodes da Perceptual Associative Memory (PAM) que com ativação acima de um determinado limiar. Os nodes no Perceptual Buffer são basicamente cópias dos nodes na PAM, representando os mesmo dados; são Activatible mas não Learnable, possuindo ativação corrente mas não de nível base; e podem possuir estratégias de ativação e decaimento, e diferentes padrões de conexão, do que os nodes em outros módulos.

Tarefa 3:

A aba "Global Workspace" (Fig. BA 2.6) mostra as coalizões correntes na Global Workspace, e seus atributos (na metade superior), e um histórico das coalizões vencedoras e seus dados, com as mais recentes no topo (na metade inferior)

Fig. BA2.6 – Aba "Global Workspace"

STUDY QUESTION 1.2: Where do the coalitions in the Global Workspace come from? Where do they go? Think about how the answer to these questions depends on whether we are discussing the LIDA Model or a specific agent implemented using the Framework.

As coalizões vêm do Workspace. No Modelo, uma coalizão vencedora é escolhida para a difusão para a maioria dos outros módulos. Em uma implementação específica de um agente usando o Framework, a difusão só vai para os módulos que implementam BroadcastListener e se registraram como listeners para o módulo GlobalWorkspace do agente.

Tarefa 4:

Novos painéis (abas) podem ser adicionados a GUI através do seu arquivo de configuração, guiPanels.properties. As Fig. BA2.7 e BA2.8 mostram, respectivamente a inclusão de um novo painel para o Current Situational Model (CSM), no arquivo guiPanels.properties, e sua correspondente visalização na GUI. A Fig. BA2.9 mostra a representação do node square no novo painel CSM.

Fig. BA2.7 – Inclusão de uma nova aba na GUI através do seu arquivo de configuração guiPanels.properties

 

Fig. BA2.8 – A nova aba CSM

 

Fig. BA2.9 – Node square representado na aba CSM

STUDY QUESTION 1.3: How are the contents of the Current Situational Model related to the contents of the Perceptual Buffer? to the contents of PAM? Think about how the answer to these questions depends on whether we are discussing the LIDA Model, or a specific agent implemented in the Framework.

No Modelo, o CSM deve conter a ideia do agente sobre o que está acontecendo atualmente nos ambientes externos ou internos, e será construída por Structure Building Codelets, principalmente a partir de entrada da PAM e da memória declarativa. Em uma implementação específica usando o Framework, o conteúdo do CSM vai depender das especificações da declaração do agente e outros arquivos de configuração. No exercício basicAgent, não existem módulos de memória declarativa, e todos os conteúdos do CSM vêm no Perceptual Buffer através da PAM.

Basic Agent Exercise 3

Objetivos:
- Modificar o arquivo de declaração do agente para aumentar suas funcionalidades
- Adicionar uma "module declaration" ao arquivo xml do agente
- Adicionar uma "listener declaration" ao arquivo xml do agente
- Adicionar uma "feature detector declaration" ao arquivo xml do agente
- Adicionar uma "attention codelet declaration" ao arquivo xml do agente
- Explorar o arquivo xml do agente

Fig. BA3.1 – Alteração do arquivo de declaração do agente

 

Fig. BA3.2 – Diagrama parcial da arquitetura do agente. Os elementos pontilhados serão adicionados durante o exercício

 

Tarefa 1:

Fig. BA3.3 – O arquivo de declaração do agente mostrando alguns pontos onde faltam elementos

 

Tarefa 2:

A Fig. BA3.4 mostra a declaração para o módulo Environment adicionado ao arquivo de declaração do agente, basicAgent_ex3.xml. Os nodes square e red recebem ativação (Fig. BA3.5) nas não os nodes circle e blue (Fig. BA3.6). Isso se deve ao fato de que não há detetores de atributo (feature detectors) para esses últimos. 

Fig. BA3.4 – Declaração para o módulo Environment adicionada ao arquivo basicAgent_ex3.xml

 

Fig. BA3.5 – GUI mostrando ativação para os nodes square e red

 

Fig. BA3.6 –  GUI mostrando que não há ativação para os nodes circle e blue

 

Tarefa 3:

A Fig. BA3.7 mostra a adição de um PAMListener ao agente. Isso permite que nodes percebidos pelo agente passem para o Workspace e, consequentemente apareçam no Perceptual Buffer. Isso ocorre para os nodes square e red (Fig. BA3.8) mas não para os nodes circle e blue (Fig. BA3.9).

Fig. BA3.7 – Adição de um PAMListener ao agente

 

Fig. BA3.8 – Nodes square e red presentes no Perceptual Buffer

 

Fig. BA3.9 – Nodes circle e blue não aparecem no Perceptual Buffer

 

Tarefas 4 e 5:

Para que nodes circle e blue sejam apareçam no Perceptual Buffer é necessário adicionar feature detectors específicos ao agente (Fig. BA3.10). A Fig. BA3.11 mostra o resultado dessa adição.

Fig. BA3.10 – Adição de feature detectors para circle e blue ao agente

 

Fig. BA3.11 – Nodes circle e blue presentes no Perceptual Buffer

 

Tarefa 6:

Para que o agente pressione o Button 2 quando perceber nodes circle e blue é necessário adicionar um codelet de atenção específico, para que esses  sejam adicionados ao Global Workspace, na forma de coalizões. A Fig. BA3.12 mostra as declarações dos codelets e a Fig. BA3.13 mostra que o agente passa a pressionar o Button 2.

Fig. BA3.12 – Declarações dos codelets de atenção para nodes circle e blue

 

Fig. BA3.13 – O agente passa a pressionar o Button 2 quando percebe um círculo azul

 

Tarefa opcional:

A Fig. BA3.14 mostra o código para a classe ColorFeatureDetector.

Fig. BA3.14 – 

 

Advanced Exercise 1

O Framework LIDA pode ser executado sem a GUI. Isso é controlado pela propriedade lida.gui.enable no arquivo lidaConfig.properties. Se o valor dessa propriedade for false executará sem a GUI. Da mesma forma, a propriedade lida.logging.configuration, no mesmo arquivo, especifica o arquivo de configuração para o recurso de logging, sendo o valor padrão igual a  configs/logging.properties. O Framework LIDA usa o mecanismo de logging padrão do Java (java.util.logging).

Advanced Exercise 2

A alteração dos parâmetros ticksPerRun e refractoryPeriod na declaração do RedSquareCodelet (tag <initialtasks>Attention Module; arquivo basicAgent.xml), de 5 para 50 e de 30 para 300, respectivamente, reduz o número de coalizões no Global Workspace quando um quadrado vermelho é percebido.

Advanced Exercise 3

Para que o agente passe a perceber a ausência de objetos no ambiente (tela em branco) e fazer com que responda a essa situação liberando os botões, as seguintes alterações foram realizadas:

  • Criar um novo feature detector, implementado pela classe EmptyFeatureDetector (baseada na classe ShapeFeatureDetector)
  • Adicionar esse novo feature detector no arquivo factoryData.xml, como outra tarefa na seção <tasks>
  • Adicionar um novo node, empty, na declaração do módulo PerceptualAssociativeMemory (em basicAgent.xml)
  • Definir uma tarefa para um codelet de atenção com um parâmetro para o node empty (em basicAgent.xml)
  • Criar a declaração de um novo esquema em ProceduralMemory, cuja ação é action.releasePress (em basicAgent.xml)
  • Descomentar a declaração para o terceiro algoritmo de associação (smm.3) na declaração do módulo SensoryMotorMemory (em basicAgent.xml)

A Fig. BAA3.1 mostra os códigos para cada uma dessas alterações, na mesma ordem, de cima para baixo.

Fig. BAA3.1 – Alteração para reagir a ambiente vazio

A Fig. BAA3.2 mostra o resultado da execução com o agente passando a executar a ação de liberação dos botões quando percebe o ambiente vazio (notar a mensagem "Button released" no log e o node empty com ativação próxima de 1.0 na PAM Table).

Fig. BAA3.2 – Agente reagindo a percepção de ambiente vazio

 

Atividade 3 - Tutorial Project II

O segundo projeto envolve uma agente, "nosso herói destemido", no ambiente "Selva de Hamburgueres". Esse é um ambiente em que o mundo é uma matriz, onde cada local é representado por uma célula discreta. Em cada célula podem existir zero ou mais objetos, sendo que as células possuem uma capacidade máxima que não pode ser excedida. Nessa implementação em particular o ambiente pode conter um agente, macacos malvados, árvores, pedras e hamburgueres deliciosos. Os macacos malvados se movem aleatoriamente e tentarão ferir o agente se eles estiverem na mesma célula. As pedras ocupam um célula inteira impedindo a presença de outros objetos. O agente só percebe os objetos que estiverem na mesma célula ou na célula adjacente à sua frente, além de seu próprio estado de sáude. O agente pode executar as seguintes ações: mover-se para a célula adjacente à frente, virar-se para a esquerda, virar-se para a direita, virar-se para trás, comer, e fugir (virar-se e mover-se para a célula adjacente à frente). A saúde do agente diminui de um pequeno valor a cada tick e, também, quando atacado por um macaco, se tentar se mover para uma célula contendo uma pedra, ou se tentar se mover para fora do mundo. Comer um humburgur aumenta substancialmente a saúde do agente. Essas características são resumidas no quadro a seguir.

Características do agente e do ambiente
Atributos do ambiente

Agente, macacos malvados, árvores, pedras e hamburgures

Matriz 10 x 10 (células podem conter zero ou mais objetos)

Macacos de movem aleatoriamente exceto para células ocupadas por árvores ou pedras

O agente não pode se mover para células com pedras

PercepçãoObjetos mesma célula que ocupa e na célula à frente, a própria saúde
AçõesMover-se para a frente, virar-se para a esquerda, virar-se para a direita, virar-se para trás, comer, fugir
Saúde do agente

Aumenta, se come um hamburguer

Diminui, se atacado por um macaco, move-se contra uma pedra, move-se para fora dos limites, com o tempo

 

Ícones dos objetos no ambiente
Agente
Macaco
Comida
Árvore
Pedra
Múltiplos objetos

 

ALife Agent Exercise 1

Objetivo: Explorar um agente Alife funcional

Tarefa 1:

A Fig. AA1.1 mostra a interface gráfica (GUI) para o Projeto II, ALife Agent. A célula 3.1, ocupada, foi selecionada e seu conteúdo pode ser visto no quadro superior a direita do painel AlifeEnvironment; no caso, um hamburguer e uma árvore. Como o objeto food20 (o hamburguer) foi selecionado nesse quadro, seus atributos são mostrados no quadro inferior.

Fig. AA1.1 – GUI para o Projeto II, ALife Agent

STUDY QUESTION 2.1: Compare the GUI of the alifeAgent to that of the basicAgent. What are the differences, and why are they different?

Os dois ambientes são diferentes por isso o elemento correspondente na GUI, no canto superior esquerdo, também é diferente em cada caso. Os demais elementos são iguais, embora com informações diferentes. Como já foi visto no Tutorial Project I, os elementos da GUI são configuráveis e as definições estão no arquivo guiPanels.properties.

Tarefa 2:

Ainda na Fig. AA1.1, no painel no canto superior direito podem ser vistos os nodes e links, e seus parâmetros. Na Fig. AA2.1, é mostrada a aba PAM Graph que provê uma visualização gráfica dos mesmo nodes e links. O botão relax "espalha" os elementos e o recurso de zoom permite uma melhor distinção dos elementos, embora se perca a visão geral.

Fig. AA1.2 – Detalhe da aba PAM Graph

Tarefa 3:

Executando a simulação, observa-se que o agente permanece na mesma célula (mudando apenas sua orientação), movendo-se apenas para fugir dos macacos ou, quando sua saúde estiver baixa, para explorar o mundo em busca de comida. Encontrando um hamburguer ele o come. A Fig. AA1.3 mostra as abas Task Queue (superior), onde se algumas das tarefas agendadas para execução em vários ticks, e Running Tasks (inferior), onde se vê as tarefas em execução e seus dados.

Fig. AA1.3 – Detalhes das abas Task Queue e Running Tasks, durante a execução de uma simulação

 

ALIfe Agent Exercise 2

Objetivos:
- Criar uma classe do tipo feature detector
- Adicionar uma definição de tarefa ao arquivo factoryData.xml
- Adicionar uma declaração de tarefa ao arquivo alifeAgent_ex2.xml
- Adicionar uma nova declaração de tarefa ao arquivo alifeAgent_ex2.xml, com base em uma existente

Tarefa 0:

Executando a simulação, com a quantidade de comida alterada para zero, nota-se que o agente para de se mover quando sua saúde atinge valor inferior a 0.33.

Tarefa 1:

Uma nova classe, BadHealthDetector foi adicionada ao pacote alifeagent.featuredetectors para que o agente possa detetar quando a sua saúde estiver baixa. O código pode ser visto na Fig. AA2.1.

Fig. AA2.1 – Código BadHealthDetector

Tarefa 2:

A definição para a tarefa BadHealthDetector foi adicionada ao arquivo factoryData.xml e o código é mostrado na Fig. AA2.2.

Fig. AA2.2 – Definição da tarefa BadHealthDetector

Tarefa 3:

A declaração da tarefa BadHealthDetector foi adicionada ao arquivo alifeAgent_ex2.xml e o código é mostrado na Fig. AA2.3.

Fig. AA2.2 – Declaração da tarefa BadHealthDetector

Tarefa 4:

A declaração da tarefa predatorFrontdetector foi adicionada ao arquivo alifeAgent_ex2.xml, com base na tarefa predatorOriginDetector, e o código é mostrado na Fig. AA2.4.

Executando a simulação, nota-se que o agente passa se mover mesmo quando a sua saúde está baixa (< 0.33) e a fugir quando um macaco está na célula adjacente à sua frente (antes só fugia quando um macaco estivesse na mesma célula que ele).

Fig. AA2.3 – Declaração da tarefa predatorFrontDetector

 

STUDY QUESTION 2.2: Why does the agent’s behavior change in this way after the new feature detectors were added?

Embora os esquemas para responder às situações em que a saúde é baixa e há predadores muito próximos já estivessem presentes na Memória Procedural, o agente ainda não possuia a capacidade de percebê-las. Uma vez que essas capacidades foram acrescentadas, o agente passou a responder adequadamente.

ALIfe Agent Exercise 3

Objetivo:
- Criar e modificar codelets de atenção
- Aprender sobre os efeitos da alteração de codelets de atenção

Tarefa 0:

Executando a simulação com o arquivo alifeAgent_ex2.xml, e a quantidade de comida alterada para o valor original (= 10), nota-se que o agente deixa de reagir aos predadores (macacos).

STUDY QUESTION 2.3: What are the possible reasons the agent doesn’t flee?

No caso desse exercício o agente não reage porque não possui um codelet de atenção para predadores, não permitindo que essa informação, mesmo percebida, chegue à consciência. Isso também aconteceria se o agente não fosse capaz de perceber um predador (ausência de um feature detector específico) ou não soubesse reagir a predadores (ausência de esquema ou comportamento adequados).

Tarefa 1:

Criado o codelet de atenção PredatorAttentionCodelet foi adicionado ao arquivo alifeAgent_ex3.xml e o código é mostrado na Fig. AA3.1.

Fig. AA3.1 – Declaração do PredatorAttentionCodelet

Executando a simulação com o arquivo alifeAgent_ex3.xml, nota-se que o agente passa a criar coalizões com os nodes de predadores. A Fig. AA3.2 mostra algumas dessas coalizões na aba Global Workspace (Fig. AA3.2).

Fig. AA3.2 – Colizões com predadores na aba Global Workspace

STUDY QUESTION 2.4: How might this affect the agent’s cognition and behavior?

A ideia de predador passando à consciência do agente é que permite sua correspondente reação.

Tarefa 2:

Executando a simulação com o parâmetro initialActivation para o FoodAttentionCodelet alterado de 1.0 para 0.01, o agente deixa de comer a comida que encontra.

STUDY QUESTION 2.5: How does this parameter change affect the agent’s cognition?

Reduzindo o valor do parâmetro initialActivation a percepção do agente para comida diminui. Um valor muito pequeno faz com que o agente ignore a comida.

Tarefa 3:

Executando a simulação com o parâmetro initialActivation para o FoodAttentionCodelet alterado de 1.0 para 0.01, o agente deixa de comer a comida que encontra.

 

ALIfe Agent Exercise 4

Objetivos:
- Modificar esquemas na memória procedural
- Usar um Initializer personalizado para o módulo Perceptual Associative Memory (PAM)
- Obter uma estratégia de decaimento diferente da padrão de ElementFactory

Tarefa 0:

Executando a simulação com o arquivo alifeAgent_ex4.xml, nota-se que o agente só se move se a sua saúde estiver com valor abaixo de 0.66 exceto se um macaco se aproximar.

Tarefa 1:

Executando a simulação após alterar a ação especificada no scheme.10b (parâmetro do módulo ProceduralMemory no arquivo alifeAgent_ex4.xml) de action.turnAround para action.moveAgent, nota-se que o agente passa a se mover mesmo que sua saúde seja boa (valor >= 0.66). A Fig. AA4.1 mostra a alteração realizada.

Fig. AA4.1 – Alteração de esquema na memória procedural

Tarefa 2:

O BasicPamInitializerpadrão, cria Nodes e Links na PAM com base nas especificações de dois parâmetros lidos, nodes e links, respectivamente. Essa forma de criação usa estratégias padrão de excitação e decaimento. Para obter elementos com estratégias não padrão deve-se usar Initializers personalizados. Isso foi realizado através de alterações no arquivo alifeAgent_ex4.xml e na classe CustomPamInitializer, mostradas nas Fig. AA4.2 e Fig. AA4.3, respectivamente.

Fig. AA4.2 – Alteração de esquema na memória procedural

 

Fig. AA4.3 – Inclusão de um novo link, entre food e object, em PerceptualAssociativeMemory

Tarefa 3:

Completando a criação de um Initializer personalizado, a classe CustomPamInitializer foi alterada para definir uma estratégia não padrão para o decaimento dos elementos (Fig. AA4.4), no caso, definida como slowDecay no arquivo factoryData.xml. O efeito é que a ativação dos nodes rock e food permanece alta (= 1.0) apenas por um breve período de tempo, se comparado com a maioria dos outros nodes na PAM do agente.

Fig. AA4.4 – Inclusão de uma estratégia de decaimento não padrão

 

Advanced Exercise 1

Se o agente estiver em uma célula com uma árvore, estará a salvo dos macacos. Para que o agente reaja a percepção de uma árvore é necessário realizar as seguintes alterações no arquivo alifeAgent_ex4.xml:

  • Adicionar a declaração de um novo codelet de atenção que "preste atenção" ao node "tree"; e
  • Adicionar um novo esquema na memória procedural com um contexto do node treeFont e a ação action.moveAgent.

A Fig. AAA1.1, superior e inferior, respectivamente, mostra os códigos para essas alterações.

Fig. AAA1.1 – Alterações para incluir um codelet de atenção para árvores

 

Advanced Exercise 2

Com base no módulo de seleção de ação fornecido no Framework, edu.memphis.ccrg.lida.actionselection.BasicActionSelection, bastante simples, deve ser criada uma nova classe que estenda FrameworkModuleImpl e implemente as interfaces ActionSelection e BroadcastListener. Essa nova classe deve implementar um algoritmo de seleção de ação, sendo sugerido que requeira que o Behavior's context esteja presente no broadcast corrente antes que a ação possa ser selecionada.

As modificações no arquivo XML do agente, de forma a usar esse novo módulo (por exemplo, CustomActionSelection), são mostradas na Fig. AAA2.1.

Fig. AAA2.1 – Alterações para uso de uma nova classe para seleção de ação

De fato, na versão 1.2b do Framework é fornecida a classe edu.memphis.ccrg.lida.actionselection.behaviornetwork.BehaviorNetwork, cuja implementação é baseada nas ideias da Behavior Network proposta por Pattie Maes. O uso dessa implementação é recomendado como preferível em relação a BasicActionSelection.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer