Title: How to get started with GAMS
1How to get started with GAMS
2GAMS Basics
- The General Algebraic Modeling System (GAMS) is a
high-level modeling system for mathematical
programming problems - It consists of a language compiler and a stable
of integrated high-performance solvers - GAMS is tailored for complex, large scale
modeling applications, and allows you to build
large maintainable models that can be adapted
quickly to new situations
3Some GAMS References
- www.gams.com
- A Users Guide by Brooke et al.
- GAMS Tutorial by Rosenthal (ch. 2 of above)
Transportation Problem
Canning plants / Capacity a(i)
Markets / Demand b(j)
Transport cost c(i,j)
Seattle
New York
Chicago
San Diego
Topeka
4Structure of a GAMS model
Output
Input
file_name.lst
file_name.gms
Sets
Echo Print
Data
Reference Maps
Variables
Equation Listings
Equations
Status Reports
Model specification
Results
Solve statement
5Program Listing 1/3
Instance of the transportation problem From
R. Rosenthal's GAMS Tutorial 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 /
6Program Listing 2/3
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
1000 miles / 90 / parameter c(i,j) transport
cost in 1000s of dollars per case c(i,j)
fd(i,j)/1000 variables x(i,j)
shipment quantities in cases z total
transportation costs in 1000s of
dollars positive variable x
7Program Listing 3/3
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
8Implementation
- From Leland account
- Type input file in standard text editor (emacs,
etc.) - Run with following command /usr/sweet/apps/gams-2
.50/gams file_name.gms - Programming styles
- Data -gt Model -gt Solution
- Model -gt Data -gt Solution
- General remarks
- Distinguish between declaration and
assignment or definition - An entity of the model cannot be referenced
before it is declared to exist - Useful feature not discussed in the tutorial the
dollar operator - This powerful feature of GAMS operates with a
logical condition (condition), which can be read
as such that condition is valid - Example
- If (b gt 1.5) then a 2
- becomes
- a(b gt 1.5) 2
- This operator is very useful to handle exceptions
9Other Remarks
- Documentation is crucial. It is returned in the
output file - Compiler options can be used
- Example of line include file_name
- Advantage of GAMS over Fortran or C values can
be assigned without do loops - Key idea is that the definition of the
constraints is exactly the same regardless of the
size of the problem the user just enters
equations algebraically and GAMS creates the
specific equations appropriate for the model at
hand - Dont get confused by error messages!
- Read the output file!
- Equation listings are useful for checking the
model - Dont wait to get started!