Docsity
Docsity

Przygotuj się do egzaminów
Przygotuj się do egzaminów

Studiuj dzięki licznym zasobom udostępnionym na Docsity


Otrzymaj punkty, aby pobrać
Otrzymaj punkty, aby pobrać

Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium


Informacje i wskazówki
Informacje i wskazówki

Badania operacyjne, metody optymalizacji część 2, Notatki z Ekonomia

Notatki z ekonomii przedstawiające zagadnienia z zakresu badań operacyjnych jak optymalizacja dyskretna, metoda podziału i ograniczeń.

Typologia: Notatki

2012/2013

Załadowany 13.09.2013

Osholom
Osholom 🇵🇱

4.5

(35)

304 dokumenty

Podgląd częściowego tekstu

Pobierz Badania operacyjne, metody optymalizacji część 2 i więcej Notatki w PDF z Ekonomia tylko na Docsity! P2 1 1 0 1 -1 0 -1 1 Wsk. Opt. 3 0 0 1 0 -1 1 -M Otrzymaliśmy rozwiązanie zdegenerowane – jedna ze zmiennych bazowych jest równa zeru.  we=3 (do bazy wchodzi wektor P3)  =min {1/1, 0/2} = 0 - z bazy usuwamy wektor P4 Baza cB P0 2 1 0 0 0 M P1 P2 P3 P4 P5 P6 P1 2 1 1 0 0 -½ -1 1 P3 0 0 0 0 1 ½ 1 0 P2 1 1 0 1 0 ½ 0 1 Wsk. Opty. 3 0 0 0 -½ -2 3 Koniec: z*=2; x1*=1; x2*=1; x3*=0; x4*=0; x5*=0; Rozwiązanie zdegenerowane! 2.6 Postępowanie w przypadku degeneracji Zdegenerowane rozwiązanie dopuszczalne posiada pewne rozwiązania bazowe równe zeru. Dla rozwiązania dopuszczalnego zdegenerowanego istnieje możliwość obliczenia „tety” równej zeru: = x ( i,we x x x x dla x wy wy we i B i we i B , , min | )0 0 0 (2.11) Wprowadzenie nowego wektora do bazy nie zmieni więc wartości funkcji celu. Teoretycznie można wejść w cykl rozwiązań dopuszczalnych. Jest to jednak możliwe gdy dopuszczalne rozwiązanie bazowe posiada co najmniej dwie zmienne bazowe o wartości równej zeru. Ponieważ w praktyce nie spotkano żadnych cyklicznych rozwiązań, pominiemy ten problem, wspominając jedynie że idea rozwiązania (metoda peturbacji) jest opisana w książce [Gass80]. 2.7 Dualizm w programowaniu liniowym 2.7.1 Wprowadzenie Dla każdego zadania programowania liniowego (dalej nazywanym zadaniem pierwotnym) można zbudować tzw. zadanie dualne, które też jest zadaniem programowania liniowego. Pomiędzy tymi zadaniami występują interesujące zależności. Dane jest zadanie programowania liniowego w następującej postaci: TWIERDZENIE: Zadanie pierwotne jest zadaniem dualnym do swojego zadania dualnego. WNIOSEK: Zadania (P) i (D) są dualne względem siebie. Powyższą pierwotną-dualną parę zadań można przedstawić w zapisie mac ierzowym: Przejście między zadaniami jest w dwie strony i jest sprawą umowną, które z zadań jest zadaniem pierwotnym. Dozwolone są następujące przejścia (i tylko te!): zadanie pierwotne zadanie dualne max zp ... <= ... min zd ... >= ... Uwaga - nie ma ograniczenia by wektor b był >=0. W przypadku, gdy ograniczenia są dane w postaci równań, należy je zastąpić przez odpowiednie pary nierówności: ograniczenie: Aix = bi zamieniamy na ograniczenia: Aix >= bi oraz Aix <= bi PRZYKŁAD: Zbudować zadanie dualne do zadania: (max) zp=x1+4x2 ogr. 3x1+2x2<=6 2x1+x2=5 x1-3x2>=7 x1,x2>=0 Zadaniem dualnym sprzężonym z zadaniem pierwotnym nazywamy następujące zadanie (D): (min) zd=b Ty (D) ogr.: ATy c y0 y Rm Zadanie pierwotne (P): (max) zp=c Tx (P) ogr,: Ax b x0 x Rn Zadanie dualne : (min) zd=6y1+5(y2- y3)-7y4 ogr. 3y1+2(y2- y3)- y4 >= 1 2y1+(y2- y3)+3y4>=4 y1,y2,y3,y4>=0 przekształcamy do wymaganej postaci (max) zp=x1+4x2 ogr. 3x1+2x2<=6 2x1+x2<=5 - 2x1- x2<=-5 - x1+3x2<=-7 x1,x2>=0 cT x (max) zp = A x b x 0 (min) zd = AT c y bT y y 0 Zadania tego nie da się rozwiązać stosując poznane metody (nie znając idei zmiennych sztucznych). Można je natomiast rozwiązać przekształcając zadanie pierwotne do dualnego. To przekształcenie można wykonać na dwa sposoby, ale rezultat końcowy będzie taki sam: Sposób 1: min zp=2x1+x2 x1<=1 x2<=2 x1+x2>=2 x1,x2>=0 max z’p=-2x1-x2 x1<=1 x2<=2 -x1-x2<=-2 x1,x2>=0 min z’d=y1+2y2-2y3 y1-y3 >=-2 y2-y3 >=-1 y1,y2,y3>=0 do postaci standardowej min z’d=y1+2y2-2y3 -y1+y3+y4 =2 -y2+y3+y5 =1 y1,y2,y3, y4,y5>=0 Sposób 2: min zp=2x1+x2 x1<=1 x2<=2 x1+x2>=2 x1,x2>=0 min zp=2x1+x2 -x1 >= -1 -x2 >= -2 x1+x2 >= 2 x1,x2>=0 max zd=-y1-2y2+2y3 -y1+y3 <=2 -y2+y3 <=1 y1,y2,y3>=0 do postaci standardowej tak jak wyżej Teraz możemy rozwiązać zadanie dualne stosując metodę sympleks Baza cB P0 1 2 -2 0 0 P1 P2 P3 P4 P5 P4 0 2 -1 0 1 1 0 P5 0 1 0 -1 1 0 1 Wsk. Opt. 0 -1 -2 2 0 0 Baza cB P0 1 2 -2 0 0 P1 P2 P3 P4 P5 P4 0 1 -1 1 0 1 -1 P3 -2 1 0 -1 1 0 1 Wsk. Opt. -2 -1 0 0 0 -2 Jest to rozwiązanie optymalne: Zadanie dualne: (min) z’d=-2 zmienne decyzyjne: y1*=0 y2*=0 y3*=1 zmienne sztuczne: y4*=1 y5*=0 Zadanie pierwotne: (min) zp=- z’d =2 zmienne decyzyjne: x1*= -yn+1,4*=0 x2*=- y n+1,5*=2 zmienne sztuczne: x3*=- y n+1,1*=1 x4*=- y n+1,2*=0 x5*=- y n+1,3*=0 2.7.5 Zadania Dane jest zadanie: Funkcja celu: min 2x1+2x2 Ograniczenia: 2x1+4x2>=1 x1+x2>=2 2x1+x2>=3 x1,x2>=0 Rozwiązać zadanie dualne do tego zadania i odczytać rozwiązanie optymalne zadania pierwotnego. Rozwiązanie: ??? Rozwiązywanie zadań PL. za pomocą programu FRACTIONS 2.7.6 Wprowadzenie Program Fractions jest programem edukacyjnym wspomagającym naukę programowania liniowego. Pozwala na rozwiązywanie zadań programowania liniowego bez i ze zmiennymi sztucznymi, pozwalana dołączanie ograniczeń w trakcie obliczeń, co można zastosować przy rozwiązywaniu zadań programowania liniowego całkowitoliczbowego. 2.7.7 Zadanie programowania liniowego bez zmiennych sztucznych Dane jest następujące zadanie: (max) zysk = 20*krzesła+24*stoły 3*krzesła+4*stoły <= 60 - ograniczenie czasu składania wyrobów 6*krzesła+2*stoły <= 32 - ograniczenie czasu wykończenia i pakowania krzesła >= 0 - ograniczenie wielkości produkcji krzeseł stoły >= 0 - ograniczenie wielkości produkcji stołów Wprowadzić zadanie do programu (pamiętając o minimalizacji i wierszu wskaźnikowym - POSITIVE VALUES). Wyjaśnić opisy w wierszu stanu (PHASE, RHS) i wskazywanie elementu centralnego. Wykonać kroki algorytmu simplex (wchodzi 2 a potem 1). Pokazać, że ten sam wynik można uzyskać wybierając na początku zmienną 1 wchodzącą do bazy. Niech do bazy wejdzie element, dla którego wskaźnik optymalności jest mniejszy lub równy 0 (pogorszenie lub zmian wartości funkcji celu). Pokazać co się stanie, gdy wybierzemy element wychodzącego z bazy dla którego iloraz, nie będzie najmniejszą wartością z pośród wszystkich wartości (wartości zmiennych bazowych będą ujemne). Pokazać, co się stanie, gdy do bazy wejdzie element, w którego ilorazie mianownik był ujemny 2.7.8 Zadanie programowania liniowego ze zmiennymi sztucznymi Dane jest następujące zadanie: (max) zysk = 20*krzesła+24*stoły 3*krzesła+4*stoły <= 60 - ograniczenie czasu składania wyrobów 6*krzesła+2*stoły <= 32 - ograniczenie czasu wykończenia i pakowania 1*krzesła+0*stoły >= 5 - ograniczenie na min liczbę wyrobów krzesła >= 0 - ograniczenie wielkości produkcji krzeseł stoły >= 0 - ograniczenie wielkości produkcji stołów Wprowadzić zadanie do programu (pamiętając o minimalizacji i wierszu wskaźnikowym - POSITIVE VALUES). Pokazać, że system sam wprowadził zmienne sztuczne i będzie rozwiązywał zadanie metodą dużego współczynnika w Wprowadzić zmienne sztuczne do funkcji celu - COMPUTE / ENTER ARTIFICIALS W pierwszym kroku usunięta zostanie z bazy zmienna sztuczna Odczytać końcowe rozwiązanie 2.7.9 Zadanie programowania liniowego całkowitoliczbowego Dane jest następujące zadanie: min z=-x1-x2 2x1+x2<=6 4x1+5x2<=20 x1,x2>=0 i całkowite Wprowadzić zadanie do programu (pamiętając o minimalizacji i wierszu wskaźnikowym - POSITIVE VALUES). Rozwiązać zadanie PL. i sprawdzić, czy istnieją zmienne o wartościach ułamkowych Zgodnie z algorytmem dodać ograniczenie 1/3x3+1/3x4>=2/3 (INSERT / NEW ROW podświetlony wiersz wskaźnikowy) Dokonać edycji współczynników w dodanym ograniczeniu Pokazać, że system sam wprowadził zmienne sztuczne i będzie rozwiązywał zadanie metodą dużego współczynnika w Wprowadzić zmienne sztuczne do funkcji celu - COMPUTE / ENTER ARTIFICIALS Odczytać wynik z tablicy 2x1+x2<=6 4x1+5x2<=20 x1,x2>=0 i całkowite Postać standardowa: min z=-x1-x2 2x1+x2+x3=6 4x1+5x2+x4=20 x1,x2>=0 i całkowite x3,x4>=0 Baza cB P0 -1 -1 0 0 P1 P2 P3 P4 P3 0 6 2 1 1 0 P4 0 20 4 5 0 1 Wskaź niki optym alności 0 1 1 0 0 Baza cB P0 -1 -1 0 0 P1 P2 P3 P4 P1 -1 3 1 1/2 1/2 0 P4 0 8 0 3 -2 1 Wskaź niki optym alności -3 0 1/2 -1/2 0 Baza cB P0 -1 -1 0 0 P1 P2 P3 P4 P1 -1 5/3 1 0 5/6 -1/6 P2 -1 8/3 0 1 -2/3 1/3 Wskaź niki optym alności -13/3 0 0 -1/6 -1/6 Niech xk = x2; l=2 - modyfikujemy więc równanie 2: 0*x1+1*x2-2/3*x3+1/3*x4=8/3 Po przekształceniu mamy ograniczenie nierównościowe: 1/3*x3+1/3*x4>=2/3 które przekształcamy do postaci równości: 1/3*x3+1/3*x4-x5+x6=2/3 Stosujemy algorytm sympleks dla znalezienia rozwiązania optymalnego dla naszego zadania: Baza cB P0 -1 -1 0 0 0 M P1 P2 P3 P4 P5 P6 P1 -1 5/3 1 0 5/6 -1/6 0 0 P2 -1 8/3 0 1 -2/3 1/3 0 0 P6 M 2/3 0 0 1/3 1/3 -1 1 Wskaźniki optymalnośc i -13/3 +2/3 M 0 0 -1/6 +1/3 M -1/6 +1/3 M -M 0 Baza cB P0 -1 -1 0 0 0 M P1 P2 P3 P4 P5 P6 P1 -1 0 1 0 0 -1 5/2 -5/2 P2 -1 4 0 1 0 1 -2 2 P3 0 2 0 0 1 1 -3 3 Wskaźniki optymalnośc i -4 0 0 0 0 -1/2 1/2 -M Koniec zadania - po jednym odcięciu wszystkie rozwiązania są całkowitoliczbowe. Jedna ze zmiennych bazowych jest równa zeru - otrzymaliśmy więc rozwiązanie zdegenerowane. Interpretacja geometryczna odcięcia: odcięcie 1/3*x3+1/3*x4>=2/3 możemy przedstawić jako x3+x4>=2; zmienne osłabiające x3 i x4 możemy wyrazić w funkcji x1 i x2 ( z ograniczeń) i otrzymamy nowe ograniczenie x1+x2<=4 2x1+x2=6 4x1+5x2=20 x1+x2=4 Rozwi¹zania optymalne nieca³kowitoliczbowe ca³kowitoliczbowe ca³kowitoliczbowe niewierzcho³kowe 4 Optymalizacja dyskretna – wstęp (under construction) 4.1 Wstęp Algorytmem nazywa się procedurę, która w skończonej liczbie dobrze zdefiniowanych operacji znajduje rozwiązanie danego problemu. Problemy dzielimy na decyzyjne i optymalizacyjne Problem optymalizacyjny jest to problem w których minimalizowana (maksymalizowana) jest pewna zadana funkcja celu. Optymalizacyjny problem kombinatoryczny jest to problem optymalizacyjny, w którym funkcja celu jest określona na skończonym zbiorze potencjalnych rozwiązań problemu (tzw. zbiorze rozwiązań dopuszczalnych). Algorytm jest algorytmem dokładnym jeśli gwarantuje uzyskanie rozwiązania optymalnego. Przykładem algorytmu dokładnego dla optymalizacyjnych problemów kombinatorycznych jest algorytm pełnego przeglądu. 4.2 Złożoność obliczeniowa Wymagania czasowe danego algorytmu, wyrażone w funkcji rozmiaru instancji problemu, nazywa się złożonością czasową algorytmu. Algorytm o złożoności czasowej wielomianowej (algorytm wielomianowy), to taki którego złożoność czasowa jest O(w(n)), przy czym w(n) jest wielomianem, a n oznacza rozmiar instancji problemu. Jeżeli powyższy warunek nie jest spełniony, to algorytm nazywa się algorytmem o złożoności czasowej wykładniczej lub algorytmem wykładniczym. 4.3 Klasy złożonościowe problemów Złożoność czasowa algorytmów dokładnych, rozwiązujących optymalizacyjne problemy kombinatoryczne, prowadzi do zdefiniowania klas złożonościowych tych problemów. 4.4 Metoda węgierska – problem przydziału Metoda węgierska znajduje rozwiązanie w czasie wielomianowym (minimalizacja dla wartości dodatnich) Min Tas k a Tas k b Tas k c Tas k d Worker 1 2 10 9 7 -2 Worker 2 15 4 14 8 -4 Worker 3 13 14 16 11 -11 Worker 4 4 15 13 9 -4 1. W każdym wierszu znajdź element minimalny i odejmij go od wszystkich elementów z danego wiersza. Min a b c d 1 0 8 7 5 2 11 0 10 4 3 2 3 5 0 4 0 11 9 5 -5 2. W każdej kolumnie znajdź element minimalny i odejmij go od wszystkich elementów z danej kolumny. Min a b c d 1 0 8 2 5 2 11 0 5 4 3 2 3 0 0