- Diciamo che ho 9 lavori con le stime di quanto tempo ci vorranno per completare e 3 code che elaborano questi lavori - questo costituisce un lotto. Si noti che tutti i lavori vengono assegnati in anticipo a una coda e non in fase di esecuzione. Pertanto, con una pianificazione scadente, alcune code potrebbero rimanere inattive mentre altre continuano a elaborare un lavoro.
- Tutti questi lavori dovrebbero essere distribuiti attraverso le code in modo tale che il tempo totale per completare tutte le code sia quasi uguale.
Si consideri:
1.Abbassa Q2, Q3 completato in 15 minuti e rimane inattivo mentre Q1 richiede altri 10 minuti per essere completato.
Batch1:
+------+----+----+----+
| # | Q1 | Q2 | Q3 |
+------+----+----+----+
| 1 | 5 | 5 | 5 |
| 2 | 15 | 5 | 5 |
| 3 | 5 | 5 | 5 |
+------+----+----+----+
| Time | 25 | 15 | 15 |
+------+----+----+----+
| Total| 25 |
+------+----+----+----+
2.Ora, idealmente, i lavori dovrebbero essere distribuiti come ...
+------+----+----+----+
| # | Q1 | Q2 | Q3 |
+------+----+----+----+
| 1 | 15 | 5 | 5 |
| 2 | - | 5 | 5 |
| 3 | - | 5 | 5 |
| 4 | - | 5 | 5 |
+------+----+----+----+
| Time | 15 | 20 | 20 |
+------+----+----+----+
| Total| 20 |
+------+----+----+----+
Questo sembra essere un problema di programmazione semplice, ma mi occupo di centinaia di tali lavori, suddivisi in più lotti. Dove ogni partita inizierà solo al completamento del primo. Quindi richiederei un qualche algoritmo per decidere il programma. Qualche idea..? Grazie
Aggiornamento:
Aggiunta di ulteriori informazioni basate sul feedback ...
- I lavori in un batch sono fissi.
- Non ci sono dipendenze tra lavori all'interno di un batch, ma esistono dipendenze tra lotti. Quindi possiamo cercare di risolvere il problema per un singolo batch e la soluzione si applicherà a tutti i batch.
- Problema del mondo reale: sto modellando un problema sul caricamento dei dati (ETL) e l'intero processo di caricamento richiede 5-6 ore, che ha diversi lotti. Alla ricerca di modi per ridurre il tempo complessivo.