Tarefa 1 - Programar um Agente para o Mundo do Aspirador

Exercício Proposto por Jill Zimmerman, do Goucher College, USA

Projetar um agente mais sofisticado para o mundo do aspirador. Você pode assumir que o local que os agentes devem limpar  é um retângulo vazio, sem móveis ou outros obstáculos. Seu agente pode ter memória, ou seja, o agente pode ter um "estado" que pode ser alterado e memorizar informações a partir dos passos anteriores. 

Você pode usar este modelo:

// My Vacuum Agent
package ai.worlds.vacuum;
import java.util.*;

class MyVacuumAgent extends VacuumAgent
{

// declare any state variables here

void determineAction()
{

/* This method uses the percept (stored in the Vector percept)
and state values to determine the agents next action.
The member variable action is assigned a string (either "suck",
"forward", "turn left", "turn right", or "shut-off") to indicate
the agent's next action */
}
}

Nomeie seu agente com o seu nome seguido por VacuumAgent, por exemplo, FabioVacuumAgent. A classe precisa estar contida no arquivo com o mesmo nome com a extensão java, por exemplo FabioVacuumAgent.java. Para testar o seu agente, você terá que adicionar esse arquivo a um projeto Eclipse que contém todos os arquivos java fornecidos e, em seguida, fazer algumas pequenas modificações em um dos arquivos.
 
Faça o download dos arquivos do projeto em http://phoenix.goucher.edu/~jillz/cs340/ai/ai.zip. Você vai precisar usar o Winzip para extrair os arquivos.
 
Em seguida, você deve usar o Eclipse para importar o projeto. Em seguida, compilar os arquivos e executar a classe AI.
 

O novo arquivo <xx>VacuumAgent deve ser colocado no pacote ai.worlds.vacuum. Além disto,  selecione o arquivo WorldCreatePanel.java no pacote ai.worlds e faça as seguintes alterações para incluir o seu agente:


1. Adicionar um string com o nome de seu agente em
 String[] vacuumStrings = {"Random Vacuum Agent","Reactive Vacuum Agent"};


2. No método createAgent, adicione um comando else if  no final, tal como :

else if (agentName == "Fabio Vacuum Agent")
return new FabioVacuumAgent();

Você pode comparar o desempenho de seu agente com aqueles "dummy"  fornecidos, usando os julgamentos de desempenho dos agentes ("trials"). Basta selecionar os agentes  nos ensaios e executá-los. As pontuações médias dos ensaios em ambientes idênticos serão exibidas.
 
Quando você estiver satisfeito com a inteligência de seu agente, envie seu arquivo com o código fonte.