Ho un problema nel mondo reale che sto cercando di rappresentare e automatizzare. L'ho semplificato e sottratto al seguente:
- Vi sono n luoghi di lavoro (P1, P2, ..., Pn).
- Ogni posto, Pn ha una chiave, Kn.
- Ci sono m Lavoratori, (W1, W2, ..., Wm).
- Per lavorare in Pn, un lavoratore deve tenere Kn.
- Ogni chiave può essere detenuta da un lavoratore o lasciata in borsa, E.
Un lavoratore può effettuare un viaggio in Exchange in qualsiasi momento per ritirare alcune chiavi non reclamate o rilasciare alcune chiavi che altri possono utilizzare.
Ora, c'è un programma di lavoro esogeno che deve essere completato in un rigoroso ordine. Per esempio:
- 21/04/2016 W1 deve funzionare su P6
- 21/04/2016 W2 deve funzionare su P3
- ** scambio di chiavi richiesto **
- 22/04/2016 W3 deve funzionare su P3
- 22/04/2016 W2 deve funzionare su P6
Qualsiasi numero di lavoratori potrebbe dover lavorare in Pn ad un certo punto del loro programma, anche se mai nello stesso giorno
Sappiamo:
- La posizione iniziale di tutte le chiavi, sia con i lavoratori che in corrispondenza di E
- Gli ordini di lavoro futuri che ciascun lavoratore dovrà soddisfare
Quindi, sto lottando per modellare l'intera situazione. Puoi suggerire strutture di dati e algoritmi che dovrei prendere in considerazione al fine di afferrarlo e iniziare a ottimizzare i viaggi per lo scambio per ciascun lavoratore?
Quello che voglio minimizzare è il numero totale di viaggi verso E. Un obiettivo secondario sarebbe quello di garantire che nessun lavoratore effettui un numero sproporzionato di viaggi.
Grazie in anticipo!!