Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 27

Krzysztof Barteczko

3. Modele optymalizacyjne - wprowadzenie

3.1. Pojęcia: model, model decyzyjny, model optymalizacyjny

Niejednokrotnie stajemy przed koniecznością wyboru jednego z przynajmniej dwóch


wariantów działania (podjęcie decyzji co do kierunku czy sposobu działania).
Aby dokonać wyboru należy dobrze zdefiniować sytuację decyzyjną.

Sytuacja decyzyjna to zbiór wszystkich istotnych czynników mających wpływ na wybór


decyzji:
1. Czego dotyczyć ma proces decyzyjny ? Jaki jest przedmiot (obiekt) decyzji?
2. Jakie uwarunkowania (np. technologiczne, behawioralne, instytucjonalne) związane są
z funkcjonowaniem tego obiektu?
3. Jakie są kryteria oceny decyzji (co chcemy osiągnąć) ?
4. Jakie są warunki ograniczające decyzję?
Na podstawie analizy sytuacji decyzyjnej budujemy model decyzyjny.

Zacznijmy od ogólnego pojęcia modelu.


Ogólnie:
Model – to przedmiot złożony (także abstrakcyjny), odwzorowujący dla celów
poznawczych lub praktycznych bardziej od niego złożony istniejący lub projektowany
fragment rzeczywistości.1
To bardzo szeroka definicja. Skupimy się tutaj na klasie modeli opisujących rzeczywiste byty
ekonomiczno-społeczne na gruncie formalizmu matematycznego.
Model matematyczno-ekonomiczny jest modelem abstrakcyjnym, w którym
funkcjonowanie rzeczywistego obiektu społeczno-gospodarczego (np. zjawiska
ekonomicznego, firmy, procesu w ramach firmy) odzwierciedlane jest w uproszczonej formie
za pomocą formalnych, matematycznych konstrukcji.

Ekonomiczny abstrakcja Model


obiekt matemat.-
homogenizacja
rzeczywisty -ekonom.

1
T. Pszczołowski, "Mała encyklopedia prakseologii i teorii organizacji"
Zależności w takim modelu mają charakter:
 behawioralny (przyczynowo-skutkowy) - opisujący sposób funkcjonowania
odzwierciedlanego obiektu,
 instytucjonalny - wynikający z istniejących uregulowań,
 definicyjny - wprowadzany przez przyjęte w języku opisu obiektu definicje.

Np. najprostszy (teoretyczny) popytowy model gospodarki


C = a + b*(1-t)*Y
I = c - d*R zależności behawioralne (przyczynowo-skutkowe)
X = e – m*Y – n*R
Y=C+I+G+X równanie tożsamościowe, definicyjne

C – konsumpcja, I – inwestycje, X – eksport netto, R – stopa procentowa, G – wydatki


rządowe, Y – dochód (PKB), t – stopa opodatkowania dochodu, parametry

Modele tego samego obiektu mogą być różne. Zależy to od następujących czynników:
- cel badania (dodatkowe zależności, np. rynek pieniężny, ograniczenia zasobowe)
- wybrana teoria, niezgodność empirii z teorią (inne zależności, np. brak wrażliwości na
stopę procentową)
- dostępny aparat matematyczny (np. skomplikowane nieliniowe zależności)
- dostępne dane

Modele winny być traktowane


wyłącznie jako narzędzie pomocnicze w procesie analityczno-decyzyjnym.

Stosowanie modeli
1. Po co? 2. Dlaczego?
1. Badanie działania obiektu, wyciąganie 1. Umożliwienie analiz ilościowych
wniosków teoretycznych o 2. Synteza dużej ilości informacji
prawidłowościach funkcjonowania 3. Uwzględnienie dużej liczby sprzężeń
2. Prognozowanie (np. jaki będzie wzrost) 4. Uwidocznienie wszystkich przesłanek,
3. Podejmowanie decyzji (np. o wydatkach całej logiki, powtarzalność
rządowych) eksperymentów symulacyjnych,

Model decyzyjny jest modelem, w którym oprócz w/w zależności uwzględnia się również
kryteria podejmowania decyzji oraz warunki decyzje ograniczające,

Gdy wśród kryteriów decyzyjnych występują kryteria poszukiwania decyzji pod jakimś
względem najlepszych mówimy o modelach optymalizacyjnych.
3.2. Jak formułować model optymalizacyjny - prosty przykład praktyczny

Problem2
Na produkcję dwóch rodzajów landrynek Lan1 i Lan2 możemy przeznaczyć dziennie 6
godzin czasu pracy maszyn oraz 240 kg surowca. Znane są charakterystyki procesu
technologicznego (jednostkowe zużycie czasu pracy maszyn oraz surowca), a także ceny
produktów.

Czas pracy Zużycie Cena


maszyn surowca (zł/100kg)
(h/100kg) (kg/100kg)
Lan1 2 40 320
Lan2 1.2 60 400
Dostępne zasoby 6 h 240 kg

Pytanie: w jakich ilościach produkować landrynki, aby uzyskiwać największy przychód


dzienny?

Zdefiniowanie sytuacji decyzyjnej.


1. Obiektem, którego dotyczy proces decyzyjny jest produkcja landrynek.
2. Uwarunkowania technologiczne: w tej produkcji wykorzystywane są (z daną
intensywnością na jednostkę produkcji poszczególnych rodzajów landrynek) czas
pracy maszyn oraz surowiec.
3. Kryterium decyzyjne: chcemy osiągnąć możliwie największy przychód z produkcji.
4. Warunki ograniczające: dostępność zasobów (czasu pracy maszyn, surowca).

Budowa modelu decyzyjnego:


1. Wybór zmiennych decyzyjnych
2. Zapis kryterium, wyrażonego w kategoriach zmiennych decyzyjnych
3. Zapis zależności behawioralnych (i ew. innych)
4. Zapis warunków ograniczających.
Pytanie brzmi: ile jakich landrynek produkować?
Naturalnie więc mamy tu dwie zmienne decyzyjne:
x1 - wielkość produkcji landrynek Lan1 w jednostkach = 100 kg,

2
Wzorowany na T. Szapiro (red.). Decyzje menedżerskie z Excelem, PWE 2000.
x2 - wielkość produkcji landrynek Lan2 w jednostkach = 100 kg.

Kryterium:
320x1 + 400x2 -> max // To jest tzw. funkcja celu

Zależności behawioralne (technologiczne):


użyty czas pracy maszyn = 2x1 + 1.2x2
zużyty surowiec = 40x1 + 60x2

Ograniczenia:
użyty czas pracy maszyn <= 6
zużyty surowiec <= 240
wielkość produkcji x1, x2 >= 0

Zapis modelu:

f(x) = 320x1 + 400 x2  max


2x1 + 1.2x2  6
40x1 + 60x2  240
x1  0, x2  0
3.3. Rodzaje modeli optymalizacyjnych

Ogólnie, szeroką klasę modeli optymalizacyjnych można opisać następująco.


Niech D oznacza zbiór wszystkich X, dla których spełnione są zależności:

gi(X) = 0, i = 1..n

Dla danych funkcji  fk(X), k =1..m  w zbiorze D należy znaleźć rozwiązanie, spełniające
dla każdego k:
fk(X)  ekstremum.

Gdy m = 1 (jedna funkcja celu), mamy do czynienia z zadaniem jednokryteriowym, gdy m >
1 - wielokryteriowym (optymalizacja przy wielorakości celów).

Ponadto wyróżniamy m.in. następujące rodzaje modeli (zadań) optymalizacyjnych:


 liniowe - gdy f i g są liniowe względem X,
 wypukłe - gdy choć jedna z funkcji f, g nie jest liniowa, ale wszystkie są wypukłe,
 całkowitoliczbowe - gdy choć jeden z elementów X musi być całkowity, f i g są liniowe,
 nieliniowe - gdy choć jedna z funkcji f, g jest nieliniowa (programowanie wypukłe jest tu
szczególnym przypadkiem),
 stochastyczne - gdy choć jedna ze zmiennych (X) lub parametrów funkcji f, g są losowe.

Niewątpliwie najłatwiejsze do rozwiązania są zadania liniowe (dla których istnieje


uniwersalny algorytm odnajdywania rozwiązań), najtrudniejsze zaś ogólne zadania
nieliniowe.
3. 4. Interpretacja graficzna zadania programowania liniowego
Zadanie o landrynkach z punktu 3.2.
 budowa zbioru rozwiązań dopuszczalnych
 wykreślenie warstwic (izolinii) funkcji celu
 określenie kierunku wzrostu wartości funkcji celu

Intuicyjnie: rozwiązane musi być w wierzchołku zbioru rozwiązań dopuszczalnych.


3.5 Właściwości zadanie programowania liniowego oraz koncepcja algorytmów
rozwiązania

Zadanie programowania liniowego (PL)


- zmienne decyzyjne są ciągłe
- warunki ograniczające – równości, słabe nierówności liniowe
- funkcja celu jest liniowa względem zmiennych decyzyjnych

Oznaczmy przez D zbiór rozwiązań dopuszczalnych.

D jest zbiorem wypukłym (def. zbioru wypukłego – dowolna kombinacja wypukła punktów
z tego zbioru też należy do zbioru D),

D ma skończoną liczbę wierzchołków (wierzchołek = punkt, którego nie można przedstawić


w postaci kombinacji wypukłej innych punktów zbioru)

Warunek dostateczny istnienia rozwiązania


D niepusty i ograniczony => istnieje przynajmniej jedno rozwiązanie

O wierzchołkowym rozwiązaniu optymalnym


Jeśli zbiór rozwiązań optymalnych niepusty i ograniczony => przynajmniej jeden
wierzchołek jest rozwiązaniem optymalnym. Rozwiązanie zawsze jest w wierzchołku.

Zadanie PL: Kantorowicz, von Neumann, Dantzig - lata 40


Metoda simpleks: Dantzig 1947
Metoda elipsoidów: Khachiyan 1970
Metoda punktów wewnętrznych: Karmarkar 1984

Szczegółowe (a przy tym bardzo proste i obrazowe) dowody właściwości zadania


programowania liniowego oraz opis i uzasadnienie algorytmu sympleksowego można znaleźć
w książce S. Gassa. Programowanie liniowe. Metody i zastosowania, PWN 1976.
3.6. Programowanie liniowe: czy zawsze istnieje (jedno) rozwiązanie?
W zadaniu o landrynkach dodajmy ograniczenie: pracownicy muszą zarobić co najmniej 1200
zł przy różnych danych jednostkowych płacach.
Czas pracy Zużycie Płace Cena
maszyn surowca pracowników (zł/100kg)
(h/100kg) (kg/100kg) (zł/100kg)
Lan1 2 40 100 480
Lan2 1.2 60 200 210
Dostępne/wymagane 6 h 240 kg 1200 zł (co
najmniej)

Zbiór rozwiązań dopuszczalnych - pusty.


Brak rozwiązań dopuszczalnych (INFEASIBLE).
Usuńmy ograniczenia na zasoby (czas pracy maszyn, surowiec).
Płace Cena
pracowników (zł/100kg)
(zł/100kg)
Lan1 100 480
Lan2 200 210
wymagane: 1200 zł

Zbiór rozwiązań dopuszczalnych jest nieograniczony - więc brak rozwiązania optymalnego.


(UNBOUNDED).
Zmieńmy współczynniki funkcji celu.

Czas pracy Zużycie Cena


maszyn surowca (zł/100kg)
(h/100kg) (kg/100kg)
Lan1 2 40 400
Lan2 1.2 60 600
Dostępne zasoby 6 h 240 kg

Warstwica funkcji celu jest równoległa do krawędzi zbioru rozwiązań dopuszczalnych,


wyznaczanego przez ograniczenie na czas pracy maszyn, a zatem mamy nieskończenie wiele
rozwiązań (kombinacje wypukłe wierzchołków).
3.7. Rozwiązywanie zadań optymalizacyjnych w systemie GAMS3

$Title Model dla problemu LANDRYNKI

Variables
x1 Produkcja Lan1
x2 Produkcja Lan2
przychod wartosc funkcji celu

Positive Variables x1, x2

Equations
fcel funkcja celu
ogr1 ograniczenie pracy maszyn
ogr2 ograniczenie surowcowe;

fcel.. przychod =e= 320*x1 + 400*x2;


ogr1.. 2*x1 + 1.2*x2 =l= 6;
ogr2.. 40*x1 + 60*x2 =l= 240;

model LAN /ogr1, ogr2, fcel/


solve LAN maximizing przychod using LP
display x1.l, x2.l

Sekcja Variables - definicja zmiennych.


Zmienne x1, x2 są nieujemne, zmienna przychod - swobodna (wymagana jako reprezentacja
wartosci funkcji celu.
Sekcja Equations - definicja ograniczeń. Wprowadzamy najpierw ich nazwy, następnie
używamy tych nazw w zapisie ograniczeń, stosując symbole : =e=, =l=, =g= dla oznaczenia
relacji =, <=, >= (odpowiednio).
Instrukcja model definiuje model (nazwa modelu - tutaj LAN oraz jakie zależności wchodzą
w jego skład).
Instrukcja solve powoduje rozwiązanie modelu i uzyskanie wyników.
W solve podajemy nazwę modelu, kierunek optymalizacji (maximizing lub minimizing),
nazwę zmiennej, przechowującej wartość funkcji celu (przychod) oraz rodzaj zadania (LP =
linear programming, MIP - mixed integer programming, NLP - nonlinear programming).

3
Stosujemy demonstracyjną wersję systemu GAMS, która jest w pełni funkcjonalna, ale ma ograniczenia na
liczbę zmiennych i zależności w modelu.
Instrukcja display powoduje wypisanie informacji, w tym przypadku o wartościch zmiennych
x1 i x2. Przyrostek l (od level - po kropce) oznacza poziom zmiennych w optymalnym
rozwiązaniu.
Do pracy w środowisku GAMS można wykorzystać wygodne IDE (zob. rys. 3.1).
Rys. 3.1. GAMS IDE
Przed uruchomieniem obliczeń możemy wybrać solver, domyślnym jest CPLEX (zob. rys.
3.2).
Rys. 3.2 Solvery w środowisku GAMS
Przebieg obliczeń widzimy w konsoli aktywności, a ich wyniki na interaktywnym listingu
(zob. rys. 3.3).
Rys. 3.3 Wyniki obliczeń

Jak widać, rozwiązaniem naszego problemu jest produkcja 100 kilogramów landrynek Lan1
oraz 333 kg landrynek Lan2.
3.8. Uogólnienie: zadanie alokacji

Mamy m możliwych sposobów (rodzajów aktywności) wykonania zadania


wymagającego zużycia n różnych zasobów. Problem: zdecydować z jaką intensywnością
będziemy stosować poszczególne aktywności (sposoby) do wykonania zadania.

Niech xj - intensywność zastosowania aktywności (sposobu) j

Niech cj oznacza uzyskiwany efekt przy jednostkowej intensywności zastosowania


aktywności j

Sumaryczny efekt równy jest więc:

∑ cjxj (1)
j

Dostępna ilość zasobu i oznaczymy przez bi, a zużycie zasobu i na jednostkę aktywności j
przez aij

Zatem:

∑ aijxj ≤ bi , dla i = 1..n (2)


j
xj >= 0 , dla j = 1.. m (3)

Problem : maksymalizacja (1) przy warunkach (2) i (3).

Zadanie o landrynkach dobrze wpisuje się w ten schemat. W środowisku GAMS możemy
jednak zdefiniować zależności i sam model w taki sposób, że zagadnienie będzie dotyczyć
dowolnych produktów i dowolnej ich liczby oraz dowolnych zasobów (czynników produkcji).
Po to właśnie w GAMsie używa się koncepcji zbioru.
Instrukcja Set definiuje zbiór elementów oraz indeks za pomocą którego po tym zbiorze
można iterować.
Np.
set i czynniki / enumeracja czynników /;
set j produkty / enumeracja produktów /;
Model alokacji możemy teraz zapisać ogólnie w następujący sposób.
GAMS

set i czynniki / enumeracja czynników /;


set j produkty / enumeracja produktów /;

* Zmienne egzogeniczne
Table a(i,j) jednostkowe zużycie czynników
*------------- tu podać konkretne dane
Parameter b(i) prawe strony /
* ------------ tu podać konkretne dane
/;
Parameter c(j) wsp. funkcji celu /
* ------------ tu podać konkretne dane
/;

Variables
x(j) ilośc produkcji produktu j
przychod przychod z produkcji kombinacji produktów

Positive variables x(j)

Equations
fcel funkcja celu
ogr(i) ograniczenia;

fcel.. przychod =e= sum(j, c(j)*x(j));


ogr(i).. sum(j, a(i,j)*x(j)) =l= b(i);

Model Alokacja /all/;

Jak łatwo się domyślić w definicji zmiennych modelu x(j) oznacza wektor m zmiennych, a
ogr(i) n ograniczeń zasobowych. Słówkiem sum(...) oznaczamy sumowanie. Zapis jest
analogiczny do poprzednio sformułowanego w ogólnej matematycznej formie zadania
alokacji i pasuje do dowolnych produktów oraz czynników.
Instrukcje Table i Parameter pozwalają na zdefiniowanie danych. Table uzywamy dla danych
wielowymiarowych, Parameter dla wektorów.
Dane moga pochodzić z plików zewnętrznych, mogą być również bezpośrednio zapisane w
programie.
Przykładowo dla naszych landrynek możemy zapisać:
$Title Landrynki v. 2

Set i czynniki /maszyny, surowce/;


Set j produkty / Lan1, Lan2/;

Table a(i,j) jednostkowe zużycie czynników


Lan1 Lan2
maszyny 2 1.2
surowce 40 60;

Parameter b(i) prawe strony /


maszyny 6,
surowce 240
/;

Parameter c(j) wsp. funkcji celu /


Lan1 320,
Lan2 400
/;

Variables
x(j) ilośc produkcji produktu j
przychod przychod z produkcji kombinacji produktów

Positive variables x(j)

Equations
fcel funkcja celu
ogr(i) ograniczenia;

fcel.. przychod =e= sum(j, c(j)*x(j));


ogr(i).. sum(j, a(i,j)*x(j)) =l= b(i);

Model Alokacja /all/;


Solve Alokacja maximizing przychod using LP;

display przychod.l, x.l

Wynik optymalizacji:

---- 37 VARIABLE przychod.L = 1653.333 przychod z produkcji


kombinacji produktów

---- 38 VARIABLE x.L ilośc produkcji produktu j

Lan1 1.000, Lan2 3.333


3.9. Inne popularne zadania PL
3.9.1. Zagadnienie diety
Dane m różnych rodzajów produktów żywnościowych F1, . . . , Fm,
zawierających n składników odżywczych N1, . . . ,Nn
Niech:
bj – minimalne zapotrzebowanie na składnik Nj,
ci – jednostkowa cena produktu Fi.
aij - ilość składnika Nj w jednostce produktu Fi .

Problem: zapewnić niezbędne wyżywienie przy minimalnym koszcie

Zmienne decyzyjne: x i - ilość Fi kupowana dziennie

Koszt :  xici (1)

Zaspokojenie minimalnego zapotrzebowania organizmu:

 aij xi, >= bj , dla j = 1, . . . , n. (2)


i

x i >= 0, dla i =1, ..., m (3)

Problem: minimalizacja (1) przy warunkach (2) i (3).

3.9.2. Zagadnienie transportowe


Załóżmy, że mamy m punktów dostawy, z których należy przewieźć towar do n punktów
odbioru. Każdy punkt dostawy dysponuje towarem w ilości a i , a każdy punkt odbioru
zgłasza zapotrzebowanie na towar w ilości b j . Dane są też c ij - jednostkowe koszty
przewozu z punktu dostawy i do punktu odbioru j. Wyznaczyć plan przewozów
minimalizujący łączne koszty transportu.
Zmienne decyzyjne: x ij - ilośc towaru przewożona z punktu dostawy i do punktu odbioru j.
Model
łączny koszt transportu:
m n

 c
i 1 j 1
ij xij  min

od i-tego dostawcy nie można wywieźć więcej niż ma:

x
j 1
ij  ai , i = 1, 2, ..., m,

do j-go odbiorcy trzeba dostarczyć co najmniej tyle, ile potrzebuje:


m

x
i 1
ij  bj , j = 1, 2, ..., n,

przewożone ilości nie mogą być ujemne:

xij  0, i = 1, 2, ..., m; j = 1, 2, ..., n.

Zagadnienie transportowe ma rozwiązanie dopuszczalne, gdy

m n

 a  b
i 1
i
j 1
j

Jeśli
m n

 ai   b j
i 1 j 1

to zadanie transportowe jest zbilansowane i ograniczenia spełniane sa jako równości.


Przykład w GAMS: klasyczne zagadnienie transportowe G. Dantziga (niezbilansowane).
$Ontext
Źrodło:
Dantzig, G B, Linear Programming and Extensions.
Princeton University Press, Princeton, New Jersey, 1963.
$Offtext

Sets
i canning plants / seattle, san-diego /
j markets / new-york, chicago, topeka / ;

Parameters

a(i) capacity of plant i in cases


/ seattle 350
san-diego 600 /

b(j) demand at market j in cases


/ new-york 325
chicago 300
topeka 275 / ;

Table d(i,j) distance in thousands of miles


new-york chicago topeka
seattle 2.5 1.7 1.8
san-diego 2.5 1.8 1.4 ;

Scalar f freight in dollars per case per thousand miles /90/ ;

Parameter c(i,j) transport cost in thousands of dollars per case ;

c(i,j) = f * d(i,j) / 1000 ;

Variables
x(i,j) shipment quantities in cases
z total transportation costs in thousands of dollars ;

Positive Variable x ;

Equations
cost define objective function
supply(i) observe supply limit at plant i
demand(j) satisfy demand at market j ;

cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ;

supply(i) .. sum(j, x(i,j)) =l= a(i) ;

demand(j) .. sum(i, x(i,j)) =g= b(j) ;

Model transport /all/

solve transport minimizing z using LP


display x.l
Źródło: biblioteka modeli GAMS
Wynik:
new-york chicago topeka

seattle 50.000 300.000


san-diego 275.000 275.000
3.9.3. Zagadnienie przydziału (rozmieszczenia)
Mamy n pracowników i n zadań do wykonania. Koszt wykonania zadania j przez pracownika
i równy jest c ij . Każde zadanie może wykonywać tylko jeden pracownik, żaden z
pracowników nie może wykonywać więcej niż jedno zadanie. Przydzielić zadania
pracownikom, tak by zminimalizować łączny koszt ich wykonania.
Zmienne decyzyjne: x ij - czy pracownik i wykonuje zadanie j (1 - tak, 0 - nie)
Ograniczenia:
- każdy pracownik wykonuje tylko jedno zadanie
n
 xij  1, (i  1, 2, ..., n)
j 1

- każde zadanie może być wykonane tylko przez jednego pracownika


n
 xij  1 ( j  1, 2, ..., n)
i 1

Funkcja celu:
n n
  cij xij  min
i 1 j 1

Uwaga: wystarczą warunki nieujemności zmiennych decyzyjnych, gdyż:


a) jest to szczególny przypadek zbilansowanego zadania transportowego,
b) zadanie transportowe z całkowitymi wartościami popytu i podaży ma
rozwiązania całkowite.

Gdyby wprowadzić warunki x  { 0,1 } mielibyśmy zadanie ze zmiennymi binarnymi. Takie


zadania, jak i zadania całkowitoliczbowe rozwiązuje się znacznie trudniej niż zadania liniowe.
3.10. Programowanie w liczbach całkowitych

Zadanie4
Z miejscowości X do miejscowości Y trzeba przewieźć 100 ton pszenicy i 80 ton
ziemniaków. Ładunek ten można przewieźć trzema samochodami – A, B i C. Ładowność
samochodów i koszt kursu przedstawia tabela:
Ładowność A B C
pszenica[t] 10 6 5
ziemniaki[t] 8 4 5

koszt [PLN] 80 60 50

Podczas jednego kursu samochód może przewozić tylko jeden rodzaj ładunku. Samochód A
może wykonać maksymalnie 10 kursów, samochód B – 18, zaś samochód C – 15 kursów.
Należy ustalić plan przewozu minimalizujący łączny koszt dostawy.

Ważne: liczba kursów jest zmienną całkowitą, zatem należy użyć programowania w liczbach
całkowitych (w GAMsie - MIP).
Uwaga: tu stosuje się inny algorytm niż simpleks (metoda podziału i ograniczeń), Takie
zadania są znacznie trudniejsze do rozwiązania niż zwykłe zadania PL. Uzyskanie
rozwiązania może być kosztowne czasowo, dlatego niektóre solvery wymagają zwiększenie
domyślnie ustawionego limitu iteracji (CPLEX), Globalny solver BARON radzi sobie z
takimi zadaniami dobrze (i nie musimy też zmieniac domyślnego limitu iteracji).

Rozwiązanie podamy od razu jako kod GAMSowy.

4
Wzorowane na T. Szapiro (red). Decyzje menedżerskie z Excelem, PWE 2002
* zbiory jakich uzywamy
set i ladunek / pszenica, ziemniaki /
set j samochody /A, B, C /

* dane wejsciowe
Table l(i, j) ladownosc
A B C
pszenica 10 6 5
ziemniaki 8 4 5;

Parameter c(j) koszty / A 80, B 60, C 50/;

Parameter k(j) max liczba kursow / A 10, B 18, C 15 /;

Parameter d(i) wymagana dostawa i /


pszenica 80,
ziemniaki 100
/;
* zapis modelu
Variables
x(i, j) liczba kursow samochodu j z ladunkiem i
koszt laczny koszt przewozu;

Integer variables
x(i,j);

Equations
rkosztow
dostawa(i) wymagana dostawa ladunku i
ogrkurs(j) ograniczenie na liczbe kursow samochodu j;

rkosztow.. koszt =e= sum(j, c(j) * sum(i, x(i,j)));


dostawa(i).. sum(j, l(i, j)*x(i, j)) =g= d(i);
ogrkurs(j).. sum(i, x(i,j)) =l= k(j);

model Kursy /ALL/;


solve Kursy minimizing koszt using MIP;

display x.L, koszt.L;


3.11. Zagadnienia postoptymalizacyjne i analiza wrażliwości
Rozważmy zadanie5:
F(x) = 480x1 + 210x2 -> max
przy ograniczeniach:
[1] 2 x1 + 1,2 x2 <= 6 (maszyny)
[2] 40 x1 + 60 x2 <= 240 (materiały)
[3] -100 x1 + -200 x2 <=400 (praca)

Stan warunków ograniczających (napięte, luźne)

Odczytujemy w sekcji Solution Report

---- EQU ogr ograniczenia


LOWER LEVEL UPPER
maszyny -INF 6.000 6.000 wiążące
materialy -INF 145.714 240.000 nie wiążące (luz)
praca -INF -400.000 -400.000 wiążace

Wiążące = napięte (lub aktywne) ograniczenie


Niewiążące = luźne (lub nieaktywne) ograniczenie

Analiza wrażliwości rozwiązania.

Fakty
A. Zmiana wsp. funkcji celu – nie zmienia zbioru rozw. dopuszczalnych, ale zmienia
położenie warstwic funkcji celu.
B. Zmiana wartości pojedynczego wyrazu wolnego – zmienia kształt zbioru rozwiązań
dopuszczalnych, ale nie zmienia położenia warstwic.

5
Ibidem
Pytanie 1
Jaka jest możliwa zmiana wsp. funkcji celu przy której rozwiązanie optymalne nie zmienia
się?
Dla różnych solverów specyfikujemy różnie. Dla solvera ILOG CPLEX podajemy w pliku
opcji zapis:
objrng all

Dostaniemy w Solution Report (wartości aktualne, dolne i górne - można to przełożyć na


dopuszczalny wzrost,, spadek):

VARIABLE NAME LOWER CURRENT UPPER


------------- ----- ------- -----
x1 350 480 +INF
x2 -INF 210 288
zysk -INF 1 +INF

Pytanie 2
W jakich granicach mogą zmieniać się wyrazy wolne, nie powodując zmiany zestawu
zmiennych wchodzących w skład rozwiązania?
dla różnych solverów specyfikujemy różnie. Dla solvera ILOG CPLEX podajemy w pliku
opcji zapis:
rhsrng all

EQUATION NAME LOWER CURRENT UPPER


------------- ----- ------- -----
fcel -INF 0 +INF
ogr(maszyny) 2.4 6 8
ogr(materialy) 145.7 240 +INF
ogr(praca) -766.7 -400 -300

Dopuszczalne (ze względu na zestaw zmiennych w rozwiązaniu optymalnym) zmiany


prawych stron dla warunków napiętych (wiążących) powodują zmiany wartości funkcji celu.
Pytanie 3
O ile zmieni się wartość funkcji celu jeśli prawa strona ograniczenia zmieni się o 1 (pod
warunkiem, że nie spowoduje to zmiany zestawu zmiennych w rozwiązaniu
optymalnym).
Ceny dualne / przyrosty krańcowe (MARGINAL)

---- EQU ogr ograniczenia

LOWER LEVEL UPPER MARGINAL

maszyny -INF 6.000 6.000 267.857


materialy -INF 145.714 240.000 .
praca -INF -400.000 -400.000 0.557

Dla warunków luźnych – ceny dualne równe są 0 (bo dopuszczalne zmiany prawych stron
tych warunków mieszczą się w granicach luzu, co oznacza brak zmian wartości zmiennych
decyzyjnych, a w konsekwencji brak zmian wartości funkcji celu).
Wynik: zwiększenie czasu pracy maszyn o 1 godzinę spowoduje wzrost przychodów o
267.867 zl, a zmniejsznie wymagań płacowych o 1 zł - wzrost przychodów o ok. 56 gr.
Literatura cytowana.
1. G. Dantzig. Linear Programming and Extensions. Princeton University Press, 1963,
2. S. I. Gass. Programowanie liniowe. Metody i zastosowania, PWN 1976
3. T. Pszczołowski, Mała encyklopedia prakseologii i teorii organizacji, Ossolineum 1973
4. T. Szapiro (red.). Decyzje menedżerskie z Excelem, PWE 2000

You might also like