El objetivo de este documento es facilitar al usuario la creación de ejecuciones y el diseño de experimentos para validar los resultados extraídos de la práctica.
Para poder realizar una ejecución del problema, es tan sencillo como ejecutar el fichero Lab1Demo.java
desde la terminal:
$ java Lab1Demo
Otra forma de hacerlo es desde tu editor de código favorito (e.g. Visual Studio Code), en el caso que tenga una opción de ejecutar un archivo abierto.
.java
del proyecto y que los archivos AIMA.jar
y Comparticion.jar
para que la ejecución sea posible.
Una vez ejecutado, irán apareciendo por la terminal diferentes ordenes para diseñar la ejecución. Por orden de aparición, se os pedirá lo siguiente:
- El número de Usuarios
N
que deseáis. - El número de conductores
M
que deseáis (M debe ser menor que N). - La
seed
de generación aleatoria de Usuarios. - El algoritmo con el que deseáis resolver el problema. Escribir (1) para usar
Hill Climbing
y (2) para usarSimulated Annealing
. - La heurística que deseáis usar. Escribir (1) para
minimizar la distancia
y (2) paraminimizar la distancia y los conductores
.
Para poder realizar experimentos a lo largo de la práctica de forma más rápida y sencilla se ha diseñado unos archivos especiales. Estos permiten realizar 10 ejecuciones de una serie de experimentos descritos por sus características en un fichero llamado input.txt
y guardar los resultados en un fichero llamado output.txt
.
Para el correcto funcionamiento del sistema, los experimentos deben estar descritos en líneas diferentes del archivo de texto input.txt
y deben incluir, con separaciones de un espacio, los mismos valores que se piden en la ejecución simple. Es decir, deben incluir la N, la M, la seed, el número de algoritmo y el número de función heurística, con los valores descritos arriba.
Un ejemplo de fichero con dos experimentos podría ser el siguiente:
200 100 1234 1 1
300 120 33 1 2
Para ejecutarlos, debéis escoger el fichero en función del sistema operativo:
- Si tenéis Windows 🪟 debéis usar el fichero
ejecuciones_windows.bat
y ejecutarlo desde el directorio de la siguiente forma:
$ .\ejecuciones_windows.bat
- En caso de usar un sistema Linux 🐧 o macOS 🍎, debéis usar el fichero
ejecuciones_unix.sh
y ejecutarlo desde el directorio de la siguiente forma:
$ .\ejecuciones_unix.sh
.java
del proyecto y que los archivos AIMA.jar
y Comparticion.jar
para que la ejecución sea posible.
De cara a poder explorar y verificar ciertos resultados de la práctica, podéis modificar algunos de los elementos del problema. A continuación se especifican cuales son y la forma en que se pueden modificar:
- Generador de la solución inicial: para cambiar el algoritmo que genera la solución inicial se debe hacer desde los ficheros
Lab1Demo.java
(línea 31), para las ejecuciones simples, oLab1Experimentos.java
(línea 31), para el diseño de experimentos. Las opciones disponibles son: la generación más sencilla, solucionInicial1(); la generación sofisticada solucionInicial2() (default); y la sofisticada con aleatoriedad solucionInicial3(seed). - Operadores: se puede añadir el operador de añadir_conductor(conductor) si se des-comenta su implementación en los archivos
Lab1SuccessorFunction.java
yLab1SASuccessorFunction.java
. Está indicado qué parte del código es cada operador. - Parámetros del algoritmo de Simulated Annealing: se pueden modificar dichos parámetros desde los ficheros
Lab1Demo.java
(líneas 82-85) oLab1Experimentos.java
(líneas 80-83).