Sto lavorando su un sistema in cui sono pianificate diverse risorse (utenti, stanze e attrezzature). Ogni appuntamento è programmato per un utente e può anche richiedere una stanza e / o un'attrezzatura. Gli appuntamenti sono programmati nel tempo, riempiendo lentamente il calendario. Non è quindi un classico problema di pianificazione in cui è possibile pianificare tutto in una volta.
Il mio problema è determinare "ottimale" slot di disponibilità che i clienti possono scegliere quando si prenota un appuntamento.
È facile determinare tutti gli slot di disponibilità: è la sovrapposizione della disponibilità per l'utente / i richiesto / i / le apparecchiature / i. Tuttavia, voglio evitare di introdurre intervalli di 5/10 minuti nella pianificazione che non possono essere compilati in seguito.
Le proprietà rilevanti del sistema sono:
- Viene utilizzato un intervallo di 5 minuti
- Diversi tipi di appuntamenti hanno lunghezze diverse (predefinite) (multipli di 5 minuti)
- Gli utenti / sale / attrezzature possono eseguire / avere diversi tipi di appuntamenti con diverse lunghezze
Il sistema dovrebbe tenerne conto al momento di determinare gli slot di disponibilità offerti per le prenotazioni di appuntamenti.
Penso che non ci sia una soluzione "reale" ottimale per questo, dal momento che ci sono molti fattori e non è noto in anticipo quali tipi di appuntamenti saranno pianificati in seguito. Tuttavia, voglio evitare di offrire slot di disponibilità che introducono vuoti inutili (o altre situazioni non ottimali) nel programma.
Ho creato una soluzione che prende in considerazione solo la disponibilità di una risorsa (utenti). Determina innanzitutto il minimo comune multiplo (LCM) delle durate degli appuntamenti che l'utente può eseguire. Quindi genera intervalli di disponibilità nel tempo totale disponibile per quell'utente, utilizzando il LCM come dimensione del passo. Ciò sembra migliore rispetto alla semplice offerta di tutte le opzioni di disponibilità ad ogni passo di 5 minuti, sebbene non sia l'ideale. (Ad esempio, se l'LCM è elevato, verranno offerte poche opzioni.) Inoltre, non tiene conto delle altre risorse (stanze / attrezzature).
Esistono algoritmi / metodi / best practice noti per determinare gli slot di disponibilità in una situazione del genere?