Wykłady z matematyki stosowanej - metody optymalizacji
Transcript of Wykłady z matematyki stosowanej - metody optymalizacji
Zadaniem optymalizacji jest wyznaczenie spośród dopuszczalnych
rozwiązań danego problemu rozwiązania najlepszego za względu na
przyjęte kryterium (wskaźnik) jakości (np. koszt, zysk, niezawodność,
ryzyko). Badaniem metod optymalizacji zajmuje się teoria optymalizacji.
W literaturze ekonomii optymalizacja jest często nazywana
programowaniem gospodarczym, niekiedy mówi się też o badaniach
operacyjnych. Zespół zależności, na podstawie których wyznacza się
optymalne rozwiązania (decyzje), nazywa się modelem matematycznym.
Jeżeli wszystkie zależności mają charakter funkcji liniowych, to mamy do
czynienia z optymalizacją liniową (programowanie liniowe), jeżeli
natomiast choć jedna z zależności jest nieliniowa - z optymalizacją
nieliniową.
Do innych matematycznych metod optymalizacji należą: programowanie
sieciowe (sieci neuronowe) i rozmyte, stochastyczne (polegające na
wyborze decyzji „przeciętnie optymalnej”), teoria gier, teoria kolejek,
rachunek wariacyjny, metody analizy funkcjonalnej.- 2 -
Optymalizacja - definicje:
Teoria obsługi masowej, teoria kolejek, teoria
ogonków: w badaniach operacyjnych jedna
z opartych na rachunku prawdopodobieństwa teorii
podejmowania optymalnych decyzji. Zajmuje się
konstruowaniem i rozwiązywaniem modeli
matematyczno-statystycznych, przydatnych w wa-
runkach konieczności obsługi w krótkim okresie
czasu dużej ilości klientów. Impulsem jej powstania
były badania dotyczące projektowania
i eksploatacji central telefonicznych. Przedmiot
teorii obsługi masowej oraz stosowane przez nią
metody szczegółowe opisał w 1955 rosyjski
matematyk A.J. Chinczin.
Rachunek wariacyjny: dział analizy
matematycznej badający warunki osiągania
wartości ekstremalnych przez funkcjonały.
Rachunek wariacyjny jest jedną z podstawowych
metod fizyki matematycznej.
Analiza funkcjonalna: dział matematyki powstały
w XX w., zajmujący się badaniem faktów
z różnorodnych dziedzin za pomocą metod
matematycznych (równania całkowe, równania
różniczkowe, algebra liniowa i inne). Analiza
funkcjonalna znalazła szerokie zastosowanie
w różnych dziedzinach wiedzy, jej rozwojowi
zasłużyli się matematycy polscy, m.in.: S. Banach
(uważany za jej twórcę), H. Steinhaus, S. Mazur,
W. Orlicz, J.P. Schauder.
- 3 -
Optymalizacja liniowa – programowanie liniowe:
Rozwiązanie zadania programowania liniowego metodą SIMPLEX:
Zadanie należy sprowadzić do postaci kanonicznej, to znaczy do postaci,
w której poszukujemy maksimum funkcji przy ograniczeniach
równościowych i wszystkich zmiennych nieujemnych, przy czym w tablicy
ograniczeń musi dać się wyróżnić macierz jednostkowa, a prawe strony
muszą być dodatnie.
W przypadku poszukiwania minimum funkcji dla zależności liniowych:
gdzie x jest wektorem argumentów funkcji f.
Aby ograniczenia przekształcić w równości, dodajemy do lewych stron
(lub odejmujemy) zmienne uzupełniające o wartościach dodatnich.
,maxmin xfxf
- 4 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Znaleźć minimum funkcji:
31 32 xxxf
przy ograniczeniach:
0,,
,12
,443
,32
321
32
32
321
xxx
xx
xx
xxx
- 5 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Poszukiwanie minimum funkcji liniowej f(x) jest równoważne
poszukiwaniu maksimum tej funkcji wziętej z przeciwnym znakiem, a więc
funkcji:
311 32 xxxfxf
Ograniczenia przyjmą postać:
0,,,,
,12
,443
,32
54321
32
532
4321
xxxxx
xx
xxx
xxxx
- 6 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Macierz ograniczeń, czyli tablica współczynników przy argumentach x1, x2,
x3, x4, x5 w trzech równaniach ograniczeń ma postać:
00120
10430
01121
O
,
100
010
001
W tablicy tej nie można jednak jeszcze wyróżnić macierzy jednostkowej:
gdyż brakuje w niej wektora kolumnowego:
1
0
0
- 7 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Po lewej stronie trzeciego ograniczenia trzeba więc dodać zmienną
„sztuczną” x6, która ten brak wyrówna.
Aby zmienna x6 nie miała wpływu na rozwiązanie i aby można ją było
szybko wyeliminować z zadania w trakcie jego rozwiązywania,
uzupełniamy funkcję celu o składnik -wx6 z bardzo dużym
współczynnikiem dodatnim w. W ten sposób niejako „pogarszamy”
znacznie funkcję celu „oddalając” jej wartość (znacznie zmniejszając) od
prawdziwego maksimum.
- 8 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Zadanie przyjmie więc postać (kanoniczną) wyznaczenia maksimum
funkcji celu f1(x):
Przy ograniczeniach:
0,,,,,
,12
,443
,32
654321
632
532
4321
xxxxxx
xxx
xxx
xxxx
6311 32max wxxxxf
- 9 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Budujemy pierwszą tablicę „simplexów”:
ci 2 0 3 0 0 -w
Baza cb b A1 A2 A3 A4 A5 A6
A1 2 3 1 2 1 1 0 0
A5 0 4 0 3 4 0 1 0
A6 -w 1 0 2 1 0 0 1
Wskaźniki 6 - w 0 4 - 2w -1 - w 2 0 0
Współczynniki
występujące przy
zmiennych xi w
funkcji celu f1(x)
Wartości po
prawych stronach
ograniczeń
Współczynniki
lewych stron
ograniczeń
Wektory
współczynników
ograniczeń
Wartości ci dla
jednostkowych
wektorów Ai
Jednostkowe
wektory Ai
∑ (cbAi)-ci∑( cbb )
Iloczyn skalarny cbb określa wartość funkcji celu w danym kroku, wektor
b wartości zmiennych bazowych xi.
- 10 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Najmniejsza (najbardziej ujemna) wartość wskaźnika w dolnym wierszu
wyznacza wektor, jaki w następnym kroku wprowadzimy do bazy.
W naszym przypadku będzie to wektor A2. Rozwiązanie osiągniemy, gdy
nie będzie już wskaźnika o wartości ujemnej.
Wektor usuwany z bazy wyznacza się obliczając ilorazy
charakterystyczne dla wszystkich dodatnich elementów wektora
wprowadzanego do bazy (A2) według zależności:
2
1
,3
4
,2
3
6
6
5
5
1
1
2
06
2
05
2
01
A
A
A
A
A
A
A
br
A
br
A
br
- 11 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Z bazy należy usunąć wektor, którego element występuje w ilorazie o
najmniejszej wartości spośród wyznaczonych – w omawianym
przykładzie będzie to wektor A6 (r06 = r0 = ½)
Ponieważ jest to wektor odpowiadający zmiennej sztucznej, usuwamy go
nie tylko z bazy, ale z całej tablicy simplexów.
Wyznaczony iloraz r0 podaje jednocześnie nową wartość elementu
wektora b w wierszu wektora wprowadzanego do bazy (b’A2 = r0, gdyż
wprowadzamy wektor A2). Pozostałe dwa nowe elementy wektora b
wyznacza się z zależności:
2
53
2
14
,222
13
555
111
20
'
20
'
AAA
AAA
Arbb
Arbb
- 12 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Wprowadzany do bazy wektor przyjmuje wartości jednostkowe, a
wskaźniki odpowiadające wektorom bazowym (dolny wiersz tabeli
simplexów) będą zawsze wynosić 0. Wartość funkcji celu wzrasta do 4.
Ci 2 0 3 0 0
Baza cb b’ A1’ A2
’ A3’ A4
’ A5’
A1 2 2 1 0 0
A5 0 5⁄2 0 0 1
A2 0 ½ 0 1 0
Wskaźniki 4 0 0 0
- 13 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Następnie należy wyznaczyć ilorazy kolumnowe dla wektorów poza-
bazowych:
02
0
,2
1
6
6
2
6
6
2
2
4'
446
2
3'
336
A
A
A
A
A
A
A
AAr
A
AAr
- 14 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
ci 2 0 3 0 0
Baza cb b’ A1’ A2
’ A3’ A4
’ A5’
A1 2 2 1 0 0
A5 0 5⁄2 0 0 1
A2 0 ½ 0 1 ½ 0 0
Wskaźniki 4 0 0 0
- 15 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Na podstawie otrzymanych ilorazów kolumnowych wyznacza się
brakujące elementy tablicy:
0300
,2
53
2
14
,1201
,022
11
555
555
111
111
2464
'
4
2363
'
3
2464
'
4
2363
'
3
AAA
AAA
AAA
AAA
ArAA
ArAA
ArAA
ArAA
- 16 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Druga tablica simplexów:
ci 2 0 3 0 0
Baza cb b A1 A2 A3 A4 A5
A1 2 2 1 0 0 1 0
A5 0 5⁄2 0 0 5⁄2 0 1
A2 0 ½ 0 1 ½ 0 0
Wskaźniki 4 0 0 -3 2 0
- 17 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Najmniejsza (najbardziej ujemna) wartość wskaźnika w dolnym wierszu
wyznacza wektor, jaki w następnym kroku wprowadzimy do bazy.
W naszym przypadku będzie to wektor A3.
Wektor usuwany z bazy wyznacza się obliczając ilorazy
charakterystyczne dla wszystkich dodatnich elementów wektora
wprowadzanego do bazy (A3):
1
212
1
,1
25
25
,0
2
2
2
5
5
1
1
3
02
3
05
3
01
A
A
A
A
A
A
A
br
A
br
A
br
- 18 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Z bazy należy usunąć wektor, którego element występuje w ilorazie o
najmniejszej wartości spośród wyznaczonych – mamy dwa takie wektory:
A2 i A5. Wybieramy jeden z nich np. A2 (r02 = r0 = 1)
Wyznaczony iloraz r0 podaje jednocześnie nową wartość elementu
wektora b w wierszu wektora wprowadzanego do bazy (b’A3 = r0, gdyż
wprowadzamy wektor A3). Pozostałe dwa nowe elementy wektora b
wyznacza się z zależności:
02
51
2
5
,2012
555
111
30
'
30
'
AAA
AAA
Arbb
Arbb
- 19 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Wprowadzany do bazy wektor przyjmuje wartości jednostkowe, a
wskaźniki odpowiadające wektorom bazowym będą zawsze wynosić 0.
Wartość funkcji celu wzrasta do 7.
Ci 2 0 3 0 0
Baza cb b’ A1’ A2
’ A3’ A4
’ A5’
A1 2 2 1 0 0
A5 0 0 0 0 1
A3 3 1 0 1 0
Wskaźniki 7 0 0 0
- 20 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Następnie należy wyznaczyć ilorazy kolumnowe dla wektorów poza-
bazowych:
0
21
0
,2
21
1
2
2
3
2
2
3
3
4'
442
3
2'
222
A
A
A
A
A
A
A
AAr
A
AAr
- 21 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Na podstawie otrzymanych ilorazów kolumnowych wyznacza się
brakujące elementy tablicy:
02
500
,52
520
,1001
,0020
555
555
111
111
3424
'
4
3222
'
2
3424
'
4
3222
'
2
AAA
AAA
AAA
AAA
ArAA
ArAA
ArAA
ArAA
- 22 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
Trzecia tablica simplexów:
ci 2 0 3 0 0
Baza cb b A1 A2 A3 A4 A5
A1 2 2 1 0 0 1 0
A5 0 0 0 -5 0 0 1
A3 3 1 0 2 1 0 0
Wskaźniki 7 0 6 0 2 0
- 23 -
Optymalizacja liniowa – programowanie liniowe:
Przykład rozwiązania zadania optymalizacyjnego metodą SIMPLEX:
W dolnym wierszu (wskaźnikowym) nie ma już elementów ujemnych, a
więc rozwiązano zadanie.
Wartość funkcji f1(x) jest równa 7, a wartości zmiennych x1=2, x5=0, x3=1.
Pozostałe zmienne (nie występujące w kolumnie b ostatniej tablicy
simplexów) są równe zeru (x2=0, x4=0).
Zatem pomijając zmienne sztuczne otrzymujemy ostateczne rozwiązanie
zadania dla funkcji f(x), dla której poszukiwaliśmy minimum:
71,0,2min f