Skip to content
cortinico edited this page Jun 23, 2014 · 2 revisions

LabAssign

Il software LabAssign permette di assengare laboratori e tavole rotonde ai tre turni di eventi previsti per ogni rover e scolta della route nazionale 2014.

Effettuare una esecuzione

Per effettuare un'esecuzione del software è sufficiente seguire i passi seguenti:

  • Clonare il repository
git clone git@github.com:route-nazionale/labassign.git
  • Compilare il sorgente
cd labassign/LabAssign/
ant build
ant jar
  • Impostare i parametri di accesso al database nel file labassign.conf (che si trova nella root).
################################
#	ACCESSO DB
#
DB_HOST=localhost
DB_USER=testassign
DB_PASS=
DB_NAME=provvisorio
################################
  • In base alla propria configurazione si puo' rendere necessario la creazione di un tunnel SSH
ssh -L 3306:localhost:3306 -p 222 bp.rn2014.it
  • Avviare l'esecuzione con il comando
java -jar labassign.jar labassign.conf

Parametri di configurazione

All'interno del file labassign.conf è possibile imposare i parametri di priorità con cui vengono assegnati i laboratori.

L'algoritmo procede per passate, cercando di assegnare prima tutti i ragazzi cercando di far soddisfare tutti i vincoli. Nel caso in cui non ci riuscisse inizia a rilasciare i vincoli partendo da quelli con priorità minore.

NOTA Per priorità maggiore si intende un numero in valore assoluto maggiore. Per cui la priorità 5 indica un vincolo per cui si è più interessati rispetto ad un vincolo a priorità 1 (che potrebbe rappresentare una richiesta non strettamente necessaria).

L'algoritmo permette inoltre di segnalare, per ogni assegnamento, a quale livello di priorità si è dovuti scendere per arrivare ad effettuare l'assegnamento.

Elenco dei vincoli

I vincoli sono descritti di seguito:

  • PRIO_FULL Vincolo che indica che un evento non può avere assegnati più eventi della sua capienza massima
  • PRIO_ROAD Vincolo che richiede che un ragazzo effettui solo eventi appartenenti ad una delle sue strade di coraggio
  • PRIO_ROAD_2 Vincolo che richiede che un ragazzo effettui solo eventi appartenenti ad almeno due delle sue strade di coraggio
  • PRIO_ROAD_3 Vincolo che richiede che un ragazzo effettui solo eventi appartenenti a tutte e 3 le sue strade di coraggio
  • PRIO_AGE Vincolo che impone che un ragazzo effettui solo eventi previsti per la sua eta
  • PRIO_TWIN_LAB Vincolo che impone che un ragazzo non partecipi ad laboratorio dove ci sono già altri 3 membri del suo stesso gemellaggio
  • PRIO_TWIN_TAV Vincolo che impone che un ragazzo non partecipi ad una tavola rotonda dove ci sono già altri 5 membri del suo stesso gemellaggio
  • PRIO_NOVICE Vincolo che impone che un novizio non partecipi ad un evento non adatto a lui
  • PRIO_HANDICAP Vincolo che impone che un portatore di handicap non partecipi ad un evento non adatto a lui
  • PRIO_EQUALS Vincolo che impone che un ragazzo non partecipi ad 2 o più eventi che siano uguali
  • PRIO_ONE_LAB Vincolo che impone che un ragazzo partecipi ad almeno un laboratorio nelle 3 occasioni
  • PRIO_QUART Vincolo che impone che un ragazzo partecipi solamente a laboratori del proprio quartiere (sottocampo)

Sviluppo

Il software LabAssign è scritto in Java. Le parti di codice che sono poco chiare sono state accuratamente documentate con commenti in italiano.

Prima di iniziare a sviluppare si consiglia di dare un'occhiata al JavaDoc