Atividade 2
Basic Agent Exercise 0:
A primeira parte do exercício é abrir o projeto e identificar os arquivos e classes mais importantes

Basic Agent Exercise 1:
Para iniciar a simulação é necessário fazer click no botão Start/Pause. É possível rodar um número determinado de ticks ativando o botão "Step Mode" e estabelecendo o número de tick no editbox. Também é possível modificar a "velocidade de simulação" com o parâmetro Tick duration.
Na parte inferior estão umas abas com a informação do Logging e do arquivo de configuração.
A primeira coluna é o número da entrada de log; a segunda coluna é o tick ao qual foi feito o log; a seguinte coluna é o nível de severidade; depois o nome do logger e finalmente a mensagem.

Arquivos de configuração:

Basic Agent Exercise 2:
No painel PAM Table é possível verificar que os valores de ativação no Node red e do Node square são 1 quando é apresentado um quadrado vermelho. Na figura de embaixo, quado o quadrado vermelho é trocado por um circulo azul, os valores dos Nós no PAM Table decaem até chegar a zero.



O seguinte código apresenta a forma de adicionar um painel:

Resultado:

Basic Agent Exercise 3:
Do diagrama de embaixo os elementos que estão com o traço pontilhado são os elementos do Framework que serão adicionados nesta parte do Tutorial

Foi feita a inclusão do módulo Enviroment

No momento o agente não percebe a presença do circulo azul, isto é porque ainda não foram inclusos os detetores de características (feature detectors), ainda mais, mesmo que o quadro vermelho é reconhecido, ele ainda não transfere a informação ao Perceptual Buffer. Isso acontece porque a conexão entre o PAM e o Workspace ainda não foi definida no arquivo de declaração do agente. Essa conexão corresponde à seta "Move Percept" no modelo LIDA

A seguir a inclusão do PAMListener

Após adicionar o PamListener a informação do PAM passa para o Perceptual Buffer

Para detetar o circulo azul é necessário agregar feature detectors isto é feito adicionando a task blueDetector e circleDetector no modulo PerceptualAssociativeMemory
/pasted_image014.png)

O resultado é:

A ideia do programa é que o agente responda à aparição do quadrado vermelho ou ao circulo azul assim: quado o quadrado vermelho aparecer então selecionar o botão 1; se o circulo azul aparecer, selecionar o botão 2. Neste momento ele não cumpre a segunda ação já que não possui "attention codelet" no GlobalWorkspace.
Para realizar a ação do agente quando é apresentado para ele o circulo azul é adicionada uma tarefa de execução chamada blueCircleCodelet

Programa terminado: O agente seleciona o botão 1 quando aparece o quadrado vermelho e o botão 2 quando aparece o circulo azul


Advanced Exercise 1
É possível correr o agente sem usar o GUI, só tem que colocar o valor de lida.gui.enable em false

Também é possível modificar a forma como é apresentada a informação do Logging, ela pode ser apresentada na consola ou num arquivo. A configuração do Logging é feita através do arquivo logging.properties.
Advanced Exercise 2
É possível modificar modificar o número de ticksPerRun de uma tarefa para cambiar a forma como ela se executa. O valor de ticksPerRun pode ser localizado na definição do codelet no arquivo de configuração do Agente.
Advanced Exercise 3
Nesta parte do tutorial é realizada a parte onde o agente detecta o estado de "vazio" e realiza a ação de "releasePress". Para isso é criado uma classe de feature detector e adiciona-la num codelet.
1) É criado um feature detector para o estado empty (quando o quadrado seja branco). O feature detector é uma classe chamada EmptyFeatureDetector:

2) É adicionado o novo feature detector como nova tarefa (task) dentro do arquivo factoryData.xml:

3) Adicionar o nó empty na lista "nodes" do modulo PerceptualAssociativeMemory:

4) No arquivo basicAgent.xml definir o codelet como BasicAttentionCodelet com parâmetro empty

5) Criação do esquema no ProceduralMemory:

6) Associação do algoritmo de ação no SensoryMotorMemory:

Na seguinte imagem pode-se verificar que o agente detecta o estado empty no PAM Table.

Na seguinte imagem pode-se verificar que o estado empty é transmitido ao Perceptual Buffer

Na seguinte imagem pode-se verificar que a ação é tomada executada:

Na seguinte imagem pode-se verificar que a ação de releaseButton é executada apos o botão 2 ser selecionado, completando a tarefa proposta.
