Transcript slajdy

Badania operacyjne
Wykład 6
Idea branch and bound
•
•
•
Mamy trzy zmienne decyzyjne x1 (zmienna całkowito-liczbowa) i dwie zmienne
binarne x2 i x3 oraz ograniczenia 1 ≤ x1 ≤ 3, 0 ≤ x2 ≤ 1, 0 ≤ x3 ≤ 1
Poniżej jest drzewo pełnego wyliczenia możliwości [full enumeration tree]
Zamiast budować całe drzewo na raz, buduj drzewo stopniowo, rozwijając tylko
najbardziej obiecujące wierzchołki na każdym etapie. Najbardziej obiecujące
wierzchołki są wskazywane poprzez estymowanie ograniczenia na najlepszą wartość
funkcji celu, jaka może być osiągnięta poprzez rozwinięcie danego wierzchołka w
następnych etapach.
Podstawowe pojęcia
• Rozgałęzianie
[Branching]
• Ograniczanie
[Bounding]
– Sądowanie
[fathoming]
• Podcinanie
[Prunning]
Pojęcia:
• wierzchołek [node] każde częściowe lub pełne
rozwiązanie
• liść [leaf node] pełne rozwiązanie
• pączek [bud node] częsciowe rozwiązanie
dopuszczalne lub niedopuszczalne
• funkcja ograniczająca [bounding function] – metoda
estymacji dla pączków, musi być optymistyczna
• rozgałęzianie [branching], rozwijanie [growing],
ekspansja [expanding] wierzchołka – proces kreowania
wierzchołków dzieci dla pączka
• tymczasowe rozwiązanie [incumbent]
Trzy popularne systemy selekcji wierzchołków [node
selection policy]
• Best-first / global-best node selection
• Depth-first
• Breadth-first
Przykład – problem przyporządkowania
• Znaczenie wierzchołka w drzewie:
– Częściowe lub pełne przyporządkowanie ludzi do zadań
• System selekcji wierzchołków: global best
• System selekcji zmiennych: wybierz następne zadanie w naturalnej
kolejności 1 do 4
• Funkcja ograniczająca: dla nieprzyporządkowanych zadań wybierz
najlepszą nieprzyporządkowaną osobę, nawet jeśli będzie wybrana
parę razy
• Reguła zakończenia: kiedy wartość funkcji celu dla tymczasowego
rozwiązania jest lepsza lub równa do wartości funkcji ograniczającej
dla wszystkich pączków
• Sądowanie: rozwiązanie wygenerowane przez funkcję ograniczającą
jest dopuszczalne jeśli każde zadanie jest przyporządkowane do
różnych osób.
Jak powstają wartości funkcji ograniczającej?
• Popatrzmy na wierzchołek pierwszego etapu, który oznacza
przyporządkowanie osoby A do zadania 1.
• Zbiór rozwiązań reprezentowanych przez ten wierzchołek to A???
–
–
–
–
Faktyczna wartość przyporządkowania A do zadania 1 to: 9
Najlepsza nieprzyporządkowana osoba dla zadania 2 to C, wartość: 1
Najlepsza nieprzyporządkowana osoba dla zadania 3 to D, wartość: 2
Najlepsza nieprzyporządkowana osoba dla zadania 4 to C, wartość: 2
• Rozwiązanie funkcji ograniczającej to ACDC z kosztem całkowitym
=9+1+2+2=14.
– Wiemy, że w najlepszym wypadku wartość funkcji celu dla
wierzchołków pochodzących od A??? To 14. To nie jest dopuszczalne
rozwiązanie, bo osoba C jest przyporządkowana do dwóch zadań.
Osoba A jest faktycznie przyporządkowana.
Tworzymy drzewo
Pierwszy etap: korzeń drzewa
Przycięte wierzchołki mają przerywane obrzeża
Dopuszczalne wierzchołki mają pogrubione obrzeża
Przycięte dopuszczalne wierzchołki mają to i to
Drugi etap:
• Wierzchołek C??? Jest
wysądowany – pierwsze
tymczasowe rozwiązanie
dopuszczalne CBDA=13
• To nam pozwala przyciąć
wierzchołek A???, którego
wartość funkcji
ograniczającej wynosi 14.
• Dwa pączki, które dają
nadzieję na poprawę B??? i
D??? – global best:
wybieramy D???
Tworzymy drzewo
Trzeci etap:
• Nie ma nowych
dopuszczalnych rozwiązań,
czyli rozwiązanie
tymczasowe się nie zmienia.
• Nowe wierzchołki nie mogą
być przycięte poprzez
porównanie z rozwiązaniem
tymczasowym lub
wysądowane.
• Wybieramy global best
spośród B??? (9), DA?? (12),
DB?? (10) oraz DC?? (12)
• A zatem B???
Tworzymy drzewo
Czwarty etap:
• Sądujemy dwa wierzchołki BA??
oraz BC??
• Nowe tymczasowe rozwiązanie
dopuszczalne to BCDA=12
• Wycinamy dotychczasowe
rozwiązanie CBDA
• BA?? jest dopuszczalne, ale
wycinamy w porównaniu z nowym
rozwiązaniem tymczasowym
• Wycinamy wierzchołki DA?? i DC??
Poprzez porównanie z
tymczasowym rozwiązaniem
• Gdybyśmy chcieli znaleźć
wszystkie rozwiązania a nie
tylko jedno możemy w
przyszłości je analizować dalej
• Zostaje nam tylko jeden pączek
DB??.
Tworzymy drzewo
Piąty etap:
• DBAC ma lepszą
wartość niż
dotychczasowe
rozwiązanie, zatem je
zastępuje I wycina
poprzednie
• DBCA jest wycięte
poprzez porównanie z
tymczasowym
• Nie ma innych pączków
do ekspansji, więc
kończymy
• Przeanalizowaliśmy 13
wierzchołków zamiast
24
• Dla większych
problemów znaczne
przyspieszenie
Dobra funkcja ograniczająca jest kluczem
• Problem komiwojażera: odwiedzić każde miasto dokładnie raz i powrócić
do punktu wyjścia
• Załóżmy, że mamy częściowe rozwiązanie (pogrubione)
• Bardzo sprytna funkcja ograniczająca: minimalne drzewo rozpinające na
wierzchołkach nieodwiedzonych i wierzchołku początkowym i końcowym
częsciowej trasy
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
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
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
dwa drzewa rozpinające
• 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
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?
ANIMACJA 1
Wyliczenie wszystkich możliwości [enumeration] – niepraktyczne
Algorytm Dijkstra
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:
ANIMACJA 2
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
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 AD-E-G
3 samochody na minutę na trasie AB-E-G
{jednoczesny przepływ na łuku E-G
wynosi teraz 7}
4 samochody na minutę na trasie AC-F-G
Przepływ łączny 11 samochodów na
minutę z A do G
Maksymalny przepływ i minimalne cięcie
[maximum flow and the minimum cut]
• Algorytm: Ford and Fulkerson (Canadian Journal of
Mathematics 1956)
ANIMACJA 3
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ąć.
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ęć
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.
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.