Passa al contenuto principale

Programmazione automatica

Generare il calendario decide chi gioca contro chi. La programmazione decide quando e dove. FairGame si occupa della seconda parte con un risolutore a vincoli: descrivi il torneo e lui assegna ogni partita.

Cosa garantisce

Qualunque altra cosa faccia, un programma generato non contiene mai:

  • due partite sullo stesso campo allo stesso momento;
  • una squadra che gioca due partite contemporaneamente;
  • una partita fuori dagli orari di disponibilità del campo;
  • una violazione di una regola di programmazione che hai indicato come obbligatoria.

Questi sono vincoli rigidi. Se non possono essere tutti rispettati, il risolutore te lo segnala invece di generare un programma che ne violi uno senza avvisarti.

Cosa ottimizza

Tra i programmi validi, preferisce quelli più adatti da giocare e più semplici da gestire:

  • Riposo equilibrato. Le squadre hanno intervalli comparabili tra le partite, invece di vedere una squadra giocare tre partite di fila mentre un'altra aspetta quattro ore.
  • Giornate compatte. I campi restano occupati e la giornata termina il prima possibile, compatibilmente con i vincoli. Il tempo inutilizzato sui campi è ciò che trasforma un torneo di sette ore in uno di dieci.
  • Struttura prevedibile. Quando una regola lo richiede, l'ultimo turno di un girone inizia contemporaneamente, così nulla viene deciso sapendo già il risultato dell'altra partita.

Esecuzione

La programmazione automatica viene eseguita per ogni giornata del torneo, in tre fasi visibili:

  1. Risoluzione — il risolutore lavora sulla giornata. I tornei più grandi richiedono da pochi secondi a un paio di minuti; l'esecuzione mostra l'avanzamento e può essere annullata.
  2. Revisione — ricevi un programma proposto da controllare prima che sostituisca quello esistente.
  3. Applicazione — la proposta diventa il programma del torneo.

Nulla viene applicato senza la tua conferma e cancellare il programma di una giornata per ricominciare richiede una sola azione.

Quando non riesce a trovare un programma

Una giornata irrisolvibile è quasi sempre sovraccarica di vincoli, non guasta. In ordine di probabilità:

Non ci sono abbastanza ore-campo. Campi × ore disponibili ÷ durata della partita è il tuo limite massimo. Se le partite non ci stanno, nessuna disposizione può farcele stare. Aggiungi un campo, allunga la giornata, accorcia le partite o riduci il numero di squadre.

Il requisito di riposo è troppo generoso. Un riposo di 120 minuti per squadre che giocano quattro partite richiede una giornata lunga. Il riposo è la causa più comune di un programma impossibile: riducilo e verifica se la giornata viene risolta.

La disponibilità è più limitata di quanto pensassi. Controlla le fasce orarie di ogni campo: è facile non accorgersi che la disponibilità è stata impostata per il sabato e mai modificata per la domenica.

Le regole sono in conflitto tra loro. Due squadre che devono entrambe finire entro le 14:00 e giocare entrambe quattro partite con 90 minuti di riposo potrebbero rendere il programma impossibile. FairGame segnala quali vincoli non è riuscito a soddisfare insieme.

Programmi parziali e partite fissate

Non devi affidare l'intera giornata al risolutore. Le partite che hai già posizionato manualmente possono rimanere dove sono, mentre il resto viene risolto attorno a loro: è utile per una finale con calcio d'inizio fissato, per uno spazio riservato alla cerimonia di apertura o per una partita per cui un club ha già affrontato il viaggio.

Nuova risoluzione durante il torneo

La chiusura di un campo a mezzogiorno è un evento normale. Impostalo come non disponibile e risolvi di nuovo la parte restante della giornata: le partite già giocate restano tali e le altre vengono riassegnate attorno a ciò che è già successo. Controlla la proposta, poi pubblica la modifica e annunciala: il programma che le persone stanno guardando è sui loro telefoni e non si aggiorna da solo nella loro testa.