
## Apéndices

Debido a que el código fuente de este proyecto debe ser portable y ejecutable en cualquier máquina, preferiblemente como Applet Web, la aplicación ha sido desarrollada en JAVA utilizando el entorno Eclipse. Los comentarios se han realizado en inglés, por si en el futuro parte del proyecto es utilizado o extendido por otros equipos investigadores. 

## A1. **Extractos Representativos Del Código Fuente**

En este apéndice incluimos dos partes relevantes del código fuente; la que se encarga del bucle principal de la interacción entre entorno y agente; y la generación aleatoria de entornos. 

## A1.1. **Bucle Principal**

// Loop to interact between the Environment and the Agent for (int actualInteraction = 0; actualInteraction < 
numberOfInteractions; actualInteraction++) 
{ 
if (numberOfInteractionsToRelocate != 0 && actualInteraction != 0 
&& actualInteraction % numberOfInteractionsToRelocate == 0) 
 **this**.RelocateGoodAndEvilAgents(); 
// Set the rewards to the cells where are the Good and Evil Agents Cell goodCell = **this**.goodAgent.GetLocation(); 
 Cell evilCell = **this**.evilAgent.GetLocation(); 
 goodCell.SetReward(**this**.maxReward); 
 evilCell.SetReward(**this**.minReward); 
for (int actualAgent = 0; actualAgent < **this**.agents.size(); 
actualAgent++) 
 { 
 Agent agent = **this**.agents.get(actualAgent); // Sends the last Reward to the agent
 **double** reward = interactions[actualAgent].GetReward(); 
 **this**.SendReward(agent, reward); 
 } 
 Observation observation = **this**.TakeObservation(); 
for (int actualAgent = 0; actualAgent < **this**.agents.size(); 
actualAgent++) 
 { 
 Agent agent = **this**.agents.get(actualAgent); // Shows the actual Observation to the agent interactions[actualAgent].SetObservation(observation); 
 **this**.SendObservation(agent, observation); 
 } 
for (int actualAgent = 0; actualAgent < **this**.agents.size(); 
actualAgent++) 
 { 
 Agent agent = **this**.agents.get(actualAgent); 