ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W …rg1.polsl.pl/kaula/matlab_cw5.pdf · ZASTOSOWANIE...

6

Click here to load reader

Transcript of ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W …rg1.polsl.pl/kaula/matlab_cw5.pdf · ZASTOSOWANIE...

Page 1: ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W …rg1.polsl.pl/kaula/matlab_cw5.pdf · ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W ZAGADNIENIAC H WSPOMAGANIA PROCESU PODEJMOWANIA DECYZJI Wst ęp

ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W ZAGADNIENIAC H WSPOMAGANIA PROCESU PODEJMOWANIA DECYZJI

Wstęp

Problem podejmowania decyzji jest jednym z zagadnień sterowania nadrzędnego. Proces podejmowania decyzji obejmuje trzy podstawowe fazy:

- rozpoznanie celu problemu,

- zbudowanie modelu sytuacji decyzyjnej,

- wybór decyzji.

Budowa modeli ujmujących złożoność problemów decyzyjnych w logiczne ramy stanowi istotę podejścia charakterystycznego dla badań operacyjnych. Modele takie powinny jak najlepiej odzwierciedlać badany system produkcyjny (ekonomiczny), a jego zachowanie powinno być na tyle analogiczne do zachowania rzeczywistego systemu, aby na jego postawie móc badać i zmieniać w pożądany sposób dany system. W większości modele badań operacyjnych wykorzystywane są do wyznaczania działań optymalnych, dlatego nazywa się je modelami optymalizacyjnymi.

Spośród różnych analitycznych metod stosowanych do rozwiązywania takich problemów do najefektowniejszych zaliczane jest programowanie liniowe (linear programming). Zadanie programowania liniowego zawierające tylko dwie zmienne decyzyjne można prosto rozwiązać w sposób graficzny. Zagadnienia o większej liczbie zmiennych efektywnie można rozwiązać za pomocą programów służących do obliczeń numerycznych np. MATLAB-a. Najczęściej stosowanymi problemami rozwiązywanymi za pomocą programowania liniowego są zagadnienia transportowe i problem optymalnych mieszanek: 1. Modele transportowe Problem transportowy w praktyce najogólniej określany jest jako problem optymalnej dystrybucji towarów. Rozwiązanie problemu transportowego daje odpowiedź na pytanie, jak przy najmniejszych kosztach zorganizować przewozy masy towarowej od dostawców do odbiorców. Z problemami transportowymi wiążą się również takie zagadnienia jak: transportowo-produkcyjne, lokalizacji obiektów, problem obsady, problem pustych przebiegów itd. 2. Problem mieszanek W zagadnieniu optymalnego składu mieszaniny podejmujący decyzję pragnie określić jakie ilości surowców mineralnych należy użyć do przerobienia na gotowe do sprzedaży wyroby.

Page 2: ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W …rg1.polsl.pl/kaula/matlab_cw5.pdf · ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W ZAGADNIENIAC H WSPOMAGANIA PROCESU PODEJMOWANIA DECYZJI Wst ęp

2

Przykład 1 Dwa gatunki węgla A i B zawierają zanieczyszczenia fosforem i popiołem. W pewnym procesie przemysłowym potrzeba co najmniej 90 ton żeliwa zawierającego nie więcej niż 0.03% fosforu i nie więcej niż 4% popiołu. Procent zanieczyszczeń i ceny zakupu poszczególnych gatunków węgla (w jednostkach względnych) podaje tablica 1. Tablica 1

Gatunek Procentowe zawartości zanieczyszczeń Cena zakupu Węgla fosforu popiołu 1 tony węgla (j. wzg)

A 0,02 3 500 B 0,05 5 400

Problem: Jak zmieszać wymienione dwa gatunki węgla, aby uzyskać paliwo o możliwie najniższym koszcie, spełniające wyżej wymienione wymagania ? Rozwiązanie: Należy zbudować model matematyczny opisujący przedstawioną sytuację. Niech X1 oznacza gatunek węgla A, a X2 gatunek węgla B. Pierwsze równanie dotyczy minimalnej ilości węgla (w tonach) potrzebnej w rozpatrywanym procesie przemysłowym: X1 + X2 >= 90 Ograniczenia jakościowe są następujące: 0,02*X1 + 0,05*X2 <= 0,03*(X1 + X2 ) 3*X1 + 5*X2 <= 4*(X1 + X2 ) Funkcja celu jest następująca: F(X1, X2) = 500*X1 + 400*X2 --> min W sytuacji gdy mamy do czynienia tylko z dwiema zmiennymi decyzyjnymi problem optymalizacji możemy rozwiązać metodą geometryczną.

Page 3: ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W …rg1.polsl.pl/kaula/matlab_cw5.pdf · ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W ZAGADNIENIAC H WSPOMAGANIA PROCESU PODEJMOWANIA DECYZJI Wst ęp

3

Metoda geometryczna Polega na wykreśleniu funkcji opisujących poszczególne zmienne na wykresie X1-0-X2. Otrzymamy w ten sposób obszar możliwych rozwiązań (rys.1). Tylko punkty przecięcia ograniczające poszczególne obszary mogą być rozwiązaniem zagadnienia. W celu określenia minimum funkcji celu wartości współrzędnych poszczególnych punktów przecięcia wstawiamy do równania funkcji celu i obliczamy jej wartość. Wartość minimalna funkcji celu w jednym z punktów przecięcia określi poszukiwane wartości zmiennych decyzyjnych X1, X2.

0

10

20

30

40

50

60

70

80

90

0 5 10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 105 110 115 120 125 130 135

X1

X2 0.02x1+0.05x2<=0.03*903x1+5x2<=4*90

x1+x2>=90

Rys.1 Obszary ograniczeń W naszym przykładzie obszar ograniczający to: ABCD Punkty przecięcia to: A(60,30); B(90,18); C(120,0); D(90,0); Funkcja celu w tych punktach ma wartość: F(X1A, X2A) =42000 --> minimum F(X1B, X2B) =52200 F(X1C, X2C) =60000 F(X1D, X2D) =45000 Rozwiązanie: X1=60 ton, X2=30 ton Innym sposobem określenia punktu przecięcia wyznaczającego minimalną wartości funkcji celu jest wykreślenie tzw. linii śladowej. Ślad tworzymy z funkcji minimalnej przyjmując jako minimalną - dowolną wartość liczbową (najprościej wielokrotność X1 i X2): np. 500X1+400X2=20000. Tworzymy prostą odcinkową (punkty X1=0,X2=50 ; X1=40, X2=0). Równolegle do tej prostej przesuwamy się do obszaru rozwiązań i pierwszy (zaczynając od początkowego obszaru rozwiązań-jak w przykładzie) lub ostatni (zaczynając od końcowego obszaru rozwiązań) punkt przecięcia (wierzchołek obszaru ograniczającego) jest rozwiązaniem. Dla naszego zadania jest to punkt A.

Page 4: ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W …rg1.polsl.pl/kaula/matlab_cw5.pdf · ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W ZAGADNIENIAC H WSPOMAGANIA PROCESU PODEJMOWANIA DECYZJI Wst ęp

4

Programowanie liniowe w MATLAB-ie Problem programowania liniowego definiuje się w postaci :

min 'f x przy ograniczeniach liniowych

Ax b≤

oraz więzach nakładanych na zmienne v x vlb ub≤ ≤

gdzie: x jest wektorem zmiennych optymalizowanych, f, b są danymi wektorami współczynników liczbowych, A jest macierzą, vlb , vub są wektorami ograniczającymi zakres zmiennych optymalizowanych. Przy wystąpieniu ograniczeń równościowych powinny być one umieszczone w pierwszych wierszach macierzy A i wektora b. Dla naszego przykładu macierz A i pozostałe wektory mają postać:

−−

=

11

02,001,0

11

A ,

=

0

0

90

b ,

=

400

500f ,

=

0

0lbv ,

=

100

100ubv

Instrukcje w MATLABie: A=[-1 -1; -0.01 0.02; -1;1]; b=[-90 0 0]'; f=[500 400]'; vlb=[0 0]'; vub=[100 100]'; x0=[0 0]'; Rozwiązanie problemu optymalizacyjnego za pomocą polecenia:

x=lp(f,A,b,vlb,vub,x0,1) przy założonych dowolnych wartościach x0 uzyskuje się rozwiązanie optymalne: x = 60.0000 30.0000

Page 5: ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W …rg1.polsl.pl/kaula/matlab_cw5.pdf · ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W ZAGADNIENIAC H WSPOMAGANIA PROCESU PODEJMOWANIA DECYZJI Wst ęp

5

Przykład 2 Należy znaleźć min -> -5x1+4x2-10x3

przy ograniczeniach liniowych: x1+x2=0 x1 - x2 +x3 <= 30 x1 - 2x2 -5x3 <= 50 3x1-x2 <= 10 oraz więzach nakładanych na zmienne -10<= x1 <=10, -5<= x2 <=15, 0<= x3 <=5, Rozwiązanie: W programie MATLAB należy przygotować poszczególne wektory i macierze w następującej postaci:

A =−

1 1 0

1 1 1

1 2 5

3 1 0

, b =

0

30

50

10

,

f =

5

4

10

, v lb =

10

5

0

, vub =

10

15

5

Instrukcje w MATLABie: A=[1 1 0; 1 -1 1;2 1 5; 1 -1 1]; b=[0 30 50 0]'; f=[-5 4 -10]'; vlb=[-10 -5 0]'; vub=[10 15 5]'; x0=[0 0 0]'; Rozwiązanie problemu optymalizacyjnego za pomocą polecenia:

x=lp(f,A,b,vlb,vub,x0,1) przy założonych dowolnych wartościach x0 uzyskuje się rozwiązanie optymalne: x = 2.5000

Page 6: ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W …rg1.polsl.pl/kaula/matlab_cw5.pdf · ZASTOSOWANIE PROGRAMOWANIA LINIOWEGO W ZAGADNIENIAC H WSPOMAGANIA PROCESU PODEJMOWANIA DECYZJI Wst ęp

6

-2.5000 5.0000 Rozwiązanie: x1= 2.5 x2= -2.5 x3= 5.0