GAMS.docx

(85 KB) Pobierz

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/downloadJest 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,jai

 

Zagwarantuj minimalne dostawy dla j- tego odbiorcy (w sztukach):


j ixi,jbj

 

 

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

2.5

1.7

1.8

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:...

Zgłoś jeśli naruszono regulamin