Definicja problemu: (P2 | pi = 1, prec | Cmax)

Slides:



Advertisements
Podobne prezentacje
TRADYCYJNE METODY PLANOWANIA I ORGANIZACJI PROCESÓW PRODUKCYJNYCH
Advertisements

Sortowanie przez scalanie
Rekurencja 1 Podprogram lub strukturę danych nazywamy rekurencyjną, (recursive subprogram, recursive data structure) jeżeli częściowo składa się z samej.
Schemat blokowy M START KONIEC
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
CIĄGI.
ALGORYTMY GRAFOWE.
Grażyna Mirkowska PJWSTK 15 listopad 2000
Metody Analizy Programów Wykład 02
Wykład 06 Metody Analizy Programów System Hoare
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Minimalne drzewa rozpinające
Algorytm Dijkstry (przykład)
PROGRAMOWANIE STRUKTURALNE
Badania operacyjne. Wykład 1
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
Nabór Optivum Narzędzie do zarządzania procesem rekrutacji elektronicznej do szkół ponadgimnazjalnych 26 marca 2017.
ALGORYTMY GEOMETRYCZNE.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Nieelitystyczne algorytmy ewolucyjnej optymalizacji wielokryterialnej
Procesor tekstu Word część 2
Metody Sztucznej Inteligencji w Sterowaniu 2009/2010Optymalizacja miary efektywności działania sztucznych sieci neuronowych Dr hab. inż. Kazimierz Duzinkiewicz,
Materiały pomocnicze do wykładu
Instrukcje 1 Definicje wstępne Formalny opis akcji wykonywanej przez komputer nazywamy instrukcją ( statement), Każda instrukcja kończona jest średnikiem.
Odkrywanie wzorców sekwencji
Instrukcja skoku GO TO etykieta Np. GO TO 100 ….. 100WRITE (*,*) Przeskok do instrukcji 100 Uwaga! NIE WOLNO skakać do wnętrzna złożonych instrukcji warunkowych.
Analiza matematyczna - Ciągi liczbowe wykład I
Algorytmika w drugim arkuszu maturalnym. Standardy wymagań I. WIADOMOŚCI I ROZUMIENIE I. WIADOMOŚCI I ROZUMIENIE II.KORZYSTANIE Z INFORMACJI II.KORZYSTANIE.
ZARZĄDZANIE PROCESAMI
Problem rozbieżności czasów jednym z wielu problemów pojawiających się w systemach rozproszonych jest rozbieżność wartości zegarów na poszczególnych węzłach-maszynach.
Podprogramy.
Kod Graya.
Zbiór do posortowania mieści się w pamięci
Szeregowanie zadań w modelu deterministycznym
SKIEROWANE Marek Bil Krzysztof Fitrzyk Krzysztof Godek.
Przegląd podstawowych algorytmów
Gramatyki Lindenmayera
Graf - jest to zbiór wierzchołków, który na rysunku przedstawiamy za pomocą kropek oraz krawędzi łączących wierzchołki. Czasami dopuszcza się krawędzie.
II Zadanie programowania liniowego PL
Szeregowanie sieciowe
Architektura komputerów
DANE INFORMACYJNE 97_10_MF_G1 i 97_93_MF_G1 Kompetencja:
Modelowanie i identyfikacja 2010/2011Optymalizacja miary efektywności działania sztucznych sieci neuronowych Dr hab. inż. Kazimierz Duzinkiewicz, Katedra.
FUNKCJA LINIOWA.
Zasady przywiązywania układów współrzędnych do członów.
Algorytm Dijkstry 1 Zbiory: T - zbiór wierzchołków
II Zadanie programowania liniowego PL
Algorytmika.
Algorytmy i Struktury Danych
Materiały pochodzą z Platformy Edukacyjnej Portalu
OKNO Eksploracja danych: kolokwium I VIII EKSPLORACJA DANYCH 1234 Spójrz gdzie siedzisz. Zadania oznaczone tym numerem są przeznaczone dla Ciebie. DRZWI.
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Algorytmy równoległe Algorytm równoległy pozwala na wykonywanie w danej chwili więcej niż jednej operacji. EREW - wyłączny odczyt i wyłączny zapis; CREW.
GRA CHOMP. Czym jest chomp? Jest to gra dla dwóch osób, rozgrywana na prostokątnej tablicy, zwanej „tabliczką czekolady”
ĆWICZENIA SENSORYCZNE – karty pracy
METODY REPREZENTOWANIA IFORMACJI
Temat 3: Podstawy programowania Algorytmy – 2 z 2 _________________________________________________________________________________________________________________.
Zarządzanie projektami
Zarządzanie projektami Problem rozdziału zasobów z ograniczeniami zasobowymi (RCPSP)
ALGORYTMY I STRUKTURY DANYCH
Algorytmy. Co to jest algorytm? Przepis prowadzący do rozwiązania zadania.
1.problem próbkowania (sampling problem) dobór charakterystycznych punktów powierzchni w celu uzyskania najlepszego efektu przy minimalizacji ilości danych.
Programowanie z z komputerem i bez.
Typy wyliczeniowe, kolekcje
Zmodyfikowany algorytm Johnsona Problem F3||Cmax
Zmodyfikowany algorytm Liu 1|pmtn,prec,rj|Lmax
Zarządzanie projektami
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

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

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ń

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

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!

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

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 ()

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 ()

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 ()

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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)

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