Skip to content

Latest commit

 

History

History
58 lines (47 loc) · 2.09 KB

README.md

File metadata and controls

58 lines (47 loc) · 2.09 KB

School Schedule

Este proyecto tiene como objetivo resolver el problema de asignar materias a profesores de una escuela. Para ello, se utiliza el lenguaje de programación Python, en donde usando la librería optilog se puede resolver el problema de asignación de materias a profesores de manera óptima. Ademas, con el fin de evaluar la eficiencia de la solución, se utiliza el solver Rsat y Kissat para resolver el problema de satisfacción de restricciones.

Uso

Primeramente, es necesario instalar las dependencias del proyecto. Para ello, se puede ejecutar el siguiente comando:

pip install -r requirements.txt # o pip3 si es necesario

Posteriormente, es necesario compilar los solvers de Rsat y Kissat. Para ello, se deben ejecutar los siguientes comandos:

tar -xzf rsat.tar.gz # Opcional
tar -xzf kissat.tar.gz && cd kissat-rel-3.1.1 && ./configure && make && cd ..

Finalmente, se puede ejecutar el programa con el siguiente comando:

./runner.sh <archivo_de_entrada>

Donde <archivo_de_entrada> es el archivo que contiene la información de las materias y los profesores. Un ejemplo de este archivo es el siguiente:

{
    "colegio": "Colegio 1",
    "profesores": [
    {
      "nombre": "Pedro",
      "materias": ["Matemáticas", "Física"],
      "disponibilidad": {
        "lunes": ["8:00", "10:00"],
        "martes": ["10:00", "12:00"]
      }
    },
    {
      "nombre": "Maria",
      "materias": ["Historia", "Literatura"],
      "disponibilidad": {
        "lunes": ["8:00", "10:00"],
        "martes": ["8:00", "10:00"]
      }
    }
  ],
  "aulas": ["Aula 1", "Aula 2", "Aula 3"],
  "hora_inicio": "07:00:00.000",
  "hora_final": "19:00:00.000"
}

Finalmente, el programa generará un archivo de salida con la información de las materias asignadas a los profesores. Este archivo se llamará oferta_<colegio>.pdf

Note

Es opcional instalar las librerias de Python o compilar los solvers, el script runner.sh se encarga de instalarlas, descomprimir y compilar lo necesario para le ejecución del programa.