Rozdział 5 Programowanie nieliniowe Programowanie liniowe ma zastosowanie w wielu sytuacjach decyzyjnych, jednak często zdarza się, że zależności zachodzących między zmiennymi nie można wyrazić za pomocą modeli liniowych. Znalezienie rozwiązania zadania optymalizacyjnego, w którym funkcja celu lub ograniczenia są funkcjami nieliniowymi jest na ogół trudniejsze niż w wypadku zadań programowania liniowego. W praktyce stosuje się zwykle metody przybliżone, najczęściej gotowe pakiety oprogramowania. Niektóre szczególne przypadki można jednak rozwiązać analitycznie. Na przykład zadania z minimaksową funkcją celu oraz zadania z funkcją celu będąca ilorazem funkcji liniowych można w łatwy sposób sprowadzić do równoważnej postaci zadania programowania liniowego. W tym rozdziale przedstawimy metody rozwiązywania tego typu problemów. 5.. Zadania programowania liniowo-ułamkowego Pewne szczególne modele programowania nieliniowego można rozwiązać przez sprowadzenie do problemu programowania liniowego. Do takich modeli należy zadanie z funkcją celu w postaci ilorazu wyrażeń liniowych i ograniczeniami liniowymi. Problem taki można rozwiązać na przykład metodą Charnesa-Coopera, którą omówimy w tym rozdziale. 5... Przykład Pewne przedsiębiorstwo produkuje dwa wyroby W i W2 z dwóch surowców S i S2. Zużycie surowców do produkcji każdego wyrobu podano w tablicy 5., w której przedstawiono stan zapasów obu surowców oraz zysk jednostkowy z produkcji każdego wyrobu i ilość zanieczyszczeń emitowanych przy produkcji danego wyrobu. Należy znaleźć taki plan produkcji, w którym ilość zanieczyszczeń przypadająca na jednostkę zysku będzie najmniejsza.
70 Rozdział 5. Programowanie nieliniowe Tablica5..DaneoprodukcjiwyrobówWiW2 Surowiec Zużycie surowca[kg/jednostkę wyrobu] Zapas surowca W W2 S 4 S2 4 2 8 zysk jednostkowy 200 w[zł/jednostkę wyrobu] 00 emisja zanieczyszczeń 3 w[kg/jednostkę wyrobu] 4 5..2. Model matematyczny Oznaczmyprzezx liczbęjednostekwyrobuwwplanieprodukcji,a przezx 2 odpowiednio,planowanąprodukcjęwyrobuw2.zyskzprodukcji wyniesie,acałkowitaemisjazanieczyszczeń3x +4x 2. Otrzymujemy następujący model decyzyjny: zminimalizować z= 3x +4x 2 (5.) przyograniczeniach x +x 2 4 (5.2) 4x +2x 2 8 (5.3) x,x 2 0 (5.4) 5..3. Rozwiązanie Zauważmy,żedlax,x 2 0,gdziejednazezmiennychmawartość dodatnią mianownik funkcji celu jest większy od zera. Oznaczmy przez = iwprowadźmynastępującepodstawienia: y 0 =,y = x,y 2 = x 2. (5.5) W wyniku tego podstawienia otrzymujemy następujące zadanie programowania liniowego: zminimalizowaćz=3y +4y 2 (5.6)
5.. Zadania programowania liniowo-ułamkowego 7 przyograniczeniachy +y 2 4y 0 0 (5.7) 4y +2y 2 8y 0 0 (5.8) 200y +00y 2 = (5.9) y 0,y,y 2 0 (5.0) Zadanie(5.6)-(5.0) rozwiązujemy dowolną metodą programowania liniowego(np. za pomocą algorytmu sympleks) i otrzymujemy następujące rozwiązanieoptymalne:y =/200,y 2 =0,y 0 =/400,z =3/200.Na mocy wzoru(5.5) znajdujemy optymalne rozwiązanie zadania początkowego: x = 200 400 x 2= 0 =0 400. W optymalnym planie produkcji zakład będzie produkował 2 jednostki wyrobu pierwszego i przy tym będzie emitował 3 kg zanieczyszczeń na 200 zł zysku(inaczej: 0,05kg/zł). Podstawienie(5.5), które wykonaliśmy w modelu(5.)-(5.4) można wykonać zawsze, gdy spełnione są następujące warunki: zbiór rozwiązań dopuszczalnych problemu jest ograniczony oraz mianownik funkcji celu jest dodatni dla wszystkich rozwiązań dopuszczalnych. Metoda polegająca na sprowadzeniu modelu z ilorazową funkcją celu do problemu programowania liniowego nazywa się metodą Charnesa-Coopera. Niech dane będzie zadanie w postaci: =2 zminimalizowaćz= ct x+c 0 d T x+d 0 (5.) przy ograniczeniach Ax = b (5.2) oznaczmy: x 0 (5.3)
72 Rozdział 5. Programowanie nieliniowe =d T x+d 0 (5.4) i zapiszmy zadanie(5.)-(5.3) w równoważnej postaci: zminimalizowaćz=c Tx +c 0 (5.5) przyograniczeniacha x b =0 (5.6) d Tx +d 0 x = (5.7) 0 (5.8) >0 (5.9) Następnie wykonajmy podstawienie: y= x,y 0=. (5.20) Osłabiając warunek(5.9) otrzymujemy następujące zadanie programowania liniowego: zminimalizowaćz=c T y+c 0 y 0 (5.2) przyograniczeniachay by 0 =0 (5.22) d T y+d 0 y 0 = (5.23) y 0,y 0 0 (5.24) Korzystamy z własności, że rozwiązanie optymalne zadania(5.)-(5.3) istnieje wtedy i tylko wtedy, gdy istnieje rozwiązanie optymalne zadania (5.2)-(5.24)takie,żey 0 >0. Metoda Charnesa-Coopera Krok. Przekształcić zadanie(5.)-(5.3) do postaci liniowej(5.2)-(5.24). Krok 2. Znaleźć rozwiązanie optymalne zadania(5.2)-(5.24).
5.2. Zadania z minimaksową funkcją celu 73 Krok 3. Znaleźć rozwiązanie optymalne zadania(5.)-(5.3) za pomocą wzoru(5.20). 5.2. Zadania z minimaksową funkcją celu Innym przykładem modelu nieliniowego, który można rozwiązać przez sprowadzenie do równoważnego modelu liniowego jest zadanie z minimaksową funkcją celu. 5.2.. Przykład Pewna firma planuje dwa warianty testów nowego wyrobu. Testy trwają trzy miesiące. Jednostkowe koszty pierwszego testu wynoszą w pierwszym i trzecim miesiącu 2 zł/szt., w drugim miesiącu 3 zł/szt., a drugiego testu wpierwszymmiesiącu3zł/szt.,wdrugimzł/szt.,awtrzecimmiesiącu 4 zł/szt. Ponadto testy generują co miesiąc koszty stałe w wysokości odpowiednio 50, 20 i 40 zł. Dział jakości wyznaczył minimalną łączną liczbę testówna000.księgowyobawiasię,żefirmamożemiećproblemyzpłynnością finansową, dlatego wymaga, aby koszty testów obliczać w każdym miesiącu oddzielnie. Zależy mu, aby największy wydatek na testy spośród trzech miesięcy był jak najmniejszy. 5.2.2. Model matematyczny Oznaczmyprzezx liczbęsztukwyrobupoddanychpierwszemutestowi,aprzezx 2 poddanychdrugiemutestowi.kosztytestówwpierwszym miesiącuwynoszą50+2x +3x 2,wdrugim20+3x +x 2,awtrzecim 40+2x +2x 2.Odpowiedniproblemprogramowaniamatematycznegoma następującą postać: zminimalizowaćz=max{2x +3x 2 +50,3x +x 2 +20,2x +2x 2 +40}(5.25) przyograniczeniachx +x 2 000 (5.26) x,x 2 0 (5.27) W ogólności problem z minimaksową funkcją celu formułujemy jako: zminimalizowaćz=max{c T x+c 0,...,c T kx+c k0 } (5.28)
74 Rozdział 5. Programowanie nieliniowe przy ograniczeniach Ax = b (5.29) x 0 (5.30) 5.2.3. Rozwiązanie Wprowadźmydodatkowązmiennąx 0,któraprzyjmujewartośćniemniejszą niż koszty testów w każdym miesiącu. Zatem: x 0 2x +3x 2 +50 (5.3) x 0 3x +x 2 +20 (5.32) x 0 2x +2x 2 +40 (5.33) Pozostajezminimalizowaćfunkcjęz=x 0 przyograniczeniach(5.3)-(5.33) oraz(5.26)-(5.27). Jest to zadanie programowania liniowego, a więc możemy zastosować na przykład algorytm sympleks i otrzymujemy rozwiązanie: x 0 =2373,3,x =676,6,x 2 =323,3.Rozwiązanietoniejestcałkowitoliczbowe, więc księgowy może przyjąć, że pierwszemu testowi zostaną poddane 677 stuki, a drugiemu 323 sztuki wyrobu. Maksymalny koszt wyniesie wtedy: 2374 zł. Sposób postępowania w ogólnym wypadku przedstawiono poniżej. Algorytm rozwiązania zadania z minimaksową funkcją celu. Krok.Wprowadzićzmiennąx 0, Krok2.Zastąpićfunkcjęcelufunkcjąz=x 0, Krok4.Dodaćograniczeniapostacix 0 c T i x+c i0i=,...,k, Krok 5. Rozwiązać otrzymane zadanie programowania liniowego. Otrzymane zadanie programowania liniowego ma następującą postać: zminimalizowaćz=x 0 (5.34) przy ograniczeniach Ax = b (5.35) x 0 c T ix+c i0, i=,...k (5.36)
5.3. Zadania 75 x 0 (5.37) Rozwiązanie tego problemu jest równocześnie rozwiązaniem problemu początkowego(5.28)-(5.30). Analogicznie można postąpić w przypadku funkcjicelupostaci:zmaksymalizowaćz=min{c T x+c 0,...,c T k x+c k0}. 5.3. Zadania Zadanie 5. zminimalizować z=max{3x +2x 2 +5,x 2x 2 +3} przyograniczeniach: x +3x 2 5 Zadanie 5.2 5x +2x 2 3 x,x 2 0 zmaksymalizować z=min{3x +2x 2 +5,x 2x 2 +3} przyograniczeniach: x +3x 2 5 Zadanie 5.3 5x +2x 2 3 x,x 2 0 Zadanie 5.4 zmaksymalizować z= 3x +2x 2 +5 x 2x 2 +3 przyograniczeniach: x +3x 2 5 5x +2x 2 3 x,x 2 0