background image

 

 

Rozdział 14

PROGRAMOWANIE 

LINIOWE

background image

 

 

Sld.14.2. Programowanie liniowe

Wiele  problemów,  które  chcemy  rozwiązywać  w 

ekonometrii, to zadania 

optymalizacji

problem 

najkrótszej ścieżki, 

najtańszego drzewa rozpinającego, 

najdłuższego podciągu rosnącego

 itd. 

W  takich  przypadkach  poszukujemy  rozwiązania, 

które 

1.spełnia  pewne  ograniczenia  (np.  ścieżka  musi 

przechodzić po krawędziach grafu i prowadzić z 

s

 do 

t

drzewo musi obejmować wszystkie wierzchołki) oraz 

2.jest  możliwie  najlepsze,  według  pewnego  dobrze 

zdefiniowanego 

kryterium, 

spośród 

wszystkich 

rozwiązań spełniających te ograniczenia.

background image

 

 

Sld.14.3. 

Programowanie 

liniowe

Programowanie  liniowe  (ang. 

linear  programming

obejmuje szeroką klasę  zagadnień  optymalizacyjnych, 

w  których  zarówno  ograniczenia,  jak  i  kryterium 

optymalizacji  są  funkcjami  liniowymi.  Okazuje  się,  że 

można  w  ten  sposób  wyrazić  ogromną  liczbę 

problemów. 

W  problemie  programowania  liniowego  dany  jest 

zbiór  zmiennych,  którym  chcemy  przypisać  wartości 

rzeczywiste w taki sposób, aby 

1. spełnić  pewien  zbiór  równań    i/lub  nierówności 

liniowych zawierających te zmienne, 

2. znaleźć  optymalną  wartości  (najmniejszą  lub 

największą) danej funkcji celu (ang. 

objective function

).

background image

 

 

Sld.14.4. Przykład 1: maksymalizacja zysku -1

Pewien producent czekolady oferuje dwa wyroby: 

-czekoladki 

X1 

oraz luksusowe 

X2

Ile  każdego  z  nich  powinien  produkować,  aby 

zmaksymalizować  swoje 

zyski? 

Powiedzmy, 

że 

produkuje dziennie 

x

1

 pudełek 

X1

, każde w cenie 1 $, 

oraz 

x

2

 pudeł 

X2

 droższych, po 6 $ za sztukę.

x

1

  i  x

2

  są  nieznanymi  wartościami,  które  chcemy 

obliczyć. Istnieją ograniczenia: 

•Oczywiste 

x

1

, x

2

  0

.

•Dzienne  zapotrzebowanie  na  czekoladki 

X1

 

ogranicza się  do 

200 pudeł i 

X2

 do 300 pudeł. 

•Pracownicy  mogą  łącznie  wyprodukować  co 

najwyżej 400 pudeł czekoladek dziennie. 

Ile  wynosi  wielkość  produkcji  obu  typów 

czekoladek zapewniająca optymalny zysk?

background image

 

 

Sld.14.5.

 

Przykład 1: maksymalizacja zysku 

- 2

 

Sytuację opisujemy za pomocą zadania 
programowania liniowego:

funkcja celu       

            C = max (x

1

 + 6x

);

ograniczenia:      x

1

 

 200;   x

2

 

 300;   x

1

 + x

2

 

 

400;    x

 

x

2

 

 0 .

Równanie liniowe zmiennych x

1

 x

2

 definiuje linię  prostą na 

płaszczyźnie dwuwymiarowej (2D), a nierówność liniowa wyznacza 
półpłaszczyznę  - obszar po jednej stronie prostej. Zbiór wszystkich 
rozwiązań dopuszczalnych jest częścią wspólną pięciu pół płaszczyzn. 
Jest to wielokąt :

background image

 

 

Sld.14.6. Rozwiązywanie zadań  

programowania liniowego

Zadania  programowania  liniowego 
(PL) możemy rozwiązywać przy użyciu 

metody sympleks

wymyślonej  przez  George'a  Dantziga 
w 1947 roku. 

Algorytm  ten  rozpoczyna  od 

pewnego  wierzchołka,  może  to  być 
(0,0), po czym wielokrotnie przechodzi 
do 

sąsiedniego 

wierzchołka 

(połączonego 

krawędzią 

obszaru 

dopuszczalnego)  o  lepszej  wartości 
funkcji celu. W ten sposób wspina się  
po  wierzchołkach  wielokąta,  skacząc 
od  sąsiada  do  sąsiada  i  stale 
zwiększając zysk na swojej drodze. 

background image

 

 

 

Sld.14.7. Przykład 2: maksymalizacja zysku – 
2.1

Pewien producent czekolady oferuje trzy  wyroby: 

 - czekoladki 

X1 

; luksusowe 

X2

oraz  bardziej ekskluzywny 

X3

Ile każdego z nich powinien produkować, aby 
zmaksymalizować swoje zyski? Produkuje dziennie x

1

 pudełek 

X1

 w cenie 1 $, x

2

 pudeł  

X2

 po 6 $, oraz 

X3

 po 13 $ za sztukę. 

x

1,

 x

i  x

 chcemy obliczyć. Istnieją ograniczenia :

Oczywiste x

1

, x

2

, x

 0.

Dzienne zapotrzebowanie na czekoladki 

X1

 ogranicza się  do 

200 pudeł, i 

X2

 do 300 pudeł. 

Pracownicy mogą łącznie wyprodukować co najwyżej 400 
pudeł czekoladek dziennie. 

Wyroby 

X1 

X3 

wymagają tych samych maszyn pakujących, 

przy czym pakowanie 

X3

 trwa trzy razy dłużej, co narzuca 

jeszcze jedno ograniczenie 

x

1

 + 3x

3

 

 

600. 

Ile wynosi wielkość produkcji obu typów czekoladek 

zapewniająca optymalny zysk?

background image

 

 

Sld.14.8. Przykład 2: maksymalizacja 
zysku – 2.2

Przechodzimy  z  wierzchołka  do  wierzchołka  po  krawędziach 

wielościanu,  stale  zwiększając  zysk.  Rysunek  przedstawia  jedną  z 
możliwych 

dróg. 

Odpowiada 

ona 

następującemu 

ciągowi 

wierzchołków i zysków:

A(0, 0, 0)  B(200, 0, 0)  C(200, 200, 0)  D(200, 0, 200)  E(0, 

300, 100)

    0$               200 $       1400 $                      2800 $                    

3100 $

background image

 

 

Sld.14.8. Algorytm sympleks

Algorytm  sympleks  dla  danego  zbioru  nierówności 

liniowych  i  liniowej  funkcji  celu  znajduje  optymalny  punkt 

dopuszczalny za pomocą następującej strategii:

• niech v - dowolny wierzchołek obszaru dopuszczalnego 
• while 

istnieje sąsiad v' wierzchołka v o lepszej wartości celu: 

• przypisz 

v = v‘.

W każdej iteracji algorytm sympleks wykonuje dwa 

zadania:

1. Sprawdza, czy bieżący wierzchołek jest optymalny 

(jeśli tak, zatrzymuje się ).

2. Określa następny wierzchołek, do którego powinien 

się  przenieść.

background image

 

 

LITERATURA

1.S.Dasgupta. Algorytmy. PWN. Warszawa 

2010


Document Outline