You are here

Relatório Aula 15 - LIDA

Atividade 1 - Download e instalação do LIDA

    Foi realizado o download do tutorial LIDA. O arquivo enviado por e-mail continha a versão mais atualizada da arquitetura e dos tutoriais, porém não continha oBasic Agent, cuja execução era exigida na tarefa em questão. Assim, foram utilizados os arquivos disponibilizados no site da disciplina.

Atividade 2 - Tutorial Project I

    Foi realizado o setup do projeto como indicado no tutorial.

    Basic Agent Exercise 0

    Neste exercício, o agente básico foi carregado e os pacotes do projeto foram observados. Foram descritas as seguintes classes Java:
        myagent.Run - Executa o aplicativo.
        myagent.modules.ButtonEnvironment - Implementa o 'Ambiente de Botões'
        myagent.modules.ButtonSensoryMemory - Implementação da Memória Sensorial do Agente
        myagent.featuredetectors.ColorDetector - Detector de Característica (Cor)
        myagent.featuredetectors.ShapeDetector - Detector de Característica (Forma)

    Também foram descritos os seguintes arquivos XML:
        lidaConfig.properties - Arquivo de configuração principal que serve como um diretório para os outros arquivos de configuração necessários para a construção de um aplicativo agente.
        basicAgent.xml - Arquivo de declaração de agente. Este arquivo define a arquitetura do agente, incluindo os módulos e processos que o aplicativo agente irá utilizar.
        factoryData.xml - Definição dos elementos que podem ser obtidos do ElementFactory. Este arquivo define diversos tipos de Nós, Links, Estrategias e Tarefas. Estes tipos são referenciados por nome (por exemplo “defaultDecay”) no arquivo de declaração de agente. Estes mesmos nomes são também utilizados por diversas classes de framework para a obtençao de novos elementos.
        guiPanels.properties - Arquivo de configuração para a interface de painéis GuiPanels, utilizado pelo GUI do framework. Estes painéis podem ser adicionados, removidos ou modificados através deste arquivo.

    Basic Agent Exercise 1

    Neste exercício, o código do agente básico foi executado pela primeira vez e os seus menus e opções foram observados.

   
    Task 1:
        Inicialmente, foi apresentado o botão Start/Pause, para alternar o funcionamento da simulação. O status de funcionamento aparece ao lado do direito do botão. À direita do status, está o campo de tick atual, que incrementa conforme a simulação avança.

    Task 2:
        Aqui, é apresentado o botão Step Mode. Este botão alterna o 'modo de passo', que permite a execução da simulação somente durante um número especificado de ticks, a cada vez em que se aperta o botão 'Run Ticks'. No tutorial, foram usados 100 ticks.

    Task 3:
        Aqui, é apresentado o campo Tick Duration, que altera o tempo de duraçao de cada tick, afetando a velocidade geral da simulação.

    Task 4:
        Aqui, é apresentado o GuiPanel "Logging". Cada linha deste painel é uma entrada do logger. A primeira coluna corresponde ao numero de entrada do log, a segunda é a contagem de ticks no momento da entrada do log, a terceira é o nível de severidade, a quarta é o nome do logger e a quinta é a mensagem.


        Acima deste campo existe uma drop down list chamada Logger, que controla o logger cujos logs são exibidos no painel. A segunda drop down list chama-se Level e controla o nível dos logs que são criados.

    Task 5:
        Aqui, é apresentado o GuiPanel "ConfigurationFiles", que mostra os arquivos de configuração sendo utilizados pelo aplicativo (conteúdo do arquivo LidaConfig.propoerties).

    Basic Agent Exercise 2

        Para este exercicio, foi configurado o arquivo BasicAgent_ex2.xml, no campo lida.agentdata do arquivo lidaConfig.properties. Foi observado inicialmente aqui que o agente não pressiona o botão 2.


    Task 1:
        Aqui, é apresentado o PAM Table. Esta GuiTable mostra, na forma de uma lista, o que o agente percebe como resultado do seu input sensorial. Conforme a situação do ambiente virtual se altera, se alteram tambem os valores de ativação dos nós (cada nó relacionado a uma determinada característica).

    Task 2:
        Aqui, é apresentado o PerceptualBuffer. Esta GuiTable mostra, na forma de nós, o que o agente percebe em seu input sensorial. Detectores de características que não possuem um valor de ativação alto o suficiente não aparecem na PAM Graph.

    Task 3:
        Aqui, é apresentado o GlobalWorkspace. Esta GuiTable é dividida em duas partes. A parte de cima exibe as Coalitions que estão no GlobalWorkspace e seus atributos. A parte de baixo exibe uma tabela com um histórico das Coalitions vencedoras.


    Task 4:
        Nesta tarefa, é adicionado uma nova GUITable, que exibe o conteudo do CurrentSituationalModel (um submódulo do Workspace).
        Para isto, foi adicionada uma linha ao arquivo ‘guiPanels.properties’, similar a linha que define o perceptualBufferGraph. A linha foi adicionada segundo as instruções do tutorial, gerando uma aba na ultima posição (tabOrder 7), chamada CSM e associada ao parâmetro Workspace.CurrentSituationalModel.

        Ao executar o aplicativo, a nova GUITable exibe nós similares ao PerceptualBuffer.


    Basic Agent Exercise 3


    Task 1:
        Para este exercicio, foi configurado o arquivo BasicAgent_ex3.xml, no campo lida.agentdata do arquivo lidaConfig.properties. Neste agente está, inicialmente, faltando um detector de características e um attention codelet.


    Task 2:
        Por meio do NetBeans, é aberta a tag Submodules, dentro do arquivo BasicAgent_ex3.xml. Nesta parte do arquivo é feita uma nova declaração de módulo, similar a declaração ActionSelection, mas com parâmetros diferentes. Conforme as instruções do tutorial, o nome deste novo módulo é Environment, sua classe é myagent.modules.ButtonEnvironment, seus parâmetros são Param1: name=”height” type=”int”, tag value = 10 e Param1: name=”width” type=”int”, tag value = 10, seu taskspawner é defaultTS.


    Task 3:

        Nesta tarefa, é criado um novo listener dentro do arquivo Agent.xml. Seguindo o tutorial, este novo listener terá os seguintes valores de tag: listenertype = edu.memphis.ccrg.lida.pam.PamListener, modulename = PerceptualAssociativeMemory, listenername = Workspace.


        Agora, ao executar o aplicativo, o PerceptualBuffer exibe os nós 'square' e 'red' quando o agente percebe um quadrado vermelho no ambiente. Abaixo se encontram duas figuras, contendo respectivamente o antes e o depois da alteração no agent.xml.

    Task 4:
        Nesta tarefa, é criado um detector de cor azul em PAM. O detector é criado aos moldes do detector de cor vermelha, alterando-se os parâmetros de cor e de nome.


    Task 5:
        Nesta tarefa, é criado um detector de formatos circulares em PAM. O detector é criado aos moldes do detector de forma quadrada, alterando-se os parâmetros de area ocupada pela figura (31 para circulos, 40 para quadrados) e de nome.

        Agora, ao executar o aplicativo novamente, pode-se notar no PerceptualBuffer que aparecem os nós relacionados ao circulo e à cor azul.

    Task 6:
        Nesta tarefa, é criada uma declaração similar ao RedSquareCodelet, no AttentionModule do arquivo BasicAgent_ex3. Esta declaração é um attention codelet responsável por adicionar, como coalitions ao GlobalWorkspace, os nós relacionados à cor azul e à forma circular. Após configurados os valores de tags e parâmetros da declaração segundo é descrito no tutorial, o resultado é um agente capaz de detectar os circulos azuis e apertar o botão 2 em resposta a isto.

 


    Advanced Exercise 1

        Aqui, é apresentada a opção de desabilitar a interface GUI, por meio do arquivo lidaConfig.properties.


    Advanced Exercise 2

        Nesta tarefa, são apresentados os efeitos de se alterar o parâmetro ticksPerRun.
        Inicialmente observa-se uma grande quantidade de Coalitions no painel GlobalWorkspace quando quadrados vermelhos aparecem no ambiente.

        Realizadas as modificações sugeridas pelo tutorial (tickPerRun = 50 e refractoryPeriod = 300), o número de Coalitions diminui no painel.

 


    Advanced Exercise 3

        Nesta tarefa, é criada uma classe de detecção de tela em branco (sem circulos azuis ou quadrados vermelhos), uma attention codelet e um scheme para a classe de detecção criada.
        A classe de detecção é criada aos moldes do ShapeFeatureDetector, modificada para detectar quando não houver forma nenhuma no ambiente.
        Posteriormente, este detector de característica é adicionado ao factoryData.xml como uma nova task.
        Foi adicionado um nó para 'empty' no módulo PerceptualAssociativeMemory.
        Foi então definida uma tarefa para a attention codelet em basicAgent.xml, contendo um parâmetro para o nó 'empty'.
        Foi criado um novo scheme na ProceduralMemory, com a ação action.releasePress.
        Por fim, foi retirado dos comentários o parametro smm.3 na declaração de módulo SensoryMotorMemory.
        Agora, quando se executa o aplicativo, o agente passa a detectar espaços vazios e, em resposta a isso, executa a ação releasePress.

 

 

 


Atividade 3 - Tutorial Project II

    Foi realizado o setup do projeto como indicado no tutorial. Este projeto envolve um agente que navega em um ambiente do tipo grid world, contendo comida (hamburgueres), árvores (que servem de esconderijo para o agente, já que os macacos não podem entrar nas casas com arvores), pedras (que reduzem a vida do agente, caso ele vá em direção a ela) e macacos (que atacam o agente).
    O tutorial descreve as propriedades do ambiente como sendo um grid 10x10, com cada célula contendo um ou mais objetos, sendo estes objetos o agente, os macacos, as árvores, as pedras e os hamburgueres. Os macacos se movem aleatoriamente e não podem entrar em células com arvores ou pedras. O agente não pode entrar em células com pedras.
    O tutorial também descreve as propriedades do agente. O agente possui a capacidade de sentir o que está na célula em que ele está e o que está na célula a frente dele, bem como o seu nível de saúde. As ações disponíveis para o agente são: mover-se para a frente, virar para a direita, virar para a esquerda, dar uma volta, comer e fugir. A saúde do agente aumenta quando ele come um hamburguer e diminui quando ele é atacado por um macaco, quando ele tenta entrar em uma célula contendo uma pedra, quando ele tenta sair do tabuleiro e quando o tempo passa.

    Agent Exercise 1

    Task 1:
        Aqui é introduzido o GUIPanel do ALifeEnvironment. Ao se clicar em uma célula ocupada, uma janela a direita do ambiente mostrará o conteúdo da célula. Ao se clicar em um objeto na lista (drop down) de objetos, são exibidos os atributos do objeto selecionado.


    Task 2:
        Nesta tarefa, o GUIPanel "PAM Graph" é apresentado, com uma quantidade bem maior de nós e links no grafo do que o apresentado no projeto anterior.

 

    Task 3:
        Nesta tarefa, o aplicativo é finalmente executado e o comportamento do agente é observado. O agente permanece parado até que seus niveis de health abaixem. Quando isto ocorre, ele passa a explorar o ambiente, evitando os macacos e comendo os hamburgueres que ele encontra.

        Aqui são apresentados os paineis "Task Queue", com as tarefas agendadas para execução nos proximos ticks, e "Running Tasks", contendo uma lista com todas as tarefas ativas e seus dados.

    ALIfe Agent Exercise 2

        Foi realizado o setup do projeto conforme indicado no tutorial, alterando-se o parâmetro lida.agentdata para alifeagente_ex2.xml, no arquivo lidaConfig.properties. Também foi alterado o parâmetro QTY de food para zero, no arquivo objects.properties.

 


    Task 0:
        Inicialmente, o aplicativo foi executado e se observou que o agente não se move enquanto seu nivel de health é baixo.


    Task 1:
        Aqui, foi criada uma nova classe Java chamada BadHealthDetector, que é uma extensão da classe BasicDetectionAlgorithm.java e reage a niveis baixos de health. Esta classe foi criada aos moldes do arquivo GoodHealthDetector.java.


    Task 2:
        Aqui é adicionada uma nova definição de tarefa em factoryData.xml, referente ao BadHealthDetector. Esta definição é feita de modo similar à tarefa FairHealthDetector.

 

    Task 3:
        Aqui é adicionada uma tarefa, referente ao BadHealthDetector, no módulo PerceptualAssociativeMemory do arquivo alifeAgent_ex2.xml. Esta entrada é similar à task GoodHealthDetector. A tarefa é criada segundo as instruções do tutorial, com nome e tasktype BadHealthDetector, ticksperrun=3, e um parâmetro de nó do tipo string com o valor badHealth.


    Task 4:
        Nesta tarefa, é adicionado um detector de predador (predatorFrontDetector) ao arquivo agent.xml. Este detector é adicionado às tarefas iniciais do módulo PerceptualAssociativeMemory e é similar ao predatorOriginDetector. As configurações desta tarefa são feitas conforme as instruções do tutorial.

        Ao final destas modificações, o agente é agora capaz detectar níveis baixos de health (e começar a se mover em função disso) e fugir de predadores que estão à frente dele (e não apenas fugir quando os predadores se encontram na mesma célula que ele).

    ALIfe Agent Exercise 3

        Foi realizado o setup do projeto conforme indicado no tutorial, alterando-se o parâmetro lida.agentdata para alifeagente_ex3.xml, no arquivo lidaConfig.properties. Também foi alterado o parâmetro QTY de food de volta para 10, no arquivo objects.properties.

    Task 0:
        Inicialmente, o aplicativo é executado e observa-se que o agente não reage a presença de predadores, nunca executando a ação flee.


    Task 1:
        Aqui é criada a tarefa predatorAttentionCodelet entre as tarefas iniciais do módulo AttentionCodelet. Esta tarefa é similar à entrada RockAttentionCodelet, já presente no código.


    Task 2:
        Nesta tarefa, o parâmetro initialActivation do codelet FoodAttentionCodelet é alterado para 0.01. Isto faz com que o agente ignore os alimentos que ele encontra no caminho, mesmo quando estes estiverem na mesma célula que ele.


    Task 3:
        Nesta tarefa, inicialmente se observa qual a frequência em que aparecem as Coalitions contendo 'goodHealth' no Global Workspace GUIPanel.

        Após isto, altera-se para 10 o parâmetro refractoryPeriod, da declaração GoodHealthAttentionCodelet, dentro do módulo AttentionModule.


        Depois da alteração, observa-se um aumento na frequência das Coalitions contendo 'goodHealth'.


    ALIfe Agent Exercise 4

        Foi realizado o setup do projeto conforme indicado no tutorial, alterando-se o parâmetro lida.agentdata para alifeagente_ex4.xml, no arquivo lidaConfig.properties.

    Task 0:
        Inicialmente, o aplicativo é executado e observa-se que o agente só passa a se mover quando seu nível de health é inferior a 0.66.

    Task 1:
        Nesta tarefa, o schemes responsavel pela ação <if emptyFront, turnAround> foi modificado, trocando-se a ação de turnAround pela ação moveAgent. Como resultado, o agente passa a se mover com muito mais frequencia, mesmo com nível alto de health.


    Task 2:
        Nesta tarefa, primeiro é modificado o valor da tag initializerclass para alifeagent.initializers.CustomPamInitializer, para permitir ao agente adicionar nós e links customizados ao PAM.
        A seguir, é modificado o arquivo java CustomPamInitializer, com a obtenção do 'food node' e a adição de um link no PAM de 'food' para 'object'.

    Task 3:
        Nesta tarefa, é modificada a DecayStrategy definida em factoryData.xml. É adicionado à classe o trecho de código informado pelo tutorial.

    Advanced Exercise 1

        Nesta tarefa, foram implementados os recursos para que o agente reaja às arvores do ambiente, usando-as para se esconder dos macacos. Para isto, foi adicionado um codelet de atençao no agent.xml para atender ao nó 'tree'. Também foi adicionado um novo scheme ao Procedural Memory, com a ação moveAgent e relacionado ao treeFront.

 

       Como resultado, se obteve um agente que tende a se esconder nos blocos que contém arvores, sempre que possível.

Theme by Danetsoft and Danang Probo Sayekti inspired by Maksimer