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