Proyecto 2 la asignatura "Heurística y Optimización" del grado de ingeniería informática, curso 3, cuatrimestre 1. Universidad Carlos III de Madrid.
<br/><br/>
- Se recomienda usar Python 3.10.8
- Se recomienda usar un entorno virtual para instalar las dependencias
- Instalar las dependencias (en requirements.txt)
<br/><br/>
-
Para entrar en el virtualenv (venv):
- Windows:
venv\Scripts\activate.bat
- Linux:
source venv/bin/activate
- O simplemente añadir un nuevo terminal en VSCode y seleccionar el entorno virtual.
- Windows:
-
Para instalar las dependencias (una vez dentro del venv):
pip install -r requirements.txt
-
Para ver correctamente el color de los comentarios (!, ?, * ...) en el código, instalar la extensión "Better Comments" en VSCode.
-
Para poder ejecutarlo correctamente, debemos ejecutar el archivo desde un Bash (el de git mismamente) (en VSCode, añadir un nuevo terminal y seleccionar bash). Si no, no funcionará correctamente.
<br/>
De todas maneras, se puede ejecutar desde Linux (recomendado).<br/>
Imágen de ejemplo de ejecución (con el comando sh ./parte-1/code/CSP-calls.sh):<br/>
<br/><br/>
- Crear el repositorio
- Crear el README.md
- Crear el .gitignore
- Crear el venv
- Crear el requirements.txt
- Externalizar las funciones
- Crear la restricción de los hermanos
- Crear la restricción de los hermanos
- Crear la función write al archivo de salida
- Sacar 3 soluciones DISTINTAS y ALEATORIAS
- Crear el archivo .sh para ejecutar el código
- Eliminar variables (listas) no usadas
- CREAR 15 TESTS ESPECÍFICOS, CHECK BOUNDARIES !!
- SACAR TODO DE LA CARPETA CODE, REORDENAR !!
<br/>
- Eliminar duplicados
- Añadir las funciones externas necesarias para que funcione A*
- Añadir cola_total sacado del resultado de la parte 1
- Crear heuríticas nuevas, más eficientes; estaría bien que fueran mínimo 3
- Crear heurística 1
- Crear heurística 2
- Crear heurística 3
- Exportar el resultado de la parte 2
- Estadísticas
- Resultados
- CREAR 15 TESTS ESPECÍFICOS, CHECK BOUNDARY VALUES !!
- Automatizar la comprobación de la validez de las soluciones, costes y heurísticas
- Comentar mejor el A*
<br/><br/>
- ¿Se debe seguir de forma estricta la distribución de los ficheros?
- ¿Se puede usar el bus con posición vertical? Es más eficiente que el horizontal (que aparece en el pdf).
- ¿Es necesario usar X, C y R's en las estructuras de las tuplas?
- ¿Cuentan las puertas y el chofer como posiciones del bus? (de la misma forma que el pasillo no lo hace)
- ¿Se han de crear listas externas o es irrelevante, tema de velocidad, optimización...?
- ¿Afectan las pertas a los alumnos conflictivos (entre ciclo 1 y 2)? o ¿siguen tienendo que dejar espacio con otro conflictivos sin contar las puertas?
- ¿Se puede usar el formato de path: python ./parte-1/code/CSPCargaBUS.py ./parte-1/CSP-tests/alumnos00?
- ¿Ha de ser la primera solución aleatoria también o la primera que se lanza? Ahora mismo los 3 resultados son aleatorios.
- Tamaño y longitud de los tests, complejidad, etc.
- Forma de exportar los resultados
- ¿Si hay un alumno de movilidad reducida en 2, puede sentarse otro en 3?
<br/>
- ¿El formato de los test debe ser las soluciones anteriores, con el num total y las aleatorias?
- Si un alumno tiene delante un conflictivo y encima este tiene menor id, ¿se multiplica x4?
- Se coge como archivo test un predet. o uno de la parte 1?
- Resto de dudas no formuladas ya resultas
- Si no se encuentra solución, ¿se deben exportar las estadísticas?
<br/><br/>