Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
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
13
Problem komiwojażera (travelling salesman problem TSP)
Problem można zapisać matematycznie jako Zmienna decyzyjna xij 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 dij
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 x12=x23=x31=x45=x54=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 ui: 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.
18
Gra
19
Centra teleinformatyczne
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 Łuki Przepływ Miasta Autostrady Samochody Centra teleinformatyczne Przewody Przekazywane pakiety Łączenia rurociągów Rury Woda
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ęść graf graf 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
Algorytm Dijkstra
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
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)
27
Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut]
Dlaczego potrzeba dodawać przepływy w odwrotnym kierunku? Konwencja rachunków, aby zaznaczyć przepływ, który, jeśli trzeba, można cofnąć.
28
Maksymalny przepływ i minimalne cięcie [maximum flow and the minimum cut]
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ęć
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ą 14. 4 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 [assignment problem]
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
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
Maksymalny przepływ / Minimalne cięcie [Max flow / Min cut problem]
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
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:
48
1) Echo Print
49
1) Echo Print cd. 3) Equation Listing 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
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.