GAMS

Sets

Sets ovat GAMS-mallin perusrakennuspalikoita, jotka vastaavat täsmälleen indeksejä mallien algebrallisissa esityksissä. Yllä oleva kuljetusesimerkki sisältää vain yhden Set-lausekkeen:

  Sets i canning plants / Seattle, San-Diego / j markets / New-York, Chicago, Topeka / ; 

Tämän lausekkeen vaikutus lienee itsestään selvä. Ilmoitimme kaksi joukkoa ja annoimme niille nimet $i$ ja $j$. Määritimme myös jäsenet joukkoihin seuraavasti:

$i =$ {Seattle, San Diego}

$j =$ {New York, Chicago, Topeka}.

Huomaa viivojen käyttö joukon jäsenten numerointiin. Matemaattisessa notaatiossa ja muissa ohjelmointikielissä tämä tehtäisiin usein sen sijaan sulkeilla.

Parametrit

Parametrit ovat yksi tapa syöttää tietoja GAMSissa. Tässä tapauksessa parametrit $a$ ja $b$ määritellään joukkojen $i$ ja $j$ yli.

  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 / ; 

GAMSin avulla voit sijoittaa selittävää tekstiä (näytetään pienellä alkukirjaimella) kaikkialle malliisi, kun kehität sitä. Kommenttisi sisällytetään automaattisesti tulostusraporttiin sopiviin paikkoihin.

Taulukko

Tiedot voidaan syöttää myös kätevässä taulukkomuodossa. GAMSin avulla voit syöttää datan perusmuodossaan – muunnokset määritetään algebrallisesti.

  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 ; 

Skalaari

Vakiot voidaan yksinkertaisesti ilmoittaa skalaareina:

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

Datan käsittely

Kun data-arvoja halutaan laskea, ensin ilmoitetaan parametri (eli annetaan sille symboli ja valinnaisesti indeksi), sitten annetaan sen algebrallinen muotoilu. GAMS tekee laskutoimitukset automaattisesti.

  Parameter c(i,j) transport cost in thousands of dollars per case ;c(i,j) = f * d(i,j) / 1000 ; 

Muuttujat

Päätöksentekomuuttujat ilmaistaan algebrallisesti, ja niiden indeksit annetaan. Tästä yleisestä muodosta GAMS generoi jokaisen muuttujan instanssin toimialueella.Muuttujien tyyppi määritetään: FREE, POSITIVE, NEGATIVE, BINARY tai INTEGER. Oletusarvo on FREE.Tavoitemuuttuja (tässä z) ilmoitetaan yksinkertaisesti ilman indeksiä.

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

Yhtälöt

Tavoitefunktioiden ja rajoitusten yhtälöt ilmoitetaan ensin antamalla niille nimet. Sitten kuvataan niiden yleiset algebralliset kaavat. GAMSilla on nyt riittävästi tietoa (edellä syötetyistä tiedoista ja yhtälöissä määritellyistä algebrallisista suhteista) luodakseen automaattisesti jokaisen yksittäisen rajoituslausekkeen – kuten alla olevasta tulostusraportista näkyy. Laajan työkalupaketin avulla voit mallintaa mitä tahansa lauseketta, joka voidaan esittää algebrallisesti: aritmetiikkaa, indeksointia, funktioita ja poikkeuskäsittelylokkeja (esim. if-then-else- ja such-that-konstruktioita).

=E= ilmaisee ‘yhtä suuri kuin’
=L= ilmaisee ‘pienempi tai yhtä suuri kuin’
=G= ilmaisee ‘suurempi tai yhtä suuri kuin’

  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) ; 

Mallin lauseke

Mallille annetaan yksilöllinen nimi (tässä TRANSPORT), ja mallintaja määrittelee, mitkä yhtälöt sisällytetään tähän tiettyyn lausekkeeseen. Tässä tapauksessa määritimme ALL, mikä tarkoittaa, että kaikki yhtälöt ovat osa mallia. Tämä vastaisi muotoa MODEL TRANSPORT /COST, SUPPLY, DEMAND/ . Tämä yhtälöiden valinta mahdollistaa erilaisten mallien muotoilun yhden GAMS-syöttötiedoston sisällä samojen tai erilaisten annettujen tietojen perusteella.

  Model transport /all/ ; 

Solve-lause

Solve-lause (1) kertoo GAMSille, mikä malli ratkaistaan, (2) valitsee käytettävän ratkaisijan (tässä tapauksessa LP-ratkaisijan), (3) ilmaisee optimoinnin suunnan, joko MINIMOINTI- tai MAKSIMOINTI-menetelmän, ja (4) määrittelee tavoitemuuttujan.

  Solve transport using LP minimizing z ; 

Vastaa

Sähköpostiosoitettasi ei julkaista.