You are here

Atividade 3

Atividade 3 - Tutorial Project II



Neste tutorial será usado um mundo virtual com o agente. O agente é um herói e o ambiente é uma selva. O ambiente é discreto e cada célula pode ter objetos ou não. Os objetos dentro do ambiente podem ser:

- Agente
- Macacos malvados
- Árvores
- Pedras
- Lanches (hambúrguer)

Os macacos podem prejudicar o agente se estão na mesma posição. As pedras ocupam todo um quadrado, assim nenhum outro objeto pode estar na posição de uma pedra. O agente só pode ver os objetos no quadrado atual e no quadrado na frente dele.

As possíveis ações do agente são:

Mover uma posição ao frente
Girar à esquerda e à direita
Comer
Flee (girar e mover na frente)

A saúde do agente vai diminuindo a cada iteração ou se um macaco está atacando ele. Comer hambúrguer aumenta o nível de energia.

Figura 1

  • Agent Exercise 1


Execução do ambiente original.


Figura 2


PAM Graph:


Figura 3


Lista de tarefas (task) que estão sendo programadas para ser executadas:


Figura 4


Lista de tarefas (task) que estão sendo executadas atualmente e sua informação:



Figura 5


  • ALIfe Agent Exercise 2


A execução inicial do programa é apresentada na imagem a seguir. Aqui o agente ainda não sabe quando tem pouca energia, pois ainda não tem um detetor de feature para quando a energia for menor do que 0.66


Figura 6


A primeira tarefa é adicionar o feature detector para quando o agente estiver com baixa energia. Isso pode ser feito adicionando uma classe chamada BadHealthDetector


Figura 7


O segundo passo é, no arquivo factoryData.xml, procurar a secção task e adicionar uma nova tarefa chamada BadHealthDetector associada à classe feita no passo anterior. Assim é criado um tipo de tarefa (task) chamada BadHealthDetector


Figura 8


O seguinte passo é a criação de uma tarefa no módulo PerceptualAssociativeMemory do agente chamada BadHealthDetector:

Figura 9


Finalmente é necessária a inclusão de um detetor para quando apareça um macaco na frente:


Figura 10


  • ALIfe Agent Exercise 3


Na primeira parte vai-se criar uma tarefa chamada predatorAttentionCodelet dentro do arquivo de configuração do agente:


Figura 11


A seguir é modificado o parâmetro refractoryPeriod da tarefa GoodHealthAttentionCodelet para ver o efeito de modificar esta propriedade no Global Workspace. Enquanto menor seja esse valor, maior é a frequência em que ele aparece na Global Workspace:


Figura 12


  • ALIfe Agent Exercise 4


Na primeira parte é modificada a operação dentro do modulo ProceduralMemory para lograr que o agente se movimente mesmo ele tenha boa energia. A mudança é feita na propriedade chamada scheme.10b dentro do arquivo de configuração do agente:



Figura 13


A seguir se modificara a forma como são inicializadas alguns nós e links, para isso é necessário criar um inicializador próprio. Primeiro se especificará o novo inicializador dentro do arquivo de configuração do agente, no modulo PerceptualAssociativeMemory na tag <initializerclass>



Figura 14


Depois são adicionados as pedras e as comidas como nós filhos do mesmo pai "object"
















Figura 15


No seguinte passo será modificado a estratégia de decaimento do nó "object". No arquivo factoryData.xml estão definidas todas as estratégias. Uma de elas é a slowDecay que tem um parâmetro muito pequeno. Será modificado o código da classe CustomPamInitializer para utilizar está estratégia.


Figura 16


Para adicionar a nova estratégia ao nó "object" são adicionadas as seguintes linhas de código à classe CustomPamInitializer


Figura 17


  • Advanced Exercise 1


Nesta tarefa a ideia é adicionar o código necessário para que o agente atue da seguinte maneira:

Se uma árvore está na frente então se mover na frente para ficar no mesmo quadro que a árvore.

Isto é porque quando o agente está na mesma posição de uma árvore os macacos não podem ataca-lo.

O primeiro passo é definir um novo attention codelet dentro do arquivo de configuração do agente:

Figura 18


O codelet é chamado de TreeAtentionCodelet e como node é utilizado o nó tree.

Assim cada vez que o agente detectar o nó tree é chamado o codelet, a seguir é apresentada a figura do Global Workspace quando o agente deteta uma árvore na frente:

Figura 19


O seguinte passo é adicionar a ação que será realizada quando o agente detecta a árvore. Ele deveria avançar na frente para ficar na mesma posição da árvore e assim ficar a salvo dos macacos. As ações são definidas no módulo de Procedural Memory:


Figura 20


O resultado é o seguinte: se o agente vê uma árvore na frente, ele avança e ocupa o mesmo lugar da árvore.


Figura 21


  • Advanced Exercise 2

A ideia deste exercício é modificar o algoritmo de seleção de ações. Atualmente o agente está utilizando a classe padrão de LIDA para seleção de ações chamada BasicActionSelection. O agente chama essa classe desde o módulo ActionSelection:



Figura 22

A modificação desta classe requer a criação de uma nova classe no nosso projeto que execute um novo algoritmo de seleção de ações que pode levar em conta muitas coisas do mundo.

A classe está definida no Framework do LIDA.

Figura 23

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer