Optymalizacja dyskretna - metoda podziału i ograniczeń - Notatki - Badania operacyjne, Notatki'z Badania Operacyjne. University of Szczecin
Osholom
Osholom5 March 2013

Optymalizacja dyskretna - metoda podziału i ograniczeń - Notatki - Badania operacyjne, Notatki'z Badania Operacyjne. University of Szczecin

PDF (504 KB)
7 strona
1Liczba pobrań
1000+Liczba odwiedzin
Opis
Notatki dotyczące badań operacyjnych: optymalizacja dyskretna - metoda podziału i ograniczeń.
20punkty
Punkty pobierania niezbędne do pobrania
tego dokumentu
Pobierz dokument
Podgląd3 strony / 7
To jest jedynie podgląd.
3 shown on 7 pages
Pobierz dokument
To jest jedynie podgląd.
3 shown on 7 pages
Pobierz dokument
To jest jedynie podgląd.
3 shown on 7 pages
Pobierz dokument
To jest jedynie podgląd.
3 shown on 7 pages
Pobierz dokument

Optymalizacja dyskretna - metoda podziału i ograniczeń

Wprowadzenie

Ogólna idea metody podziału i ograniczeń polega na uporządkowanym

przeszukiwaniu zbioru rozwiązań zadania optymalizacyjnego, o którym zakładamy że jest skończony. Zbiór wszystkich rozwiązań (D) dzieli się sukcesywnie na mniejsze podzbiory (podział) a dla każdego podzbioru oblicza się kres dolny czyli oszacowanie z dołu wartości funkcji celu (minimalizacja). W kolejnych krokach dokonujemy podziału tych zbiorów, które mają najmniejszą wartość kresu dolnego (minimalizacja). Podział postępuje do chwili znalezienia rozwiązania dopuszczalnego, dla którego wartość funkcji celu jest nie większa niż najmniejsze dolne ograniczenie wszystkich nie podzielonych

podzbiorów (ograniczenie). W najgorszym przypadku należy sprawdzić wszystkie rozwiązania, co przesądza o wykładniczej złożoności obliczeniowej tej metody. Dla wyliczenia kresów dolnych (minimalizacja) należy zdefiniować funkcję ograniczającą „w”. Musi ona spełniać następujące warunki (minimalizacja):

Efektywność metody podziału i ograniczeń zależy od jakości oszacowań kresów dla każdego podzbioru. Im te oszacowania są dokładniejsze, tym mniej potrzeba podziałów. Idealna funkcja ograniczająca jest następująca:

} )(min{)( ii DxxfDw 

Metodę podziału i ograniczeń wykorzystuje się z powodzeniem do rozwiązywania szerokiej klasy zadań o charakterze kombinatorycznym: programowanie całkowitoliczbowe, szeregowanie zadań niepodzielnych, problem komiwojażera, problem lokalizacji, problem plecakowy, problem przydziału i inne.

Algorytm

Niech D będzie skończonym zbiorem rozwiązań dopuszczalnych. Przez L(D’) oznaczymy dolną granicę wartości funkcji celu f na pewnym podzbiorze D’ zbioru rozwiązań D (w szczególności D’=D) a przez k numer kroku podziałowego. Krok 1. Oblicz L(D). Jeśli uda się znaleźć takie rozwiązanie x, że f(x)=L(D), to x jest rozwiązaniem optymalnym. W przeciwnym razie podziel według określonego sposobu zbiór D na skończoną liczbę podzbiorów:

D D D Dr   1 1

2 1

1 1...

podstaw k:=1 i przejdź do kroku 2.

Krok 2. Oblicz L Di k( ) i = 1.. rk . Jeśli przy tym uda się znaleźć takie rozwiązanie x, że

x Dr k dla danego r (1<=r<=rk) i f x L D L Dr

k i k( ) ( ) ( )  , i=1..rk, to x jest rozwiązaniem

optymalnym. W przeciwnym razie wybierz podzbiór Dv k k ( ) według zasady:

L D L Dv k k

i rk i k( ) min { ( )}( )

,,  1

i podziel go na skończoną liczbę (zwykle rozłącznych) podzbiorów

D D D Dv k k

v k k

v k k

v k s k k

( ) ( ), ( ), ( ), ( )...   1 2

Krok 3. Wszystkie nie podzielone dotąd podzbiory

)()(}{

)()(

)()(

11

1212

11

xfDwDxD

DwDwDDD

DwxfDDx







docsity.com

D D D D D D D Dk k v k k

v k k

rk k

v k k

v k k

v k s k k

1 2 1 1 1 2, , ... , , , ... , , , , ... ,( ) ( ) ( ), ( ), ( ), ( ) 

oznacz przez

D D Dk k rk k

1 1

2 1

1 1   , , ... ,

podstaw k:=k+1 i wróć do kroku 2. Do realizacji opisanego schematu metody podziału i ograniczeń jest konieczne skonkretyzowanie  zasady podziału  wyznaczania dolnych ograniczeń  znajdowania rozwiązania

Należy zwrócić uwagę na sposób realizacji zasady wyboru podzbioru do podziału (krok 2). Zamiast sprawdzania dolnych ograniczeń wszystkich nie podzielonych podzbiorów, można ograniczyć się do podzbiorów wynikających z ostatniego podziału. Zaletą pierwszego sposobu (na ogół) jest mniejsza liczba podziałów, potrzebny jest jednak większy obszar pamięci do przechowywania informacji o wszystkich nie podzielonych podzbiorach. Drugi sposób to na ogół większa liczba podziałów lecz mniejsza zajętość pamięci.

Przykład

Dany jest zbiór „m” różnych wyrobów, z których każdy może być produkowany na jednym z „m” stanowisk produkcyjnych. Każde ze stanowisk ma różną wydajność przy produkcji każdego z wyrobów. Wydajność i-tego stanowiska przy produkcji j-tego wyrobu jest równa cij, a ponadto każde ze stanowisk ma produkować dokładnie jeden wyrób i każdy z wyrobów ma być produkowany na dokładnie jednym stanowisku. Należy przydzielić wyroby do stanowisk, by łączna wydajność była maksymalizowana.

Problem ten nazywa się problemem przydziału i można zapisać go formalnie w sposób następujący:

   



 

razie przeciwnym w0

osobę tą-i przez e wykonywanj zadanie 1

1

1 .

max

1

1

1 1

ij

m

j

ij

m

i

ij

m

i

m

j

ijij

xgdzie

x

xogr

xcz

Problem przydziału jest szczególnym przypadkiem problemu transportowego

WYRÓB / STANOWISKO

1 2 3 4

A 2 10 9 7

B 15 4 14 8

C 13 14 16 11

D 4 15 13 9

Problem komiwojażera - Algorytm Little’a

Metoda podziału i ograniczeń może być zastosowana dla rozwiązania problemu komiwojażera. Algorytm został podany przez Little’a.

docsity.com

Zbiór rozwiązań (wierzchołek w drzewie poszukiwań) będziemy rozbijać na dwa podzbiory:  zawierający wyróżniony łuk <i,j>  nie zawierający łuku <i,j> Podział będzie dokonywany z pewną zasadą heurystyczną, opisaną poniżej. Po wykonaniu podziału liczone są kresy dolne na drodze redukcji macierzy kosztów przejść. Podzbiory rozwiązań mające wartości kresów dolnych większe lub równe długości najkrótszego dotychczas znalezionego rozwiązania będą pomijane (ograniczamy w ten sposób przestrzeń poszukiwań). Przykład:

Dana jest macierz kosztów przejść „C” („” oznacza koszt o nieskończonej wartości): Macierz

C 1 2 3 4

1  2 7 3

2 7  8 5

3 9 4  6

4 3 8 5 

Niech G0 oznacza początkowy zbiór rozwiązań. W celu wyznaczenia kresu dolnego dla G0 dokonujemy redukcji macierzy C  w każdym wierszu znajdujemy element minimalny i odejmujemy go od wszystkich

elementów danego wiersza  ten sam proces wykonujemy dla kolumn. Po wykonaniu redukcji macierzy, w każdym wierszu i każdej kolumnie powinien znaleźć się element zerowy. Suma wielkości, które odjęliśmy (stopień redukcji macierzy R) dodawana jest do dotychczasowej wartości dolnego ograniczenia (wartość początkowa dolnego ograniczenia = 0):

Macierz

C0 1 2 3 4

1  0 3 1 -2

2 2  1 0 -5

3 5 0  2 -4

4 0 5 0  -3

-2 R=16 Po redukcji: (dolne ograniczenie = 16). Kandydatami do wykonania podziału są następujące odcinki (mające w tej zredukowanej macierzy koszt równy 0): <1,2>,<2,4>,<3,2>,<4,1>,<4,3>. Wybieramy ten z nich, który posiada najwyższy optymistyczny koszt wyłączenia. Jeżeli wyłączymy odcinek <i,j>, to z miasta „i” musimy wyruszyć do miasta innego niż „j”, a do miasta „j” musimy przybyć z miasta różnego od „i”. Rozważmy dla przykładu odcinek <2,4> Jeżeli wyłączymy ten odcinek, to z miasta 2 musimy wyruszyć do miasta różnego od 4, a minimalny koszt z tym związany jest równy 1 (minimalna wartość w wierszu 2 różna od tej na pozycji 2,4). Z kolei do miasta 4 trzeba dotrzeć z miasta różnego od 2 i minimalny koszt z tym związany jest równy 1 (minimalna wartość w kolumnie 4 różna od tej na pozycji 2,4). Suma tych wartości (2) jest optymistycznym kosztem który na pewno musimy ponieść wyłączając odcinek <2,4>. Wartości tych kosztów podane są w postaci indeksów przy elementach zerowych:

macier 1 2 3 4

docsity.com

z C0

1  01 3 1 -2

2 2  1 02 -5

3 5 02  2 -4

4 02 5 01  -3

-2 R=16 W naszym wypadku aż trzy odcinki mają optymistyczny koszt wyłączenia równy 2. Arbitralnie wybieramy odcinek <2,4> tworząc zbiory marszrut G1 i G2 zawierające lub nie zawierające tego odcinka.

Weźmy pod uwagę zbiór G1. Tworzymy macierz C1 usuwając z macierzy C0 wiersz 2 i kolumnę 4 oraz przyjmując c42= (blokujemy drogę przeciwną). Zmodyfikowana i zredukowana macierz C1 znajduje się poniżej: Macierz

C1 1 2 3

1  03 3

3 5 05 

4 05  03

R=0 Weźmy pod uwagę zbiór G2. Tworzymy macierz C2 z macierzy C0 przyjmując c24=. Zmodyfikowana i zredukowana macierz C2 znajduje się poniżej: macier z C2

1 2 3 4

1  00 3 01

2 1  01  -1

3 5 01  1

4 01 5 00 

-1 R=2 Do dalszego podziału wybieramy wierzchołek o najmniejszej wartości kresu dolnego G1. Z tablicy C1 wynika, że tylko odcinki <3,2> oraz <4,1> mogą być rozpatrywane (zerowy koszt, maksymalna optymistyczna wartość kosztu wyłączenia 5). Arbitralnie wybieramy <3,2> tworząc zbiory G3 i G4.

Weźmy pod uwagę zbiór G3. Tworzymy macierz C3 usuwając z macierzy C1 wiersz 3 i kolumnę 2. Nie dokonujemy podstawienia c32=, gdyż ten element został już wyeliminowany. Zmodyfikowana i zredukowana macierz C3 znajduje się poniżej: Macierz

C3 1 3

1  0 -3

4 0 00

G 1 (16)

<2,4>

G 2 (18)

~<2,4>

G 0 (16)

G 0 (16)

docsity.com

R=3 Weźmy pod uwagę zbiór G4. Tworzymy macierz C4 z macierzy C1 przyjmując c32=.

Zmodyfikowana i zredukowana macierz C4 znajduje się poniżej:

Macierz C4

1 2 3

1  0 3

3 0   -5

4 00  03

R=5

Do dalszego podziału wybieramy wierzchołek o najmniejszej wartości kresu dolnego G2.

Z tablicy C2 wynika, że tylko odcinki <1,4> <2,3> oraz <3,2> mogą być rozpatrywane (zerowy koszt, maksymalna optymistyczna wartość kosztu wyłączenia 1). Arbitralnie wybieramy <1,4> tworząc zbiory G5 i G6. Weźmy pod uwagę zbiór G5. Tworzymy macierz C5 usuwając z macierzy C2 wiersz 1 i kolumnę 4. Ponadto dokonujemy podstawienia c41=. Zmodyfikowana i zredukowana macierz C5 znajduje się poniżej:

macier z C5

1 2 3

2 04  00

3 4 09 

4  5 05

-1 R=1 Weźmy pod uwagę zbiór G6. Tworzymy macierz C6 z macierzy C2 przyjmując c14=. Zmodyfikowana i zredukowana macierz C6 znajduje się poniżej: macier z C2

1 2 3 4

1  03 3 

2 1  01 

3 5 00  0

4 01 5 00 

-1 R=1

G 1 (16)

<2,4>

G 2 (18)

~<2,4>

G 0 (16)

G 1 (16)

<2,4>

G 2 (18)

~<2,4>

G 3 (19)

<3,2>

G 4 (21)

~<3,2>

G 0 (16)

docsity.com

Do dalszego podziału wybieramy wierzchołek o najmniejszej wartości kresu dolnego G3. Z tablicy C3 wynika, że tylko odcinki <1,3> oraz <4,1> mogą być rozpatrywane (zerowy koszt, maksymalna optymistyczna wartość kosztu wyłączenia ). Arbitralnie wybieramy

<1,3> tworząc zbiory G7 i G8. Weźmy pod uwagę zbiór G7. Tworzymy macierz C7 usuwając z macierzy C3 wiersz 1 i kolumnę 3. Macierz redukuje się do jednego elementu. Zmodyfikowana i zredukowana macierz C7 znajduje się poniżej: Macierz

C7

1

4 0

R=0 UWAGA – z tej macierzy wynika, że dołączając do wierzchołka G7 jedyną możliwą marszrutę <4,1> otrzymujemy rozwiązanie końcowe, dla którego wartość funkcji kosztu równa się kresowi dolnemu równemu 19. Oznaczmy to rozwiązanie przez wierzchołek G9. Weźmy pod uwagę zbiór G8. Tworzymy macierz C8 z macierzy C3 . Podstawiamy za c13=. Zmodyfikowana macierz C

8 znajduje się poniżej: UWAGA – koszt redukcji wynosi  (patrz wiersz 1). Kres dolny byłby równy także . Oznacza to, że wierzchołek ten nie będzie dalej dzielony – można dowieść, że nie odpowiada mu żadna marszruta. Pomijamy więc w dalszych rozważaniach ten wierzchołek. Macierz

C8 1 3

1  

4 0 00

R =  (!)

G 1 (16)

<2,4>

G 2 (18)

~<2,4>

G 3 (19)

<3,2>

G 4 (21)

~<3,2>

G 0 (16)

G 5 (19)

<1,4>

G 6 (19)

~<1,4>

G 7 (19)

<1,3>

G 8 (*)

~<1,3>

G 3 (19)

<3,2>

G 4 (21)

~<3,2>

G 5 (19)

<1,4>

G 6 (19)

~<1,4>

docsity.com

Podział pozostałych zbiorów nie może dać rozwiązania lepszego. Otrzymane rozwiązanie jest optymalne, choć niekoniecznie jedyne. W celu stwierdzenia czy istnieją inne rozwiązania, należałoby dokonać podziału zbiorów G5 i G6.

G 9 (19)

<4,1>

docsity.com

komentarze (0)
Brak komentarzy
Bądź autorem pierwszego komentarza!
To jest jedynie podgląd.
3 shown on 7 pages
Pobierz dokument