23
Metody optymalizacji dr inż. Paweł Zalewski Akademia Morska w Szczecinie

Wykłady z matematyki stosowanej - metody optymalizacji

Embed Size (px)

Citation preview

Metody optymalizacji

dr inż. Paweł ZalewskiAkademia Morska w Szczecinie

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