En la sección A1.1 podemos ver el código fuente del bucle principal escrito en JAVA. 

## 4.3.3.3.5. **Finalización De La Sesión**

- **Finalmente, cuando se ha completado el número de interacciones o el tiempo** 
disponible para realizar la sesión, el sistema la da por terminada y muestra el resultado que ha obtenido el agente que se está evaluando, obteniendo así la medida de rendimiento o inteligencia que ha mostrado el agente durante el transcurso de la sesión. 

## 4.3.4. **Otras Clases Auxiliares** 4.3.4.1. **Interacción**

Todos los agentes guardan un historial de las interacciones (Interaction**) realizadas con** 
el entorno durante la sesión en donde pueden consultar todo lo que realizaron durante ésta. 

Para poder guardar la observación de cada interacción se ha tenido que duplicar la información contenida en el espacio, ya que, de lo contrario, al guardar directamente la información del espacio y realizar modificaciones, la información guardada sería modificada. 

Un inconveniente de tener que duplicar la información contenida en el espacio, es que esta información es la que más espacio ocupa (computacionalmente hablando), por lo que se ha tenido que dar la posibilidad de dejar un máximo de las últimas interacciones a almacenar, de modo que el agente podrá "recordar" hasta un máximo de observaciones pasadas (Atributo NObservationsSaved en **Agent**). 

| Atributos   | Descripción                              |
|-------------|------------------------------------------|
| Observation | Observación proporcionada por el entorno |
| Action      | Acción realizada por el agente           |
| Reward      | Recompensa devuelta por el entorno       |
| ElapsedTime | Tiempo tardado en realizar la acción     |

A continuación podemos ver una tabla con los atributos de la clase. 

## 4.3.4.2. **Observación**

Para permitir distintos tipos de representaciones de las observaciones se ha creado una estructura de clases en donde se almacenará la observación. Existen dos opciones 