Sto cercando di creare uno schedulatore sportivo. Sto riscontrando problemi nell'identificare un algoritmo per aiutarmi a riempire in modo efficiente ogni slot.
I dati di esempio per costruire la pianificazione sarebbero:
- 10 squadre
- Ogni squadra si gioca 1 volta (45 partite totali richiesto)
- Ogni squadra gioca non più di 1 volta al giorno
- Nel mio test sto usando 9 giorni con 5 slot al giorno.
Tabella combinata (contiene 45 combinazioni)
ID
Team1ID
Team2ID
bitAssigned
Tabella di pianificazione (contiene 45 intervalli di tempo)
scheduleID
homeTeamID
awayTeamID
GameDate
GameTime
In questo momento le mie procedure esistenti riempiono circa il 90% degli slot lasciando il 10% dei miei spazi vuoti a un conflitto di pianificazione basato sulle regole precedenti.
I loop sulla mia tabella di pianificazione in ordine crescente data / ora.
Il mio primo slot potrebbe essere il sabato alle 8 del mattino.
Invito un elenco di squadre che non sono ancora state pianificate. Quindi faccio una serie di possibili combinazioni di quelle squadre. Quindi uso quell'array per estrarre 1 record casuale dalla mia tabella delle combinazioni da combinazioni che non sono ancora state pianificate e metto quelle squadre sul programma. Quindi ho impostato quella combinazione come usato.
Ripeto il ciclo più e più volte e ogni volta il mio elenco di team disponibili si riduce e anche il mio array risulta più piccolo.
Sto scoprendo che alcuni giorni vanno bene, e in altri giorni le ultime ultime 2 squadre rimanenti hanno già giocato in una settimana precedente, quindi non vengono aggiunte di nuovo al programma.
L'unica cosa che non ho ancora provato è di "resettare" i giorni di conflitto e riprovarli per vedere se ottengo posizionamenti migliori.
Qualcuno ha qualche suggerimento?