Spis treści
1. Wstęp ……………………………………………………………………………………… 1
2. Język GAMS na przykładzie2
3. Struktura modelu5
Wpisz tytuł rozdziału (poziom 2)5
Wpisz tytuł rozdziału (poziom 3)6
Wstęp
W naszym projekcie spróbujemy przybliżyć działanie programu GAMS (General Algebraic Modeling System). Systemu na wysokim poziomie służącego do matematycznego modelowania optymalizacji.
Idea programu została zaprezentowana na ISMP w 1976 roku w Budapeszcie. Wstępne badania i rozwój GAMS była finansowana przez Międzynarodowy Bank Odbudowy i Rozwoju. W 1987 GAMS stał się produktem komercyjnym. Dziś jest popularnym programem służącym do optymalizacji. Początkowo dedykowany do zastosowań związanych z ekonomią i nauką o zarządzaniu, z czasem zyskał uznanie w środowisku inżynierów i naukowców.
GAMS jest przeznaczony do modelowania i rozwiązywania liniowych, nieliniowych i mieszanych problemów optymalizacji. Język GAMS jest formalnie podobne do powszechnie stosowanych języków programowania. Modele są opisane w zwięzły algebraicznych deklaracje, które są łatwe do odczytania.
Niestety GAMS nie jest programem darmowym. Dlatego też w naszej pracy będziemy korzystać z demonstracyjnej wersji dla studentów ze strony http://www.gams.com/download. Jest to darmowa, ograniczona wersja GAMS, których nie można rozwiązać dużych problemów, ale jest wystarczająca do naszych potrzeb.
1. Język GAMS na przykładzie
Strukturę języka GAME omówimy na prostym przykładzie zagadnienia transportowego programowania liniowego. Dla lepszego zrozumienia składni języka GAMS problem zapiszemy najpierw w formie matematycznej a następnie przeniesiemy go na właściwy zapis w języku GAMS.
Matematyczny zapis problemu:
Indeksy:
i = producent towaru
j = odbiorca towaru
Dane:
ai = zdolność produkcyjna i-tego producenta (w sztukach)
bj = wymagana chłonność rynku j-tego odbiorcy (w sztukach)
ci,j = koszt transportu towaru od i-tego producenta do j-tego odbiorcy ($/ sztuka)
Zmienne decyzyjne:
xi,j = ilość towaru do przesłania od i-tego producenta do j- tego odbiorcy (w sztukach);
gdzie ∀i ∀j xi,j≥0
Ograniczenia:
Badaj zdolność produkcyjną i-tego wytwórcy (w sztukach):
∀i jxi,j≤ ai
Zagwarantuj minimalne dostawy dla j- tego odbiorcy (w sztukach):
∀j ixi,j≥ bj
Funkcja celu:
Minimalizuj (w k$ oznacza tysiące $):
ijci,jxi,j
Zapisaliśmy klasyczny model programowania liniowego zgodnie z konstrukcją modelu w języku GAMS. Zachowaliśmy następujące zasady:
- wszystkie wielkości modelu zostały nazwane, zdefiniowane oraz pogrupowane
- zachowaliśmy porządek, wartości zostały użyte dopiero po ich zdefiniowaniu
- sprecyzowane jednostki miary
- wielkości są tego samego rzędu
Przykład jaki zaprezentujemy pochodzi z książki: Dantzig, George B. (1963). Linear Programming and Extensions, Princeton University Press, Princeton, New Jersey, rozdział 3-3.
Dwa zakłady produkujące konserwy (Seattle, San Diego) oraz trzech odbiorców określonych jako New York , Chicago i Topeka. Odległości między nimi w tysiącach mil są zawarte w tabeli. Koszt przesyłki jest stały (nie zależy od miejsca położenia producenta i odbiorcy) i wynosi 90$ za transport jednej partii na odcinku o długości 1000 mil.
odbiorcy
Zakłady produkcyjne
New York
Chicago
Topeka
Moc produkcyjna
Seattle
San Diego
2.5
1.7
1.8
1.4
350
600
Wielkość zamówienia
325
300
275
W języku GAMS używana jest następująca terminologia, która będzie niezbędna to tworzenie naszego modelu:
wskaźniki = SETS
dane = PARAMETERS
zmienne decyzyjne = VARIABLES
ograniczenia i funkcja celu = EQUATIONS
Pokażemy teraz jak całościowo wygląda nasz problem zapisany w języku GAMS po czym krok po kroku omówimy jego składnie.
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 using lp minimizing z ;
Display x.l, x.m ;
2. Struktura modelu
Na podstawie wyżej przedstawianego modelu, omówimy podstawowe elementy w języku GAMS.
Oto podstawowe komponenty modelu:...
aivliska