connect03.gms : Simple Connect Example with CSV Files

Description

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

GAMS Connect is used to read and write CSV files.
Note: In this example, the CSV data can also be read by using a simple
table statement without doing further preprocessing.
```

Category : GAMS Data Utilities library

Main file : connect03.gms   includes :  connect03.gms

``````\$title Simple Connect Example with CSV files (CONNECT03,SEQ=146)

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

GAMS Connect is used to read and write CSV files.
Note: In this example, the CSV data can also be read by using a simple
table statement without doing further preprocessing.

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

Keywords: linear programming, transportation problem, scheduling
\$offText

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

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

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

Set i 'canning plants', j 'markets';

Parameter d(i<,j<) 'Distance', a(i) 'Capacity', b(j) 'Demand';

\$onEmbeddedCode Connect:
file: distance.csv
name: d
indexColumns: 1
valueColumns: "2:lastCol"
file: capacity.csv
name: a
indexColumns: 1
valueColumns: 2
file: demand.csv
name: b
indexColumns: 1
valueColumns: 2
- GAMSWriter:
writeAll: True
\$offEmbeddedCode

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;

EmbeddedCode Connect:
symbols:
- name: x
- Projection:
name: x.l(i,j)
newName: x_l(i,j)
- CSVWriter:
file: shipment_quantities.csv
name: x_l
unstack: True
endEmbeddedCode
``````
GAMS Development Corp.
GAMS Software GmbH

General Information and Sales
U.S. (+1) 202 342-0180
Europe: (+49) 221 949-9170
GAMS is a registered trademark of GAMS Software GmbH in the European Union