Professional Documents
Culture Documents
Optymalizacja
Optymalizacja
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.
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
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.
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
Ograniczenia:
użyty czas pracy maszyn <= 6
zużyty surowiec <= 240
wielkość produkcji x1, x2 >= 0
Zapis modelu:
Gdy m = 1 (jedna funkcja celu), mamy do czynienia z zadaniem jednokryteriowym, gdy m >
1 - wielokryteriowym (optymalizacja przy wielorakości celów).
D jest zbiorem wypukłym (def. zbioru wypukłego – dowolna kombinacja wypukła punktów
z tego zbioru też należy do zbioru D),
Variables
x1 Produkcja Lan1
x2 Produkcja Lan2
przychod wartosc funkcji celu
Equations
fcel funkcja celu
ogr1 ograniczenie pracy maszyn
ogr2 ograniczenie surowcowe;
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
∑ cjxj (1)
j
Dostępna ilość zasobu i oznaczymy przez bi, a zużycie zasobu i na jednostkę aktywności j
przez aij
Zatem:
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
* 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
Equations
fcel funkcja celu
ogr(i) ograniczenia;
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
Variables
x(j) ilośc produkcji produktu j
przychod przychod z produkcji kombinacji produktów
Equations
fcel funkcja celu
ogr(i) ograniczenia;
Wynik optymalizacji:
c
i 1 j 1
ij xij min
x
j 1
ij ai , i = 1, 2, ..., m,
x
i 1
ij bj , j = 1, 2, ..., n,
m n
a b
i 1
i
j 1
j
Jeśli
m n
ai b j
i 1 j 1
Sets
i canning plants / seattle, san-diego /
j markets / new-york, chicago, topeka / ;
Parameters
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 ;
Funkcja celu:
n n
cij xij min
i 1 j 1
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).
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;
Integer variables
x(i,j);
Equations
rkosztow
dostawa(i) wymagana dostawa ladunku i
ogrkurs(j) ograniczenie na liczbe kursow samochodu j;
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
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
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