Skip to content

Answer Set Programming (ASP)-based tool for optimizing the assignment of academic guarantors to university courses.

Notifications You must be signed in to change notification settings

merendamattia/ottimizzazione-garanti-accademici

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ottimizzazione dei Garanti accademici

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.

Requisiti per l'utilizzo

Per utilizzare il sistema, è necessario avere i seguenti strumenti installati:

Verifica l'installazione con i seguenti comandi:

docker --version
docker compose version

Build e Run

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 con chmod -R 777 src.

Generazione del Dataset LP

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.

Analisi del Dataset

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

Generazione del file Excel contenente i risultati delle analisi

  1. Ridirigere l'output dell'analisi in un file di testo. Ad esempio:
    clingo -n 0 lp/* main.lp > res.txt
  2. Eseguire lo script src/utils/post-proc.py. Ad esempio:
    cd utils
    python3 post-proc.py ../res.txt
  3. Vengono generati i file contenenti i garanti per ciascun corso.

Documentazione

Per generare la documentazione è necessario avere installato:

Successivamente eseguire:

doxygen Doxyfile
cd doc/latex
make

About

Answer Set Programming (ASP)-based tool for optimizing the assignment of academic guarantors to university courses.

Topics

Resources

Stars

Watchers

Forks

Languages

  • Python 58.7%
  • TeX 39.4%
  • Dockerfile 1.1%
  • Shell 0.8%