Sie können das Problem als ein ganzzahliges lineares Programm ausdrücken. Sei B[i][j]
eine Matrix aus 0 und 1 mit der Bedeutung B[i][j] = 1
, wenn wir die j
Aufgabe der i
ten Maschine zuweisen. Die Tatsache, dass die Aufgaben nicht aufteilbar sind, macht dies zu einem ILP anstatt zu einem LP - andernfalls könnten wir einfach darauf bestehen, dass 0 <= B[i][j] <= 1
.
Wir möchten die maximalen Kosten jeder Maschine minimieren. Das ist keine lineare Funktion, aber es gibt einen Standardtrick, um es so auszudrücken, indem man eine Dummy-Variable einführt (die hier im Programm MakeSpan
genannt wird).
der ILP ist das Programm, das m + n Einschränkungen hat: die Idee
minimize MakeSpan such that
sum(B[i][j] for i=1..m) = 1 for all j
sum(B[i][j]*A[i][j] for j=1..n) <= MakeSpan for all i
Der erste Satz von Constraints formalisiert, dass jede Aufgabe zu genau einer Maschine zugeordnet ist. Die zweite Einschränkung besteht darin, dass die Kosten für jede Maschine maximal MakeSpan
betragen.
Das Minimum MakeSpan
wird lokal erreicht, wenn MakeSpan
den maximalen Kosten einer Maschine entspricht und global erreicht wird, wenn diese maximalen Kosten ebenfalls minimiert werden.
Um das ILP zu lösen, können Sie Ihren bevorzugten ILP-Solver verwenden. Zum Beispiel ist GLPK ein Open Source Solver.
"Kosten zur Ausführung" sollte "Zeitaufwand für die Ausführung" sein? "Hangerian Method" sollte "der ungarische Algorithmus" sein? Es scheint nicht so, als ob der Ungarische Algorithmus hier überhaupt anwendbar wäre, da Sie nicht die Gesamtkosten, sondern die maximalen Arbeiterkosten minimieren. Ich nehme an, Sie wissen das schon, aber vielleicht sollte es auch in die Frage gehen, warum Sie es ausschließen. –
"Alle Aufgaben müssen parallel ausgeführt werden" schlägt vor, dass Sie einer Maschine nicht mehr als 1 Aufgabe zuweisen können (da sie dann nicht parallel ausgeführt werden). Meine Antwort geht davon aus, dass du das nicht meinst - insbesondere da das m = n erfordern würde. Vielleicht können Sie das auch klären? –
Ja Kosten ist die Ausführungszeit und wir können einer Maschine mehr als 1 Aufgabe zuweisen, da sie unabhängig sind. für z.B. n = 512 m = 16 –