Realizzato da:
Questo lavoro presenta l'analisi e l'implementazione di un sistema automatizzato per l'assegnazione dei garanti ai corsi universitari, in conformità ai requisiti ministeriali. L'obiettivo principale è garantire che ogni corso soddisfi i vincoli minimi di docenza, rispettando le regole di distribuzione tra diverse categorie di docenti e ottimizzando l'uso delle risorse disponibili.
Utilizzando la programmazione logica con Answer Set Programming (ASP), abbiamo modellato il problema attraverso fatti, regole e vincoli derivati dai dati ministeriali e universitari. Abbiamo implementato una serie di vincoli per rispettare i minimi richiesti di docenti per corso, evitando sovrapposizioni improprie tra gli incarichi dei docenti e considerando scenari realistici in cui un docente può assumere più ruoli parziali.
L'approccio è stato testato su un dataset reale contenente informazioni su corsi, SSD (Settori Scientifico-Disciplinari) e docenti dell'Università degli Studi di Parma. I risultati dimostrano come il sistema possa trovare configurazioni ottimali che soddisfano i requisiti, massimizzando l'efficienza e mantenendo flessibilità nell'assegnazione dei docenti.
Per utilizzare il sistema, è necessario avere i seguenti strumenti installati:
Verifica l'installazione con i seguenti comandi:
docker --version
docker compose version
Per costruire il container:
docker compose build --no-cache
Per eseguire il container:
docker compose run --rm ottimizzazione-garanti-accademici
Potrebbe essere necessario aggiornare i permessi della cartella
src
conchmod -R 777 src
.
Il sistema consente di generare dataset ASP per i corsi universitari attraverso uno script Python eseguito all'interno del container Docker. È possibile visualizzare l'helper per i comandi disponibili con:
python3 main.py --help
Per generare un dataset specifico (ad esempio per i corsi di Informatica e Scienze Informatiche):
python3 main.py --3027 --5069
I file generati verranno salvati nella directory lp/
con i seguenti nomi:
docenti.lp
: contiene i fatti relativi ai docenti.coperture.lp
: contiene i fatti relativi alle coperture dei corsi.docenti_a_contratto.lp
: contiene i fatti relativi ai docenti a contratto.ministeriali.lp
: contiene i vincoli ministeriali per i corsi.
Per analizzare un dataset generato:
clingo -n 15 --parallel-mode 8 --time-limit=180 lp/* main.lp
Per i più pigri:
bash lazy-run.sh
- Ridirigere l'output dell'analisi in un file di testo. Ad esempio:
clingo -n 0 lp/* main.lp > res.txt
- Eseguire lo script
src/utils/post-proc.py
. Ad esempio:cd utils python3 post-proc.py ../res.txt
- Vengono generati i file contenenti i garanti per ciascun corso.
Per generare la documentazione è necessario avere installato:
Successivamente eseguire:
doxygen Doxyfile
cd doc/latex
make