Document: Exercise*02*-*manual ---2014/11/12 ---8:31---page1of8 PRZEDMIOT TEMAT KATEDRA MECHANIKI STOSOWANEJ Wydział Mechaniczny POLITECHNIKA LUBELSKA INSTRUKCJA DO ĆWICZENIA NR 2 Wybrane zagadnienia z optymalizacji elementów konstrukcji Programowanie liniowe 1. CEL ĆWICZENIA Celem ćwiczenia jest zapoznanie studentów z problematyką zadań programowania liniowego. Przedstawione zostaną wybrane metody poszukiwania optimum w tej klasie zagadnień. Do rozwiązania przykładowego problemu wykorzystany będzie algorytm SIMPLEX. 2. PODSTAWY TEORETYCZNE Zadaniem programowania liniowego(ang. linear programming w skrócie LP) nazywamy zadanie optymalizacyjne, w którym zarówno funkcja celu, jak i wszystkie ograniczenia są funkcjami liniowymi zmiennych decyzyjnych. Zakładając, że rozpatrywany problem jest zagadnieniem n-wymiarowym x={x 1,x 2,...,x n } funkcjacelutegotypuzadaniamożebyćzatemzapisana w postaci minf(x)=c x 1 x 1 +c 2 x 2 +...c n x n n = c i x i =c x i=1 (1) gdzieposzczególnec i,i=1...,nsąwagamizmiennychdecyzyjnychwfunkcjiceluitworząkolumnowywektorc={c 1 c 2... c n }. strona1z8
Document: Exercise*02*-*manual ---2014/11/12 ---8:31---page2of8 Podobniejakfunkcjacelu,takikażdezograniczeńzadaniaLPdasię zapisaćwpostacikombinacjiwyrażeńtypua i x i.funkcjeograniczeńg(x przyjmują zatem postać g j (x): a j1 x 1 +a j2 x 2 +a j3 x 3 +...a jn x n b j n a ji x i b j (2) i=1 gdzie j jest numerem porządkowym ograniczenia. Podobnie jak funkcja celu komplet nałożonych ograniczeń nierównościowych daje się to sprowadzić do zapisu macierzowego A x b (3) W standardowym sformułowaniu zagadnienia przyjmuje się, że każda ze zmiennychdecyzyjnychjestnieujemnax i 0,i=1,...,n. Dziedziną rozwiązań każdego zadania programowania liniowego w rozważanej przestrzeni n-wymiarowej jest wielościan wypukły(zwany także simpleksem). Można bowiem wskazać, że każde z wprowadzonych ograniczeń g j (x)odcinapółprzestrzeńpewnąhiperpłaszczyznąg j (x)=0.interpretacja tego faktu jest bardzo łatwa w przypadku zadań dwu-wymiarowych. Pełna płaszczyznazmiennychdopuszczalnych(x 1,x 2 )jestrozcinanaprostą-ograniczeniemg j (x 1,x 2 )=0ijednazpowstałychwtensposóbpółpłaszczyzn jest odrzucana. Kolejne ograniczenia/proste odrzucają następne fragmenty płaszczyzny. Utworzony w ten sposób zbiór rozwiązań dopuszczalnych (dziedzina) jest wielokątem wypukłym. Omawiane zadanie programowania liniowego(lp) należy tym samym do szerszej klasy zagadnień, a mianowicie do kategorii programowania wypukłego. Szczególnie istotną cechą zadań programowania wypukłego są własności jakieposiadarozwiązaniex takiegozadania.obowiązujebowiemtwierdzenie jeślifunkcjaliniowaf(x)maekstremumwarunkowewzbiorzewypukłymokreślonymukłademnierównościa x b,toleżyonowwierzchołku wielościanu będącego dziedziną rozwiązania tego zadania. Jednocześnie rozwiązanie to jest ekstremum globalnym. A zatem poszukiwanie rozwiązania zadania programowania wypukłego (a tym samym i liniowego) można ograniczyć do punktów będących narożnikami zbioru rozwiązań dopuszczalnych. Ten sposób postępowania jest efektywny jednak tylko dla stosunkowo mało złożonych problemów. Można strona2z8
Document: Exercise*02*-*manual ---2014/11/12 ---8:31---page3of8 bowiem wykazać, że dziedzina zadania n-wymiarowego, w którym występuje n! m ograniczeń nierównościowych ma narożników.stądteżdorozwiązywania bardziej złożonych problemów, poza wspomnianą wcześniej metodą m!(n m)! rozwiązań bazowych polegającą na systematycznym przeglądzie narożników, stosuje się najczęściej jeden z poniższych sposobów: metoda Gaussa-Jordana, dekompozycja LU(działa dla macierzy kwadratowych), metoda SIMPLEX. Algorytm SIMPLEX Algorytm SIMPLEX jest metodą iteracyjną, polegającą na wyznaczaniu kolejnych rozwiązań dopuszczalnych zadania spośród punktów narożnych dziedziny. Wybór kolejnych rozwiązań jest prowadzony w ten sposób, aby uzyskać możliwie największą, możliwą w danym kroku i pożądaną zmianę wartości funkcji celu. Jeśli na danym etapie rozwiązania zadania nie można wykonać kroku poprawiającego wartość funkcji celu, to aktualnie wybrany wierzchołek jest rozwiązaniem optymalnym. Rozwiązanie zadania LP metodą SIMPLEX wymaga sprowadzenia zagadnienia(3) do tzw. postaci kanonicznej oraz A x=b (4) x 0 i b 0 (5) Zapisanie zagadnienia w postaci kananonicznej może wymagać pewnych modyfikacji w stosunku do pierwotnego sformułowania(3). W szczególności dotyczytoograniczeńtypu n i=1 a i x i b,któremożnasprowadzićdopostaci kanonicznej poprzez dodanie do pierwotnej nierówności tzw. zmiennej dopełniającejx n+1.otrzymujesięwtedyrówność n i=1 a i x i +x n+1 =b.podobnie ograniczenietypu a i x i bmożnazapisaćwżądanejpostacipoprzez uzupełnienienierównościotzw.zmiennąnadmiarową n i=1 a i x i x n+1 =b. Wprowadzone zmienne nadmiarowe i zmienne dopełniające tworzą wektor zmiennych bazowych(zmienne bazy), pozostałe zmienne decyzyjne stanowią wektor tzw. zmiennych swobodnych strona3z8
Document: Exercise*02*-*manual ---2014/11/12 ---8:31---page4of8 Sposób rozwiązania LP za pomocą algorytmu SIMPLEX sprowadza się do kilkukrotnego wykonania poniższej sekwencji: (a) ustalenie dowolnego, bazowego rozwiązania dopuszczalnego, (b) ustalenie, którą ze zmiennych spośród zmiennych swobodnych należy do bazy wprowadzić, (c) ustalenie, którą zmienną z bazy należy usunąć. Szczegóły postępowania zostaną wyjaśnione w poniższym przykładzie. Przykład 1 Wyznaczyć maximum funkcji f(x 1,x 2,x 3 )=5x 1 +4x 2 +3x 3 (6) wobec ograniczeń 2x 1 +3x 2 +x 3 5 4x 1 +x 2 +2x 3 11 3x 1 +4x 2 +2x 3 8 x 1,x 2,x 3 0 Zapis w postaci kanonicznej: 2x 1 +3x 2 +x 3 +x 4 =5 4x 1 +x 2 +2x 3 +x 5 =11 3x 1 +4x 2 +2x 3 +x 6 =8 x 1,x 2,x 3,x 4,x 5,x 6 0 wymagawprowadzeniazmiennychdopełniającychx 4,x 5,x 6.Typujemybazowe rozwiązanie dopuszczalne(ad pkt.(a)) przyjmując tymczasowo, że zmiennymi bazy są wprowadzone zmienne dopełniające. Zmienne oryginalnego zadania są na tym etapie rozwiązania problemu zmiennymi swobodnymi i tymczasowo przyjmują wartość 0. Wobec powyższego tymczasowa wartość funkcji celu wynosi 0, zaś wprowadzone zmienne dopełniające przyjmą wartości prawej strony ograniczeń. Można zatem utworzyć 1-sze tzw. tableau x 4 = 5 2x 1 3x 2 x 3 0 x 1 5 /2 x 5 =11 4x 1 x 2 2x 3 0 x 1 11 /4 x 6 = 8 3x 1 4x 2 2x 3 0 x 1 8 /3 (7) (8) f(x 1,x 2,x 3 ) = 5x 1 +4x 2 +3x 3 strona4z8
Document: Exercise*02*-*manual ---2014/11/12 ---8:31---page5of8 Namocywarunku(5)każdazezmiennychbazowychx 4,...,x 6 musibyć nieujemna. Przystępujemy do wytypowania zmiennej wchodzącej do bazy(ad pkt. (b)).spośródzmiennychswobodnychx 1,x 2,x 3 wybieramytę,któradaje największą możliwą poprawę wartości funkcji celu. W rozważanym zadaniu poszukiwane jest maksimum f(x)), a zatem zmienną, która da największy wzrostf(x)jestx 1 zuwaginanajwiększąwartośćmnożnika(liczba5). Aby ustalić zmienną wychodzącą z bazy(ad pkt.(c)) badamy ograniczenianałożonenazmiennąwchodzącąx 1,jakiewynikajązfaktu,żewszystkie zmiennex,wtymtakżezmiennebazysąnieujemne patrz(5).przykładowo1wiersztableaustanowi,żex 4 0gdziex 4 =5 2x 1 3x 2 x 3 ; azatempowprowadzeniux 1 dobazyipamiętając,żex 2 ix 3 jakozmienne swobodnesą0,dostajemywarunek5 2x 1 0 x 1 5 /2.Następnie sprawdzamy w ten sposób każdą zmienną aktualnej bazy(pozostałe 2 nierówności w tableau). Jako zmienną wychodzącą z bazy wybieramy tę, która daje najbardziej restrykcyjny warunek nakładany na wprowadzaną zmienną. Spośród trzech nierówności najsilniejsze ograniczenie wprowadza pierwszywiersztableau;tymsamymzmiennąwchodzącądobazyjestx 4. Przekształcając pierwszy wiersza uzyskuje się: x 1 = 5 2 3 2 x 2 1 2 x 3 1 2 x 4 (9) Równanie ro stanowi pierwszy nowego tableau Otrzymane wyrażenie(9) wstawiamy do pozostałych ograniczeń oraz do funkcji celu; powstaje w ten sposób drugie tableau x 1 = 5 2 3x 2 2 1x 2 3 1x 2 4 0 x 5 =11 4 ( 5 2 3x 2 2 1x 2 3 1x ) 2 4 x2 2x 3 0 x 6 = 8 3 ( 5 2 3x 2 2 1 x 2 3 1 x ) 2 4 4x2 2x 3 0 f(x 2,x 3,x 4 ) = 5 ( 5 2 3x 2 2 1x 2 3 1x 2 4) +4x2 +3x 3 Po wykonaniu przekształceń i uporządkowaniu otrzymujemy ostateczną postać drugiego tableau strona5z8
Document: Exercise*02*-*manual ---2014/11/12 ---8:31---page6of8 x 1 = 5 2 3x 2 2 1x 3 3 1x 2 4 0 x 3 5 x 5 = 1+5x 2 +2x 4 0 bezogr. x 6 = 1 2 +1 2 x 2 1 3 x 3+ 3 2 x 4 f(x 2,x 3,x 4 ) = 25 5 7x 2 2+ 1x 3 3 5x 2 4 0 x 3 1 W nowym tableau zmienną wchodzącą do bazy(najbardziej poprawiającąwartośćfunkcjicelu)jestx 3.Sprawdzającograniczenianałożonena zmiennąwchodzącąznajdujemyzmiennąwychodzącązbazy jesttox 6. x 3 =1+x 2 +3x 4 2x 6 (10) Postępując jak poprzednio zapisujemy trzecie tableau: x 3 =1+ x 2 +3x 4 2x 6 0 x 1 =2 2x 2 2x 4 +x 6 0 x 5 =1+5x 2 +2x 4 0 f(x 2,x 4,x 6 ) =13 3x 2 x 4 x 6 Dalsza poprawa rozwiązania nie jest możliwa, bo wszystkie współczynniki wyrażeniafunkcjiceluf(x 2,x 4,x 6 )sąujemne.azatemzmiennymiswobodnymizadaniasązmiennex 2,x 4 ix 6 iprzyjmująonewartośćzero;zaś wartościzmiennychbazywynosząx 3 =1,x 1 =2ix 5 =1. Stądrozwiązaniemzadaniapierwotnegof(x 1,x 2,x 3 )sąwartościx 1 =2, x 2 =0ix 3 =1,amax.funkcjiceluwynosi13. 3. PRZEBIEG ĆWICZENIA Prowadzący zajęcia przydzieli każdemu zespołowi laboratoryjnemu zadnie do rozwiązania. Będzie to zadanie optymalizacji jednokryterialnej w dziedzinie wielowymiarowej. Studenci rozwiązują zadanie korzystając z oprogramowania Linear Programming Solver. W toku rozwiązywania problemy należy postępować według poniższej kolejności Ustalić zmienne decyzyjne zadania. Zapisać wzór określający funkcję celu patrz(1). Zapisać komplet zależności ograniczeń zadania patrz(2). Zapisaćzadaniewpostacikanonicznej patrz(4)i(5)oraz(??). strona6z8
Document: Exercise*02*-*manual ---2014/11/12 ---8:31---page7of8 Zapisać pierwsze tableau metody SIMPLEX patrz Przykład 1. Wytypować zmienną wchodzącą do bazy oraz zmienną wychodzącą z bazy. Uruchomić na stanowisku komputerowym oprogramowanie Linear Programming Solver. Z menu głównego wybrać polecenie New Table model. W oknie Model Parameters(patrz Rysunek 1) wprowadzić liczbę zmiennych(ang. Number of variables), liczbę ograniczeń(ang. Number of constraints) oraz liczbę funkcji celu(ang. Number of objectives). Podać także typ zadania maksymalizacja czy minimalizacja funkcji celu. Zatwierdzić wprowadzone dane klawiszem OK. Korzystając z wyprowadzonego sformułowania zadania optymalizacyjnego wypełnić poszczególne komórki tabeli okna LiPS Model patrz Rysunek 2. Po wprowadzeniu wszystkich danych uruchomić obliczenia poleceniem LiPS Solve Model. Zapisać raport z obliczeń na nośniku zewnętrznym. Rysunek 1. Przykładowe okno Model Parameters programu LiPS 4. OPRACOWANIE WYNIKÓW Porównać tableau zapisane samodzielnie i tableau uzyskane z obliczeń; porównać także wytypowane zmienne wchodzące i wychodzące z bazy. strona7z8
Document: Exercise*02*-*manual ---2014/11/12 ---8:31---page8of8 Rysunek 2. Tabela LiPS Model definiująca zadanie programowania liniowego programie LiPS Następnie przeanalizować uzyskany wynik zadania optymalizacyjnego. Sprawdzić, które z ograniczeń zadania są aktywne, a które nie. Odnieść uzyskane wyniki do analizowanej konstrukcji. 5. SPRAWOZDANIE Sprawozdanie z ćwiczenia powinno zawierać: 1. Tabelkę identyfikacyjną. 2. Cel ćwiczenia i schemat analizowanej konstrukcji. 3. Sformułowanie zadania optymalizacji wg.(1)-(2) 4. Sformułowanie kanoniczne zadania optymalizacji(4) z zaznaczeniem zmiennych dopełniających/nadmiarowych. 5. Pierwsze tableu algorytmu SIMPLEX. 6. Wydruk raportu z obliczeń. 7. Omówienie wyników. 8. Wnioski strona8z8