Instrukcja nr.2 - www.kms.pollub.pl

Transkrypt

Instrukcja nr.2 - www.kms.pollub.pl
✐
✐
Document: ‘‘Exercise*02*-*manual’’ --- 2014/11/12 --- 8:31 --- page 1 of 8
✐
✐
KATEDRA MECHANIKI STOSOWANEJ
Wydział Mechaniczny
POLITECHNIKA LUBELSKA
lsk
a
INSTRUKCJA DO ĆWICZENIA NR 2
Wybrane zagadnienia z optymalizacji elementów konstrukcji
TEMAT
Programowanie liniowe
Lu
be
PRZEDMIOT
1. CEL ĆWICZENIA
ch
ni
ka
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
Po
l
ite
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 = {x1 , x2 , . . . , xn }⊺ funkcja celu tego typu zadania może być zatem zapisana w postaci
min f (x) =c1 · x1 + c2 · x2 + . . . cn · xn
x
=
n
X
ci xi = c⊺ · x
(1)
i=1
gdzie poszczególne ci , i = 1 . . . , n są wagami zmiennych decyzyjnych w funkcji celu i tworzą kolumnowy wektor c = {c1 c2 . . . cn }⊺ .
— strona 1 z 8—
✐
✐
✐
✐
✐
✐
Document: ‘‘Exercise*02*-*manual’’ --- 2014/11/12 --- 8:31 --- page 2 of 8
✐
✐
Podobnie jak funkcja celu, tak i każde z ograniczeń zadania LP da się
zapisać w postaci kombinacji wyrażeń typu ai xi . Funkcje ograniczeń g(x
przyjmują zatem postać
aj1 x1 + aj2 x2 + aj3 x3 + . . . ajn xn ¬ bj ⇋
i=1
aji xi ¬ bj
(2)
lsk
a
gj (x) :
n
X
Lu
be
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)
Po
l
ite
ch
ni
ka
W standardowym sformułowaniu zagadnienia przyjmuje się, że każda ze
zmiennych decyzyjnych jest nieujemna xi ­ 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ń
gj (x) odcina półprzestrzeń pewną hiperpłaszczyzną gj (x) = 0. Interpretacja
tego faktu jest bardzo łatwa w przypadku zadań dwu-wymiarowych. Pełna
płaszczyzna zmiennych dopuszczalnych (x1 , x2 ) jest rozcinana prostą-ograniczeniem gj (x1 , x2 ) = 0 i jedna z powstałych w ten sposób pół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
jakie posiada rozwiązanie x⋆ takiego zadania. Obowiązuje bowiem twierdzenie — jeśli funkcja liniowa f (x) ma ekstremum warunkowe w zbiorze wypukłym określonym układem nierówności A · x ¬ b, to leży ono w wierzchoł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
— strona 2 z 8—
✐
✐
✐
✐
✐
✐
Document: ‘‘Exercise*02*-*manual’’ --- 2014/11/12 --- 8:31 --- page 3 of 8
✐
✐
Algorytm SIMPLEX
Lu
be
• metoda Gaussa-Jordana,
• dekompozycja LU (działa dla macierzy kwadratowych),
• metoda SIMPLEX.
lsk
a
bowiem wykazać, że dziedzina zadania n-wymiarowego, w którym występuje
n!
narożników. Stąd też do rozwiąm ograniczeń nierównościowych ma m!(n−m)!
zywania bardziej złożonych problemów, poza wspomnianą wcześniej metodą
rozwiązań bazowych polegającą na systematycznym przeglądzie narożników,
stosuje się najczęściej jeden z poniższych sposobów:
A·x = b
(4)
x­0 i b­0
(5)
ite
oraz
ch
ni
ka
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
Po
l
Zapisanie zagadnienia w postaci kananonicznej może wymagać pewnych
modyfikacji w stosunku do pierwotnego sformułowania (3). W szczególności
P
dotyczy to ograniczeń typu ni=1 ai xi ¬ b, które można sprowadzić do postaci
kanonicznej poprzez dodanie do pierwotnej nierówności tzw. zmiennej dopełP
niającej xn+1 . Otrzymuje się wtedy równość ni=1 ai xi + xn+1 = b. Podobnie
P
ograniczenie typu
ai xi ­ b można zapisać w żądanej postaci poprzez
P
uzupełnienie nierówności o tzw. zmienną nadmiarową ni=1 ai xi − xn+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
— strona 3 z 8—
✐
✐
✐
✐
✐
✐
Document: ‘‘Exercise*02*-*manual’’ --- 2014/11/12 --- 8:31 --- page 4 of 8
✐
✐
Sposób rozwiązania LP za pomocą algorytmu SIMPLEX sprowadza się
do kilkukrotnego wykonania poniższej sekwencji:
lsk
a
(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.
Lu
be
Przykład 1 Wyznaczyć maximum funkcji
f (x1 , x2 , x3 ) = 5x1 + 4x2 + 3x3
wobec ograniczeń



2x1


4x
ch
ni
ka
+ 3x2 + x3
1 + x2 + 2x3


3x + 4x2 + 2x3

 1


x1 , x2 , x3
¬5
¬ 11
¬8
­0
(6)
(7)
Zapis w postaci kanonicznej:


2x1




4x
+ 3x2 + x3 + x4
1 + x2 + 2x3 + x5


3x1 + 4x2 + 2x3 + x6




x1 , x2 , x3 , x4 , x5 , x6
=5
= 11
=8
­0
(8)
Po
l
ite
wymaga wprowadzenia zmiennych dopełniających x4 , x5 , x6 . Typujemy bazowe 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
x4
x5
x6
f (x1 , x2 , x3 )
= 5 − 2x1 − 3x2 − x3
= 11 − 4x1 − x2 − 2x3
= 8 − 3x1 − 4x2 − 2x3
=
5x1 + 4x2 + 3x3
­ 0 x1 ¬ 5/2
­ 0 x1 ¬ 11/4
­ 0 x1 ¬ 8/3
— strona 4 z 8—
✐
✐
✐
✐
✐
✐
Document: ‘‘Exercise*02*-*manual’’ --- 2014/11/12 --- 8:31 --- page 5 of 8
✐
✐
ch
ni
ka
Lu
be
lsk
a
Na mocy warunku (5) każda ze zmiennych bazowych x4 , . . . , x6 musi być
nieujemna.
Przystępujemy do wytypowania zmiennej wchodzącej do bazy (ad pkt.
(b)). Spośród zmiennych swobodnych x1 , x2 , x3 wybieramy tę, która daje
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
wzrost f (x) jest x1 — z uwagi na największą wartość mnożnika (liczba 5).
Aby ustalić zmienną wychodzącą z bazy (ad pkt. (c)) badamy ograniczenia nałożone na zmienną wchodzącą x1 , jakie wynikają z faktu, że wszystkie
zmienne x, w tym także zmienne bazy są nieujemne — patrz (5). Przykładowo 1 wiersz tableau stanowi, że x4 ­ 0 gdzie x4 = 5 − 2x1 − 3x2 − x3 ;
a zatem po wprowadzeniu x1 do bazy i pamiętając, że x2 i x3 jako zmienne
swobodne są 0, dostajemy warunek 5 − 2x1 ­ 0 ⇒ x1 ¬ 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
pierwszy wiersz tableau; tym samym zmienną wchodzącą do bazy jest x4 .
Przekształcając pierwszy wiersza uzyskuje się:
x1 =
5 3
1
1
− x2 − x3 − x4
2 2
2
2
(9)
Po
l
ite
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
x1
=
5
2
− 23 x2 − 12 x3 − 12 x4
x5
= 11 −
x6
= 8−
f (x2 , x3 , x4 ) =
­0
4 52 − 23 x2 − 12 x3 − 12 x4 − x2 − 2x3
3 52 − 23 x2 − 12 x3 − 12 x4 − 4x2 − 2x3
5 52 − 23 x2 − 12 x3 − 12 x4 + 4x2 + 3x3
­0
­0
Po wykonaniu przekształceń i uporządkowaniu otrzymujemy ostateczną
postać drugiego tableau
— strona 5 z 8—
✐
✐
✐
✐
✐
✐
Document: ‘‘Exercise*02*-*manual’’ --- 2014/11/12 --- 8:31 --- page 6 of 8
5
2
− 23 x2 − 13 x3 − 21 x4
­0
x3 ¬ 5
+ 2x4
­0
bez ogr.
1
2
+ 12 x2 − 31 x3 + 23 x4
­0
x3 ¬ 1
25
5
− 72 x2 + 31 x3 − 52 x4
x1
=
x5
= 1 + 5x2
x6
=
f (x2 , x3 , x4 ) =
✐
lsk
a
✐
W nowym tableau zmienną wchodzącą do bazy (najbardziej poprawiającą wartość funkcji celu) jest x3 . Sprawdzając ograniczenia nałożone na
zmienną wchodzącą znajdujemy zmienną wychodzącą z bazy — jest to x6 .
Lu
be
x3 = 1 + x2 + 3x4 − 2x6
(10)
Postępując jak poprzednio zapisujemy trzecie tableau:
x3
x1
x5
f (x2 , x4 , x6 )
=
=
=
=
1 + x2 + 3x4 − 2x6
2 − 2x2 − 2x4 + x6
1 + 5x2 + 2x4
13 − 3x2 − x4 − x6
­0
­0
­0
ch
ni
ka
Dalsza poprawa rozwiązania nie jest możliwa, bo wszystkie współczynniki
wyrażenia funkcji celu f (x2 , x4 , x6 ) są ujemne. A zatem zmiennymi swobodnymi zadania są zmienne x2 , x4 i x6 — i przyjmują one wartość zero; zaś
wartości zmiennych bazy wynoszą x3 = 1, x1 = 2 i x5 = 1.
Stąd rozwiązaniem zadania pierwotnego f (x1 , x2 , x3 ) są wartości x⋆1 = 2,
x⋆2 = 0 i x⋆3 = 1, a max. funkcji celu wynosi 13.
ite
3. PRZEBIEG ĆWICZENIA
Po
l
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ć zadanie w postaci kanonicznej — patrz (4) i (5) oraz (??).
— strona 6 z 8—
✐
✐
✐
✐
✐
✐
Document: ‘‘Exercise*02*-*manual’’ --- 2014/11/12 --- 8:31 --- page 7 of 8
✐
✐
ite
ch
ni
ka
Lu
be
lsk
a
• 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.
Po
l
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.
— strona 7 z 8—
✐
✐
✐
✐
✐
✐
Document: ‘‘Exercise*02*-*manual’’ --- 2014/11/12 --- 8:31 --- page 8 of 8
✐
Lu
be
lsk
a
✐
Rysunek 2. Tabela LiPS Model definiująca zadanie programowania
liniowego programie LiPS
ch
ni
ka
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ć:
Tabelkę identyfikacyjną.
Cel ćwiczenia i schemat analizowanej konstrukcji.
Sformułowanie zadania optymalizacji wg. (1)-(2)
Sformułowanie kanoniczne zadania optymalizacji (4) z zaznaczeniem zmiennych dopełniających/nadmiarowych.
Pierwsze tableu algorytmu SIMPLEX.
Wydruk raportu z obliczeń.
Omówienie wyników.
Wnioski
Po
l
ite
1.
2.
3.
4.
5.
6.
7.
8.
— strona 8 z 8—
✐
✐
✐
✐