dr Adam Sojda Badania Operacyjne Wykład Politechnika Śląska Programowanie matematyczne
Programowanie matematyczne, to problem optymalizacyjny w postaci: f ( x) max przy warunkach g( x) 0 h( x) = 0 x X X! n funkcje f,g,h są zdefiniowane na tym podzbiorze. 2
Nie istnieje uniwersalny algorytm rozwiązujący zagadnienie programowania matematycznego dlatego problemy dzieli się na odpowiednie klasy i w ramach danej klasy problemów istnieją odpowiednie algorytmy rozwiązujące je. Programowaniem nieliniowym w postaci standardowej nazywamy zadanie postaci: f ( x) = f (,..., x ) n min( max) g i ( x) = g ( i,..., x ) n 0 ( ) ( i = 1,...,r) gdzie przynajmniej jedna z funkcji f lub gi nie jest funkcją liniową, dodatkowo zakładamy, że funkcje f, gi są ciągłe. Programy w postaci kanonicznej wszystkie warunki brzegowe mają w postaci g i ( x) = 0 3
Zagadnienie programowania liniowego - jedna zmienna f(x) a b x 4
Zagadnienie programowania liniowego - jedna zmienna f(x) a b x 4
Zagadnienie programowania liniowego - jedna zmienna f(x) MAX MIN a b x 5
Zagadnienie programowania nieliniowego - jedna zmienna f(x) a b x 6
Zagadnienie programowania nieliniowego - jedna zmienna f(x) a b x 6
Metody rozwiązywania zagadnień programowania matematycznego Poszukiwanie rozwiązania programu nielinowego w postaci kanonicznej Metoda mnożników Lagrange a W przypadku metody mnożników Lagrange a postępowanie jest dwuetapowe. I etap - sprawdzenie, czy funkcja celu f(x) ma ekstremum bezwarunkowe, które może być jednocześnie ekstremum warunkowym. Szukanie ekstremum bezwarunkowego polega na przyrównaniu wszystkich pochodnych cząstkowych funkcji celu do zera. Warunkiem wystarczającym dla istnienia minimum funkcji f(x) w punkcie x=(,,x n ) jest, aby macierz pochodnych cząstkowych była dodatniookreślona. Co oznacza, że wszystkie minory główne tej macierzy są dodatnie. Jeśli extremum bezwarunkowe spełnia warunki ograniczające, to jest rozwiązaniem optymalnym. II etap - jest realizowany, kiedy nie znaleziono rozwiązania optymalnego na I etapie. Budowana jest funkcja Lagrange a postaci: λ i = f x L x,λ 1,...,λ r + λ i g ( i x) gdzie - nieoznaczone mnożniki Lagrange a w ten sposób zastępuje się szukanie ekstremum warunkowego funkcji, poszukiwaniem ekstremum bezwarunkowego dla funkcji Lagrange a. Wyznacza się pochodne cząstkowe względem zmiennych i mnożników Lagrange a. Pochodne te są przyrównywane do zera i rozwiązywany jest układ równań r i=1 7
Przykład. Pewien wyrób może być produkowany przez dwa zakłady Z1 i Z2. W zależności od wielkości przydzielonej produkcji do każdego z zakładów (x1, x2 wielkość produkcji przydzielona odpowiednio do zakładów Z1, Z2) funkcja określająca łączny koszt produkcji jest postaci: = 8 2 12 + 7 2 15 +144 f wiadomo, że łącznie należy wyprodukować 30 jednostek wyrobu. ROZWIĄZANIE x1, x2 wielkość produkcji przydzielona odpowiednio do zakładów Z1, Z2 Należy znaleźć minimum funkcji f ( = 8 1 12 + 7 2 15 +144 min przy ograniczeniach g( = = 30 0 8
I etap poszukiwanie rozwiązania bezwarunkowego: Wyznaczamy pochodne cząstkowe funkcji f(x1,x2) i przyrównujemy je do zera. = 16 15 = 0 f f ( ) = 12 +14 12 = 0 Należy rozwiązać układ równań: Sprawdzamy, czy Hesjan, czyli macierz drugich pochodnych jest dodatnio określona: Kolejne minory bazowe przyjmują wartości: 16, 80. Ponieważ są dodatnie, to hesjan jest macierzą 16 = 15 12 +14 = 12 dodatniookreśloną i w wyznaczonym punkcie znajduje się minimum. Pozostaje sprawdzić, czy rozwiązanie spełnia warunek ograniczający: = 4,425 + 4,65 = 9,075 30 = 354 80 = 4,425 H = f ( ) 2 = 372 80 = 4,65 f ( ) f f 2 = 16 12 12 14 9
Należy poszukać ekstremum warunkowego z funkcji Lagrange a. II etap poszukiwanie minimum warunkowego Budujemy funkcję Lagrange a: L(,λ) = f ( + λg( = 8 1 12 + 7 2 15 +144 + λ ( 30) min L,λ Wyznaczmy pochodne funkcji Lagrange a: = 16 15 + λ = 0 L,λ L(,λ) = 12 +14 12 + λ = 0 L(,λ) λ = ( 30) = 0 Rozwiązujemy układ równań: metoda podstawiania z równania pierwszego i drugiego wyznaczmy lambdy i przyrównujemy je. Otrzymując układ równań: 10
Należy poszukać ekstremum warunkowego z funkcji Lagrange a. II etap poszukiwanie minimum warunkowego Budujemy funkcję Lagrange a: L(,λ) = f ( + λg( = 8 1 12 + 7 2 15 +144 + λ ( 30) min L,λ Wyznaczmy pochodne funkcji Lagrange a: = 16 15 + λ = 0 L,λ L(,λ) = 12 +14 12 + λ = 0 L(,λ) λ = ( 30) = 0 28 26 = 3 = 30 Rozwiązujemy układ równań: metoda podstawiania z równania pierwszego i drugiego wyznaczmy lambdy i przyrównujemy je. Otrzymując układ równań: 10
Należy poszukać ekstremum warunkowego z funkcji Lagrange a. II etap poszukiwanie minimum warunkowego Budujemy funkcję Lagrange a: L(,λ) = f ( + λg( = 8 1 12 + 7 2 15 +144 + λ ( 30) min L,λ Wyznaczmy pochodne funkcji Lagrange a: = 16 15 + λ = 0 L,λ L(,λ) = 12 +14 12 + λ = 0 L(,λ) λ = ( 30) = 0 28 26 = 3 = 30 Rozwiązujemy układ równań: metoda podstawiania z równania pierwszego i drugiego wyznaczmy lambdy i przyrównujemy je. Otrzymując układ równań: = 14,5 = 15,5 10
Należy poszukać ekstremum warunkowego z funkcji Lagrange a. II etap poszukiwanie minimum warunkowego Budujemy funkcję Lagrange a: L(,λ) = f ( + λg( = 8 1 12 + 7 2 15 +144 + λ ( 30) min L,λ Wyznaczmy pochodne funkcji Lagrange a: = 16 15 + λ = 0 L,λ L(,λ) = 12 +14 12 + λ = 0 L(,λ) λ = ( 30) = 0 28 26 = 3 = 30 Rozwiązujemy układ równań: metoda podstawiania z równania pierwszego i drugiego wyznaczmy lambdy i przyrównujemy je. Otrzymując układ równań: = 14,5 = 15,5 otrzymane rozwiązanie jest poszukiwanym rozwiązaniem 10
Program nieliniowy w postaci standardowej I sposób Ponieważ wszystkie ograniczenia są nierównościami, można doprowadzić program do postaci kanonicznej poprzez dodanie do funkcji g zmiennej nieistotnej u 2. II sposób Dla programu w postaci standardowej wykorzystuje się twierdzenie Kuhna-Truckera Dla programu postaci: f,..., x n g i min (,..., x n ) 0 i = 1,...,r,..., x n 0 Warunki Kuhna-Truckera n L x j = j=1 x j g i r i=1 λ i g i x j 0 j = 1,...,n L( x,λ 1,...,λ ) r = f x L = f x r g + λ i x i x j x j i=1 x j (,..., x n ) 0 i = 1,...,r ( x) = 0 0 j = 1,...,n n r f x g + λ i x i x j i=1 x x j = 0 j=1 j r i=1 + λ i g ( i x) λ i 0 i = 1,...,r 11
Po podstawieniu r f x g + λ i x i x j i=1 x j g i ( x) = w i postać układu jest następująca: Programowanie matematyczne = v j n L x j = j=1 x j L v j = f x r g + λ i x i x j x j i=1 x j v j = 0 j = 1,...,n n r f x g + λ i x n i x j i=1 x x j = v j x j = 0 j=1 j j=1 g i r i=1 ( x) w i = 0 λ i w i = 0 x j 0 j = 1,...,n λ i 0 i = 1,...,r 12