Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałBogusław Matusiak Został zmieniony 6 lat temu
1
Definicja problemu: (P2 | pi = 1, prec | Cmax)
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Definicja problemu: (P2 | pi = 1, prec | Cmax) Autor: Przemysław Sempruch
2
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Kroki algorytmu (1) Numeruj zadania przypisując im etykiety L od 1 do n 2. Szereguj zadania listowo, przy czym kolejność na liście odpowiada malejącym etykietom zadań
3
Algorytm Coffmana-Grahama
(Minimalizacja długości harmonogramu) Kroki algorytmu (2) 1. Numeruj zadania przypisując im etykiety L od 1 do n 2. Szereguj zadania listowo, przy czym kolejność na liście odpowiada malejącym etykietom zadań Początkowo zadania nie mają przyporządkowanych list następników oraz etykiet L. for i :=1 to n do begin A := zbiór zadań bez etykiet L, których wszystkie bezpośrednie następniki już mają etykiety ; foreach Z in A do begin przypisz do s_list(Z) malejący ciąg etykiet L jego bezpośrednich następników; end; wybierz Z in A o leksykograficznie najmniejszym s_list(Z) ; L(Z) :=i ; Oznaczenia: Z – zadanie A – zbiór zadań s_list(Z) – ciąg etykiet następników zadania Z
4
Zadanie Zi jest wolne od chwili, w której ukończony został
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Kroki algorytmu (3) 1. Numeruj zadania przypisując im etykiety L od 1 do n 2. Szereguj zadania listowo, przy czym kolejność na liście odpowiada malejącym etykietom zadań Szeregowanie listowe: Ustal kolejność zadań na liście (ustalona w p. 1) Za każdym razem, gdy zwalnia się jakaś maszyna/maszyny, wybieraj pierwsze (według „listy”) wolne (w tym momencie) zadania i przypisuj je do zwalniających się procesorów. Zadanie Zi jest wolne od chwili, w której ukończony został jej ostatni poprzednik Zj (Zj Zi). Zadanie niezależne jest zawsze wolne!
5
Przykład n = 19 z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład z9 z4 z15 z1 z10 z5 z16 z11 n = 19 z2 z17 z6 z12 z7 z18 z13 z3 z19 z14 z8
6
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) z9 Iteracje: 1, 2, 3 Zadania z15, z17, z19 nie mają następników. Ich lista s_list() będzie więc pusta. Pozostaje w kolejnych krokach przyporządkować kolejnemu zadaniu numer bieżącej iteracji. z4 1 z15 z1 z10 () z5 z16 z11 2 z2 z17 z6 z12 () z7 z18 z13 z3 3 z19 z14 z8 ()
7
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 z9 Iteracja: 4 A = { z9, z10, z12, z16, z18 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z9, ma najmniejszą listę. Etykietujemy je liczbą 4. z4 (1) 1 z15 z1 z10 () (2,1) z5 z16 z11 (2) 2 z2 z17 z6 z12 () (2,1) z7 z18 z13 z3 (2) 3 z19 z14 z8 ()
8
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 z9 Iteracja: 5 A = { z4, z10, z12, z16, z18 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadania z16 i z18 mają najmniejszą listę. Wybieramy dowolne spośród nich - z18 . Etykietujemy je liczbą 5. z4 (1) (4) 1 z15 z1 z10 () (2,1) z5 z16 z11 (2) 2 z2 z17 z6 z12 () (2,1) 5 z7 z18 z13 z3 (2) 3 z19 z14 z8 ()
9
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 z9 Iteracja: 6 A = { z4, z10, z12, z14, z16 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z16 ma najmniejszą listę. Etykietujemy je liczbą 6. z4 (1) (4) 1 z15 z1 z10 () (2,1) z5 6 z16 z11 (2) 2 z2 z17 z6 z12 () (2,1) 5 z7 z18 z13 z3 (2) 3 z19 z14 z8 () (5,3)
10
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 z9 Iteracja: 7 A = { z4, z10, z11, z12, z14 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadania z10 i z12 mają najmniejszą listę. Wybieramy dowolne spośród nich - z12 . Etykietujemy je liczbą 7. z4 (1) (4) 1 z15 z1 z10 () (2,1) z5 6 z16 z11 (2) (6,3,1) 2 z2 7 z17 z6 z12 () (2,1) 5 z7 z18 z13 z3 (2) 3 z19 z14 z8 () (5,3)
11
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 z9 Iteracja: 8 A = { z4, z10, z11, z14 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z10 ma najmniejszą listę. Etykietujemy je liczbą 8. z4 (1) (4) 1 8 z15 z1 z10 () (2,1) z5 6 z16 z11 (2) (6,3,1) 2 z2 7 z17 z6 z12 () (2,1) 5 z7 z18 z13 z3 (2) 3 z19 z14 z8 () (5,3)
12
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 9 A = { z4, z5, z11, z14 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z4 ma najmniejszą listę. Etykietujemy je liczbą 9. z4 (1) (4) 1 8 z15 z1 z10 () (2,1) z5 6 (8,7,4) z16 z11 (2) (6,3,1) 2 z2 7 z17 z6 z12 () (2,1) 5 z7 z18 z13 z3 (2) 3 z19 z14 z8 () (5,3)
13
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 10 A = { z5, z11, z14 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z14 ma najmniejszą listę. Etykietujemy je liczbą 10. z4 (1) (4) 1 8 z15 z1 z10 () (2,1) z5 6 (8,7,4) z16 z11 (2) (6,3,1) 2 z2 7 z17 z6 z12 () (2,1) 5 z7 z18 z13 z3 (2) 3 10 z19 z14 z8 () (5,3)
14
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 11 A = { z5, z11, z13 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z11 ma najmniejszą listę. Etykietujemy je liczbą 11. z4 (1) (4) 1 8 z15 z1 z10 () (2,1) z5 6 (8,7,4) 11 z16 z11 (2) (6,3,1) 2 z2 7 z17 z6 z12 () (2,1) 5 z7 z18 z13 z3 (10,6,5) (2) 3 10 z19 z14 z8 () (5,3)
15
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 12 A = { z5, z7, z13 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z5 ma najmniejszą listę. Etykietujemy je liczbą 12. z4 (1) (4) 1 8 z15 z1 z10 () 12 (2,1) z5 6 (8,7,4) 11 z16 z11 (2) (6,3,1) 2 z2 7 z17 z6 z12 () (2,1) 5 z7 z18 z13 z3 (10,6,5) (2) (11,10,4) 3 10 z19 z14 z8 () (5,3)
16
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 13 A = { z7, z13 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z13 ma najmniejszą listę. Etykietujemy je liczbą 13. z4 (1) (4) 1 8 z15 z1 z10 () 12 (2,1) z5 6 (8,7,4) 11 z16 z11 (2) (6,3,1) 2 z2 7 z17 z6 z12 () (2,1) 5 13 z7 z18 z13 z3 (10,6,5) (2) (11,10,4) 3 10 z19 z14 z8 () (5,3)
17
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 14 A = { z6, z7, z8 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z7 ma najmniejszą listę. Etykietujemy je liczbą 14. z4 (1) (4) 1 8 z15 z1 z10 () 12 (2,1) z5 6 (8,7,4) 11 z16 z11 (2) (6,3,1) 2 z2 7 z17 z6 z12 () (13,12,7) (2,1) 14 5 13 z7 z18 z13 z3 (10,6,5) (2) (11,10,4) 3 10 z19 z14 z8 () (5,3) (13,7)
18
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 15 A = { z1, z6, z8 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z8 ma najmniejszą listę. Etykietujemy je liczbą 15. z4 (1) (4) 1 8 z15 z1 z10 () 12 (2,1) (14,12,9) z5 6 (8,7,4) 11 z16 z11 (2) (6,3,1) 2 z2 7 z17 z6 z12 () (13,12,7) (2,1) 14 5 13 z7 z18 z13 z3 (10,6,5) (2) (11,10,4) 3 15 10 z19 z14 z8 () (5,3) (13,7)
19
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 16 A = { z1, z3, z6 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z6 ma najmniejszą listę. Etykietujemy je liczbą 16. z4 (1) (4) 1 8 z15 z1 z10 () 12 (2,1) (14,12,9) z5 6 (8,7,4) 11 z16 z11 (2) (6,3,1) 2 16 z2 7 z17 z6 z12 () (13,12,7) (2,1) 14 5 13 z7 z18 z13 z3 (10,6,5) (2) (11,10,4) (15,14,9) 3 15 10 z19 z14 z8 () (5,3) (13,7)
20
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 17 A = { z1,z3 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z1 ma najmniejszą listę. Etykietujemy je liczbą 17. z4 (1) (4) 1 17 8 z15 z1 z10 () 12 (2,1) (14,12,9) z5 6 (8,7,4) 11 z16 z11 (2) (6,3,1) 2 16 z2 7 z17 z6 z12 () (13,12,7) (2,1) 14 5 13 z7 z18 z13 z3 (10,6,5) (2) (11,10,4) (15,14,9) 3 15 10 z19 z14 z8 () (5,3) (13,7)
21
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 18 A = { z3 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z3 ma najmniejszą listę. Etykietujemy je liczbą 18. z4 (1) (4) 1 17 8 z15 z1 z10 () 12 (2,1) (14,12,9) z5 6 (8,7,4) 11 z16 z11 (2) (6,3,1) 2 16 z2 7 z17 z6 z12 () (13,12,7) (2,1) 14 5 13 18 z7 z18 z13 z3 (10,6,5) (2) (11,10,4) (15,14,9) 3 15 10 z19 z14 z8 () (5,3) (13,7)
22
Przykład (faza 1) z9 z4 z15 z1 z10 z5 z16 z11 z2 z17 z6 z12 z7 z18 z13
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 1) 4 9 z9 Iteracja: 19 A = { z2 } Wyznaczamy listy s_list() dla każdego zadania ze zbioru A. Wybieramy listę najmniejszą w sensie porządku leksykograficznego. Zadanie z2 ma najmniejszą listę. Etykietujemy je liczbą 19. z4 (1) (4) 1 17 8 z15 z1 z10 () 12 (2,1) (14,12,9) z5 6 (8,7,4) 11 z16 z11 (2) (6,3,1) 19 2 16 z2 7 z17 z6 z12 () (18,12) (13,12,7) (2,1) 14 5 13 18 z7 z18 z13 z3 (10,6,5) (2) (11,10,4) (15,14,9) 3 15 10 z19 z14 z8 () (5,3) (13,7)
23
Przykład (faza 2) Uzyskany harmonogram: Cmax = 10
Algorytm Coffmana-Grahama (Minimalizacja długości harmonogramu) Przykład (faza 2) 9 4 z9 z4 Wyznaczamy porządek zadań zgodnie z malejącymi etykietami: z2, z3, z1, z6, z8, z7, z13, z5, z11, z14, z4, z10, z12, z16, z18, z9, z19, z17, z15 1 17 8 z15 z1 z10 12 z5 6 11 Z16 z11 19 2 16 z2 7 z17 z6 z12 14 5 18 13 z7 z18 z13 z3 M2 M1 10 Uzyskany harmonogram: 3 15 10 z19 z1 z6 z7 z5 z14 z10 z16 z9 z17 z14 z8 z2 z3 z8 z13 z11 z4 z12 z18 z19 z15 Cmax = 10
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.