simone-torino / Progetto_Algoritmi_20_21

2 stars 0 forks source link

Generazione date esami #6

Open simone-torino opened 3 years ago

simone-torino commented 3 years ago

Ingredienti:

Operativamente: programmare e testare una condizione per volta, in modo da accertarsi che funzioni bene prima di implementare il sistema con più condizioni. E' importante che ogni vincolo sia coerente con tutti gli altri.

Vincoli da rilassare da fare per ultimi.

simone-torino commented 3 years ago

Fonti che possono tornare utili per pensare all'algoritmo, me le segno qua per riguardarmele meglio più avanti.

https://stackoverflow.com/questions/2177836/algorithm-for-creating-a-school-timetable Dice di calcolare tutte le combinazioni possibili e scartare quelle che non soddisfano le condizioni. Ci sono diversi link che si possono guardare.

Alcuni software esistenti presi dal link sopra che mi ispiravano, non ho trovato il codice però. https://www.unitime.org/ https://www.optaplanner.org/ https://lalescu.ro/liviu/fet/

Un approccio con le matrici: https://stackoverflow.com/questions/3938491/scheduling-algorithm-for-maintining-two-dimensional-constraint All'ultima risposta soprattutto parla di liste di periodi da associare progressivamente ad ogni spazio che rispetti le condizioni.

Un intero articolo scientifico, dovesse servire da riferimento per qualcosa in particolare https://www.sciencedirect.com/science/article/pii/S1474667017377388 Altre cose complicate che spero non serviranno ma non si sa mai https://www.math.unipd.it/~frossi/cp-school/lepape.pdf

Questo programma sembra fare qualcosa di utile ma devo testarlo ancora, per ora so che prende dei numeri e genera una matrice https://github.com/codophobia/process-scheduling-algorithms/blob/master/roundrobin_scheduling.cpp

In generale basta usare le parole chiave giuste e qualcosa di utile salta fuori.

simone-torino commented 3 years ago

Per la lettura dal database servono:

Per ogni esecuzione del programma in generazione date esami devo passare anche l'anno accademico dalla stringa di comando per capire esattamente quali dati recuperare dal database, i dati che devono essere scelti in base all'anno accademico sono: