GAMS

Sets

Sets zijn de basisbouwstenen van een GAMS-model, die precies overeenkomen met de indexen in de algebraïsche voorstellingen van modellen. Het Transport-voorbeeld hierboven bevat slechts één Set-statement:

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

Het effect van dit statement spreekt waarschijnlijk voor zich. We hebben twee verzamelingen gedeclareerd en ze de namen $i$ en $j$ gegeven. We hebben de leden ook als volgt aan de verzamelingen toegewezen:

$i =$ {Seattle, San Diego}

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

Merk het gebruik van streepjes op om de leden van een verzameling te nummeren. In wiskundige notatie en andere programmeertalen zou dit vaak worden gedaan met accolades.

Parameters

Parameters zijn een manier om gegevens in te voeren in GAMS. In dit geval worden de parameters $a$ en $b$ gedefinieerd over de verzamelingen $i$ en $j$.

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

Met GAMS kunt u verklarende tekst (in kleine letters) in uw model plaatsen, terwijl u het ontwikkelt. Uw commentaar wordt automatisch verwerkt in het uitvoerrapport, op de daarvoor bestemde plaatsen.

Tabel

Gegevens kunnen ook worden ingevoerd in een handige tabelvorm. Met GAMS kunt u gegevens in hun basisvorm invoeren – transformaties worden algebraïsch gespecificeerd.

  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

Constanten kunnen eenvoudig als scalars worden gedeclareerd:

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

Data Manipulation

Wanneer gegevenswaarden moeten worden berekend, declareert u eerst de parameter (d.w.z. u geeft hem een symbool en indexeert hem optioneel), en vervolgens geeft u de algebraïsche formulering. GAMS zal automatisch de berekeningen uitvoeren.

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

Variabelen

Determinatievariabelen worden algebraïsch uitgedrukt, met hun indices gespecificeerd. Vanuit deze algemene vorm genereert GAMS elke instantie van de variabele in het domein.Variabelen worden gespecificeerd naar type: VRIJ, POSITIEF, NEGATIEF, BINAIR, of INTEGER. De objectieve variabele (z, hier) wordt eenvoudig gedeclareerd zonder index.

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

Vergelijkingen

Objectieve functie- en constraintvergelijkingen worden eerst gedeclareerd door ze namen te geven. Daarna worden hun algemene algebraïsche formules beschreven. GAMS heeft nu genoeg informatie (van de hierboven ingevoerde gegevens en van de algebraïsche relaties die in de vergelijkingen zijn gespecificeerd) om automatisch elke individuele constraint verklaring te genereren – zoals u kunt zien in het uitvoerrapport hieronder. Een uitgebreide set gereedschappen maakt het mogelijk om elke uitdrukking die algebraïsch kan worden gesteld te modelleren: rekenkunde, indexering, functies en uitzonderingslogica (b.v. if-then-else en such-that constructs).

=E= geeft ‘gelijk aan’
=L= geeft ‘kleiner dan of gelijk aan’
=G= geeft ‘groter dan of gelijk aan’

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

Modelverklaring

Het model krijgt een unieke naam (hier, TRANSPORT), en de modelleerder specificeert welke vergelijkingen in deze specifieke formulering moeten worden opgenomen. In dit geval hebben we ALL gespecificeerd, wat aangeeft dat alle vergelijkingen deel uitmaken van het model. Dit zou overeenkomen met MODEL TRANSPORT /COST, SUPPLY, DEMAND/ . Deze vergelijkingsselectie maakt het mogelijk om binnen een enkel GAMS invoerbestand verschillende modellen te formuleren, gebaseerd op dezelfde of andere gegeven data.

  Model transport /all/ ; 

Solve statement

Het solve statement (1) vertelt GAMS welk model moet worden opgelost, (2) selecteert de te gebruiken solver (in dit geval een LP solver), (3) geeft de richting van de optimalisatie aan, ofwel MINIMIZING of MAXIMIZING , en (4) specificeert de doelvariabele.

  Solve transport using LP minimizing z ; 

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.