Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

DMBO Sieci. Wprowadzenie do grafów: Mosty w Koenigsbergu Leonard Euler zastanawiał się, czy można przejść przez każdy most tylko raz (1736)

Podobne prezentacje


Prezentacja na temat: "DMBO Sieci. Wprowadzenie do grafów: Mosty w Koenigsbergu Leonard Euler zastanawiał się, czy można przejść przez każdy most tylko raz (1736)"— Zapis prezentacji:

1 DMBO Sieci

2 Wprowadzenie do grafów: Mosty w Koenigsbergu Leonard Euler zastanawiał się, czy można przejść przez każdy most tylko raz (1736)

3 Konceptualizacja - węzły

4 Konceptualizacja - krawędzie

5 Czy istnieje spacer po wszystkich mostach, tak aby żaden się nie powtórzył?

6 Gdyby tak zbudować dwa dodatkowe mosty.

7 Każdy taki spacer musi wejść i wyjść z każdego wierzchołka dokładnie raz. Czyli stopień każdego wierzchołka musi być parzysty.

8 Cykl Eulera Cykl Hamiltona Problem komiwojażera

9 Problem komiwojażera – objazd cykl Czas trwania: 2 d 7 h 2 m Długość trasy: 3615 km

10 Problem komiwojażera – objazd ścieżka Czas trwania: 2 d 4 h 37 m Długość trasy: 3436 km

11 Problem komiwojażera – prawdziwy spacer Czas trwania: 29 d 11 h 21 m Długość trasy: 3485 km

12

13 Problem komiwojażera (travelling salesman problem TSP) Problem można zapisać matematycznie jako Zmienna decyzyjna x ij równa się 1, gdy komiwojażer przejeżdża z miasta i do miasta j, 0 w przeciwnym przypadku Możliwość przejazdu z danego miasta do tego samego miasta jest zabroniona

14 Problem komiwojażera Koszt przejazdu z miasta do miasta to d ij Funkcja celu to łączny koszt przejazdu trasy Pierwsze ograniczenie oznacza, że komiwojażer musi opuścić każde miasto dokładnie raz Drugie ograniczenie oznacza, że komiwojażer musi wjechać do każdego miasta dokładnie raz Czy to już wszystko? Załóżmy, że w problemie z 5 miastami rozwiązanie optymalne to x 12 =x 23 =x 31 =x 45 =x 54 =1 To rozwiązanie spełnia powyższe ograniczenia i może być optymalne. Jednak zawiera podtrasy (subtours) – rozłączne pętle o rozmiarze mniejszym niż wszystkie miasta Trzeba wprowadzić dodatkowe ograniczenia

15 Eliminacja podtras Pętle dla dwóch miast Pętle dla trzech miast Pętle dla czterech miast Itd. Jednak w praktycznej implementacji takich ograniczeń byłoby stanowczo za dużo – w problemie z 30 miastami byłoby 870 ograniczeń likwidujących tylko pętle dla dwóch miast

16 Eliminacja podtras – drugie podejście Wprowadzamy dodatkowe nieujemne zmienne ciągłe u i : Podtrasy są wyeliminowane Ile jest takich ograniczeń? (N-1) 2 -N, czyli w problemie z 30 miastami wszystkich ograniczeń byłoby 812, a wcześniej tylko ograniczeń dla pętl o długości dwa było 870.

17

18 Gra

19 Wprowadzenie do sieci Dwa główne elementy: – Łuki (krawędzie) [arcs/edges] – Wierzchołki [nodes] Graf [graph] to struktura, którą buduje się poprzez łączenie wierzchołków łukami Graf skierowany [directed graph] (digraf [digraph]) jest grafem, w którym łuki mają określony kierunek Sieć [network] to graf (lub digraf), w którym łuki mają przyporządkowany przepływ [flow] Oto parę prostych przykładów sieci: WierzchołkiŁukiPrzepływ MiastaAutostradySamochody Centra teleinformatyczne Przewody Przekazywane pakiety Łączenia rurociągów RuryWoda

20 Wprowadzenie do sieci Łańcuch [chain] to ciąg łuków łączących dwa wierzchołki i i j, np. ABCE, ADCE Ścieżka [path] to ciąg skierowanych łuków łączących dwa wierzchołki, np. ABDE, ale nie ABCE Cykl [cycle] to łańcuch który łączy wierzchołek z samym sobą bez żadnego powtarzania [retracing], np. ABCEDA, ale nie ABCDECBA Graf/sieć spójny/a [connected graph/network] ma tylko jedną część grafgraf skierowany

21 Wprowadzenie do sieci Drzewo [tree] – graf spójny nie mający cyklów. Drzewo rozpinające [spanning tree] to drzewo wybrane spośród łuków w grafie lub w sieci tak, aby wszystkie wierzchołki w drzewie były połączone dwa drzewa rozpinające dwa drzewa Zdolność przepływowa [flow capacity] – górna (czasem też dolna) granica ilości przepływu danego łuku w sieci, np. maksymalna ilość wody w rurociągu Źródło [source] to wierzchołek który wprowadza przeływ do sieci Zlew [sink] to wierzchołek, który wyprowadza przepływ z sieci

22 Problem najkrótszej trasy [The shortest route problem] Sformułowanie: Dla danego grafu, w którym każdy łuk oznaczony jest poprzez dystans pomiędzy wierzchołkami, które on łączy, jaka jest najkrótsza trasa pomiędzy wierzchołkiem i i innym wierzchołkiem j. Na przykład: Jaka jest najkrótsza trasa pomiędzy A i H? Wyliczenie wszystkich możliwości [enumeration] – niepraktyczne Algorytm Dijkstra

23 server.sce.carleton.ca/PO Animations2007/Dijkstras Algo.html

24 Problem najmniejszego drzewa rozpinającego [minimum spanning tree] Sformułowanie: Dla danego grafu, w którym łuki są oznaczone poprzez odległości pomiędzy wierzchołkami, które łączą, znajdź drzewo rozpinające, które ma najmniejszą łączną długość Na przykład: Znajdź minimalną długość kabla, aby połączyć wszystkie biura w budynku mając dane wszystkie dopuszczalne trasy kabli Algorytm: Przykład zachłannego algorytmu [greedy algorithm] – robi co jest najlepsze w danym kroku nie patrząc na resztę problemu (zazwyczaj nieefektywne – tutaj TAK!) Można też robić maksymalne drzewo rozpinające w ten sam sposób server.sce.carleton.ca/POAnimations 2007/MinSpanTree.html

25 Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut] Sformułowanie: Jaki jest maksymalny przepływ pomiędzy danym wierzchołkiem a jakimś innym wierzchołkiem w sieci? Na przykład: Znajdź maksymalny przepływ samochodów z parkingu podziemnego w centrum miasta do wyjazdu na autostradę? Każdemy łukowi przyporządkowujemy maksymalny możliwy jednoczesny przepływ pomiędzy dwoma wierzchołkami, które ten łuk łączy. – Przepływ może się różnic w zależności od kierunku (np. jednokierunkowe ulice) 4 samochody na minutę na trasie A- D-E-G 3 samochody na minutę na trasie A- B-E-G {jednoczesny przepływ na łuku E-G wynosi teraz 7} 4 samochody na minutę na trasie A- C-F-G Przepływ łączny 11 samochodów na minutę z A do G

26 Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut] Algorytm: Ford and Fulkerson (Canadian Journal of Mathematics 1956) server.sce.carleton.ca/POAnimations2007/MaxFlow.html

27 Dlaczego potrzeba dodawać przepływy w odwrotnym kierunku? – Konwencja rachunków, aby zaznaczyć przepływ, który, jeśli trzeba, można cofnąć. Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut]

28 Maksymalny przepływ jest związany z minimalnym cięciem: – Cięcie [cut] to każdy zbiór skierowanych łuków zawierający przynajmniej jeden łuk w każdej ścieżce ze źródła do zlewu (przeznaczenia). Jeśli usuniemy łuki z danego cięcia, to przepływ jest zupełnie odcięty. – Wartość cięcia [cut value] to suma wszystkich zdolności przepływowych w kierunku od źródła do przeznaczenia dla wszystkich łuków w cięciu. Możliwe cięcia z zaznaczonymi wartościami tych cięć Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut]

29 Twierdzenie Max-flow/min-cut Twierdzenie: Dla każdej sieci z jednym źródłem i jednym zlewem, maksymalny możliwy przepływ ze źródła do przeznaczenia równa się minimalnej wartości cięcia dla wszystkich cięć w tej sieci. Intuicja: – Maksymalny przepływ przez serię rur, równy jest ograniczony przez wąskie gardło. – Minimalne cięcie to rodzaj rozłożonego wąskiego gardła, czyli wąskiego gardła dla całej sieci w przeciwieństwie do wąskiego gardła dla serii rur. Czyli do znalezienia minimalnego cięcia można posłużyć się również algorytmem Forda-Fulkersona. – Jak już zakończy działanie algorytm, zaznacz łuki, które ciągną przepływ równy ich maksymalnej możliwości przepływu. Wtedy poszukaj cięcia, które składa się tylko z zaznaczonych łuków i żadnych innych.

30 Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut] Minimalne cięcie z wartością w kierunku do przodu równą drogi B-E, D-E, F-E oraz F-G to wąskie gardło sieci i powinno się je poszerzyć w pierwszej kolejności – Ale możesz nie dostać 1 jednostki powiększenia przepływu na każdą jednostkę dodanej zdolności przepływowej w łuku z minimalnego cięcia. – Tak się dzieje, ponieważ zwiększony przepływ przez ten łuk może aktywować nowe wąskie gardło w górze bądź w dole rzeki licząc od tego łuku. Zdolności przepływu mogą oznaczać koszty. Wówczas minimalne cięcie oznacza minimalny koszt zablokowania przepływu w całej rzece.

31 Programowanie przepływów sieciowych [Network flow programming] Formułowanie i rozwiązywanie problemów sieciowych poprzez programowanie liniowe nazywamy programowaniem przepływów sieciowych. Każdy problem przepływów sieciowych może być przedstawiony jako program przepływów sieciowych minimalnego kosztu [Minimum-cost network flow program]: Zmienne: nieznane przepływy przyporządkowane łukom Zachowanie przepływu w wierzchołkach: Źródło [source] lub zlew [sink] :

32 Programowanie przepływów sieciowych [Network flow programming] Ograniczenia przepływów na łukach: mogą być dolne (np. minimalny wskaźnik produkcji w fabryce) {bazowa wartość 0} bądź górne (np. maksymalny przepływ przez rurę) {bazowa wartość +} – przepływy nie powinny być ujemne (traci się przejrzystość przedstawienia sieci) Koszt jednostki przepływu {wartość bazowa 0}: (jeśli ujemny to jest to przychód) Funkcja celu: Są trzy parametry dla każdego łuku: [l, u, c] – Ograniczenie dolne l – Ograniczenie górne u – Koszt jednostki przepływu c

33 Diagram a program liniowy Relacja 1:1 Od teraz odpowiednio oznaczony diagram uważać będziemy za równoważny sformułowaniu programu liniowego.

34 Właściwości Współczynniki przy zmiennych występujących po lewej stronie ograniczeń przyjmują wartości -1,0 lub 1 Wszystkie operacje pivot w algorytmie simplex składają się li tylko z dodawania i odejmowania (nie ma potrzeby mnożenia) Jeszcze lepiej: operacje dodawania i odejmowania mogą być zastąpione poprzez operacje logiczne w sieciowym algorytmie sympleks [Network simplex algorithm] Jeśli po prawej stronie wszystkich ograniczeń są liczby całkowite i wszystkie operacje pivot są operacjami dodawania i odejmowania, to zmienne decyzyjne w optymalnym rozwiązaniu też będą całkowite – właściwość unimodularności [unimodularity property] – Bardzo użyteczne w rozwiązywaniu wielu zadań programowania całkowitoliczbowego, np. zadań przyporządkowania [assignment problem]

35 Problem transportowy Prosty, ale bardzo przydatny w praktyce Składa się ze zbioru źródeł produktów (np. fabryki), które są bezpośrednio połączone z punktami przeznaczenia (np. rynki w różnych miastach). Każdemu połączeniu przyporządkowany jest koszt na jednostkę przepływu – Podaż nie większa niż zdolność danej fabryki – Popyt dokładnie równy dostarczonym produktom – Każdy łuk ma bazowe dolne i górne ograniczenie i koszt (w nawiasie)

36 Problem przyporządkowania [assignment problem] Pojawia się również jako problem programowania całkowitoliczbowego. Przyporządkowanie zbioru ludzi do zbioru zadań tak, aby zminimalizować łączny czas wykonania zadań. – Każda osoba potrzebuje pewną ilość czasu na wykonanie danego zadania albo nie jest w stanie w ogóle tego zadania wykonać. – Każda osoba może być przyporządkowana do dokładnie jednego zadania.

37 Problem przyporządkowania może być sformułowany w postaci sieci transportowej: – Każda osoba to wierzchołek źródłowy, który wprowadza dokładnie jedną jednostkę przepływu do sieci (jeśli jest więcej osób niż zadań: nie więcej niż jedną jednostkę) – Każde zadanie to wierzchołek przeznaczenia, który usuwa z sieci dokładnie jedną jednostkę przepływu – Koszt przepływu na każdym łuku to ilość minut danej osoby/dane zadanie Optymalne przepływy w łukach będą równe dokładnie 0 lub dokładnie 1 – Z powodu własności unimodularności będą liczbami całkowitymi – Ponieważ źródła i punkty przeznaczenia mają przypływy i odpływy równe dokładnie 1 Problem przyporządkowania [assignment problem]

38 Problem transportowy z przeładunkami [transshipment problem] Tak jak problem transportowy, ale dodatkowo: – są wierzchołki, które zachowują przepływ [flow conserving nodes] – punkty przeładunku – wierzchołki źródłowe i przeznaczenia mogą również służyć za punkty przeładunku – B jest jednocześnie źródłem i punktem przeładunku – G jest jednocześnie punktem przeznaczenia i punktem przeładunku – D i E są tylko punktami przeładunku

39 Problem najkrótszej trasy [shortest route problem] Zamiast algorytmu Dijkstra można rozwiązać programowaniem sieciowym Postępowanie jest następujące: – Stwórz diagram sieciowy – Zapisz etykiety łuków: ograniczenie dolne 0, ograniczenie górne +, koszt = długość łuku, np. [0,,12] – Punkt początkowy jest wierzchołkiem źródłowym z dokładnie jedną jednostką przepływu bez kosztu za jednostkę przepływu, zatem [1,1,0] – Punkt końcowy jest wierzchołkiem przeznaczenia z dokładnie jedną jednostką przepływu bez kosztu za jednostkę przepływu, a więc [1,1,0] Łuki z dodatnim przepływem będą na najkrótszej trasie. Dzięki własności unimodularności przepływ na łuku będzie 0 albo 1.

40 Problem drzewa najkrótszej trasy [shortest route tree problem] Tak samo jak problem najkrótszej trasy tylko, że wierzchołków przeznaczenia może być wiele (jeśli nie wszystkie) Problem to znalezienie najkrótszej trasy z punktu początkowego do każdego punktu końcowego Można rozwiązać wiele problemów najkrótszej trasy zmieniając punkt końcowy, ale prostszy sposób to rozwiązać to za pomocą jednego problemu. Załóżmy, że jest n wierzchołków przeznaczenia. Postępowanie: – Stwórz diagram sieciowy – Zapisz etykiety łuków: ograniczenie dolne 0, ograniczenie górne +, koszt = długość łuku, np. [0,,12] – Punkt początkowy jest wierzchołkiem źródłowym z dokładnie n jednostkami przepływu bez kosztu za jednostkę przepływu, zatem [n,n,0] – Punkt końcowy jest wierzchołkiem przeznaczenia z dokładnie jedną jednostką przepływu bez kosztu za jednostkę przepływu, a więc [1,1,0] W optimum tylko całkowite przepływy (unimodularność). Należy zaznaczyć wszystkie łuki, które mają dodatni przepływ. Najkrótszą trasę znajdujemy od tyłu. Począwszy od danego wierzchołka końcowego poruszamy się zaznaczonymi łukami w kierunku wierzchołka początkowego.

41 Maksymalny przepływ / Minimalne cięcie [Max flow / Min cut problem] Zamiast algorytmu Forda-Fulkersona możemy zastosować programowanie sieciowe – problem przepływu sieciowego o minimalnym koszcie. Postępowanie jest następujące: – Stwórz diagram sieciowy – Stwórz etykiety dla każdego łuku: dolne ograniczenie 0, górne ograniczenie równe maksymalnemu przepływowi dla tego łuku i koszt przepływu 0, np. [0,25,0] – Stwórz wierzchołek początkowy z bardzo wysokim górnym ograniczeniem bez kosztu za przepływ, a więc [0,M,0], gdzie M jest bardzo dużą liczbą – Niech każdy wierzchołek końcowy będzie potencjalnym odpływem [sink node] z bardzo wysoką zdolnością przepływową i z kosztem na jednostkę przepływu równym -1, a więc [0,M,-1], gdzie M jest bardzo dużą liczbą W optimum: rozważmy wierzchołek przeznaczenia. Ma on koszt na jednostkę -1. Funkcja celu to minimalizacja kosztu, zatem program będzie chciał przepuścić jak najwięcej przez ten wierzchołek. W wierzchołku źródłowym będzie również chciał przepuścić jak najwięcej. Ograniczeniem będzie przepustowość sieci (czyli jej poszczególnych łuków)

42 Rozwiązanie problemu przepływu o najniższym koszcie dostarczy następujących informacji: – Odpływ z sieci w wierzchołku przeznaczenia równa się maksymalnemu przepływowi sieci – Przepływy w poszczególnych łukach tworzą schemat przepływów w maksymalnym przepływie sieci Minimalne cięcie znajdujemy tak samo, jak po skończeniu algorytmu Forda-Fulkersona: Zaznacz łuki, które wykorzystują całą swoją zdolność przepływu. Znajdź cięcie wykorzystujące wyłącznie zaznaczone łuki. Jaka jest dobra wartość M? – Nie za mała – musi być na pewno większa niż maksymalny przepływ, którego szukamy – Nie za duża – żeby uniknąć problemów numerycznych – Dobra propozycja – wartość przypadkowego cięcia w sieci, ponieważ wiemy z twierdzenia max flow/min cut, że wartość cięcia będzie nie mniejsza niż wartość maksymalnego przepływu w sieci Maksymalny przepływ / Minimalne cięcie [Max flow / Min cut problem]

43 Sieci uogólnione [generalized networks], sieci z ograniczeniami pomocniczymi [network with side constraints] oraz sieci procesowe [processing networks] W sieci uogólnionej, łuki mają współczynniki przyrostu [gain factors]: czyli liczby, które wymnaża się przepływ wchodzący do danego łuku, aby uzyskać przepływ wychodzący z łuku – Np. współczynnik przyrostu (a raczej obniżenia) 0,9 może oznaczać nieszczelny rurociąg – Np. współczynnik przyrostu 1,1 może oznaczać wzrost wartości obiektu w sieci transportowej z wartością obiektu jako przepływami Sieci z ograniczeniami pomocniczymi – może zajść potrzeba dodania dodatkowego ograniczenia, które nie jest sieciowe (współczynniki przy zmiennych -1, 0 i 1), np. – Specjalistyczne algorytmy dla sieci z ograniczeniami pomocniczymi (część sieciowa rozwiązywana za pomocą szybkiego algorytmu sieciowego a reszta normalnie i potem te rozwiązania są łączone) Sieci procesowe – bardzo przydatne do modelowania systemów inżynierskich bądź firm, takie sieci mają dodatkowo wierzchołki procesujące [processing nodes], w których przepływy w sąsiadujących łukach muszą występować w ściśle określonych proporcjach względem siebie

44 Model z 1963 roku Mamy dwie fabryki (Seattle i San Diego) i trzy rynki zbytu (New York, Chicago i Topeka) Uwzględniając popyt rynków zbytu oraz podaż fabryk celem jest minimalizacja kosztów transportu homogenicznego towaru pomiędzy fabrykami a rynkami zbytu

45 Cel: minimalizacja całkowitego kosztu transportu Decyzja: jak dużo przewieźć z fabryki A do rynku zbytu B Subskrypty: – i: fabryki – j: rynki zbytu Dane: – Podaż towaru w fabryce i (w skrzyniach): – Popyt na towar na rynku j (w skrzyniach): – Koszt na przewozu jednej skrzyni z fabryki i do rynku j: Zmienne decyzyjne – liczba skrzyń przewożonych pomiędzy i a j Ograniczenia – Ograniczona podaż: – Trzeba zaspokoić popyt:

46

47

48 1) Echo Print

49 1) Echo Print cd. 2) Error Messages normalnie są tutaj i tutaj się kończy wtedy 3) Equation Listing

50 3) Equation Listing cd.

51 4) Model Statistics 5) Status Report: Solver i Model Status

52 6) Solution Reports

53 6) Solution Reports cd. 7) Report summary

54 8) Execution i Display

55 Sets Deklaracja i przypisanie Data: Parameters Tables Scalars

56 Variables: Deklaracja i przypisanie typu Equations: Deklaracja i definicja Komendy Model i Solve Opcjonalnie Display

57 Deklaracja – stwierdzenie istnienia czegoś i nadanie temu czemuś nazwy Przypisanie/definicja – nadanie czemuś konkretnej wartości lub formy


Pobierz ppt "DMBO Sieci. Wprowadzenie do grafów: Mosty w Koenigsbergu Leonard Euler zastanawiał się, czy można przejść przez każdy most tylko raz (1736)"

Podobne prezentacje


Reklamy Google