Attualmente sto lavorando con una società di pulizia delle finestre che utilizza il proprio set di euristica per pianificare il suo piccolo set di pulitori per i lavori, in pratica un enorme foglio di calcolo con date e codici locali assegnati. Ho stupidamente detto che può essere fatto meglio.
Condizioni:
- I lavori hanno una data di "ultima pulizia" e una regolarità della quale vengono puliti (mensilmente, ogni due mesi, ... ogni sei mesi). Questo dà una finestra di tempo in cui devono essere puliti (la loro data pianificata).
- I lavori devono essere completati entro 3 giorni +/- dalla data prevista.
- I lavori hanno un costo associato per eseguire il lavoro, che si traduce approssimativamente nel tempo necessario per completare il lavoro.
Nel complesso, l'obiettivo è di ridurre al minimo il tempo impiegato tra i lavori per più addetti alle pulizie, assicurandosi al tempo stesso che tutti i lavori vengano puliti entro le condizioni sopra indicate.
La società è già operativa e i clienti devono essere puliti. Mi piacerebbe essere in grado di utilizzare un metodo che lentamente convalida la pianificazione delle pulizie verso l'ottimale (cioè assumere lavori in anticipo / in ritardo in modo da adattarsi meglio a un programma ottimale) poiché imporlo dall'inizio comprometterebbe il loro funzionamento.
Ho cercato Strumenti di ottimizzazione di Google per suggerimenti. È simile a un problema di routing del veicolo, ma è difficile sapere quali lavori devono essere scelti per far parte del percorso in un particolare giorno. Se i lavori sono ordinati per data pianificata e poi estratti dalla coda, il sistema non migliorerà mai più di prima.
Qualsiasi suggerimento verso ulteriori letture o metodi proposti sarebbe molto apprezzato!