csv2gdx2.gms : CSVRead Example 2 - Reading CSV Files with CSVRead

Description

This problem finds a least cost shipping schedule that meets
requirements at markets and supplies at factories.

CSVRead is used to read all data from external CSV files
with comma separated fields. We use execute CSVRead during compile-time
to directly read the data in to GAMS symbols.
Note: In this example, the CSV data can also be read by using a simple
table statement without doing further preprocessing.

This model is referenced in "Getting Started Example 1 - Reading
CSV files with CSVRead" from the CSVRead Documentation.

Dantzig, G B, Chapter 3.3. In Linear Programming and Extensions.
Princeton University Press, Princeton, New Jersey, 1963.

This formulation is described in detail in:
Rosenthal, R E, Chapter 2: A GAMS Tutorial. In GAMS: A User's Guide.
The Scientific Press, Redwood City, California, 1988.

The line numbers will not match those in the book because of these
comments.

Keywords: linear programming, transportation problem, scheduling,
          CSVRead, data exchange, GAMS language features


Category : GAMS Data Utilities library


Main file : csv2gdx2.gms   includes :  csv2gdx2.gms

$title CSVRead Example 2 - Reading CSV Files with CSVRead (CSV2GDX2,SEQ=111)

$onText
This problem finds a least cost shipping schedule that meets
requirements at markets and supplies at factories.

CSVRead is used to read all data from external CSV files
with comma separated fields. We use execute CSVRead during compile-time
to directly read the data in to GAMS symbols.
Note: In this example, the CSV data can also be read by using a simple
table statement without doing further preprocessing.

This model is referenced in "Getting Started Example 1 - Reading
CSV files with CSVRead" from the CSVRead Documentation.

Dantzig, G B, Chapter 3.3. In Linear Programming and Extensions.
Princeton University Press, Princeton, New Jersey, 1963.

This formulation is described in detail in:
Rosenthal, R E, Chapter 2: A GAMS Tutorial. In GAMS: A User's Guide.
The Scientific Press, Redwood City, California, 1988.

The line numbers will not match those in the book because of these
comments.

Keywords: linear programming, transportation problem, scheduling,
          CSVRead, data exchange, GAMS language features
$offText

$onEcho > distance.csv
,new-york,chicago,topeka
seattle,2.5,1.7,1.8
san-diego,2.5,1.8,1.4
$offEcho

$onEcho > capacity.csv
,capacity
seattle,350
san-diego,600
$offEcho

$onEcho > demand.csv
,demand
new-york,325
chicago,300
topeka,275
$offEcho

Set
   i 'canning plants'
   j 'markets';

Parameter d(i,j) 'distance in thousands of miles';

$callTool csvread distance.csv id=d dimids=i,j index=1 values=2..lastCol useHeader=y trace=0
$ifE errorLevel<>0 $abort Problems reading distance.csv!

display i, j, d;

Parameter
   a(i) 'capacity of plant i in cases'
   b(j) 'demand at market j in cases';

$callTool csvread capacity.csv id=a index=1 values=2 useHeader=y trace=0
$ifE errorLevel<>0 $abort Problems reading capacity.csv!

$callTool csvread demand.csv id=b index=1 values=2 useHeader=y trace=0
$ifE errorLevel<>0 $abort Problems reading demand.csv!

display a, b;

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;

Variable
   x(i,j) 'shipment quantities in cases'
   z      'total transportation costs in thousands of dollars';

Positive Variable x;

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