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
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.