1package com.gams.examples.transport;
4import java.io.FileInputStream;
5import java.io.IOException;
25 public static void main(String[] args)
throws IOException {
29 String reader =
"JXL";
31 if (args.length > 0) {
35 if (args.length > 1) {
36 if (args[0].toUpperCase().equals(
"POI")) {
37 reader = args[0].toUpperCase();
43 File workingDirectory =
new File(System.getProperty(
"user.dir"),
"Transport10");
44 workingDirectory.mkdir();
53 if (reader.equals(
"POI")) {
55 readPOIFromFile poiReader =
new readPOIFromFile(getInputString(ws));
56 poiReader.read(t.
geti(),
"capacity");
57 poiReader.read(t.
geta(),
"capacity",
false);
58 poiReader.read(t.
getj(),
"demand");
59 poiReader.read(t.
getb(),
"demand",
false);
60 poiReader.read(t.
getd(),
"distance",
true);
65 readJXLFromFile jxlReader =
new readJXLFromFile(getInputString(ws));
66 jxlReader.read(t.
geti(),
"capacity");
67 jxlReader.read(t.
geta(),
"capacity",
false);
68 jxlReader.read(t.
getj(),
"demand");
69 jxlReader.read(t.
getb(),
"demand",
false);
70 jxlReader.read(t.
getd(),
"distance",
true);
72 }
catch (jxl.read.biff.BiffException e) {
85 System.out.println(
"x(" + rec.getKey(0) +
"," + rec.getKey(1) +
"): level=" + rec.getLevel() +
" marginal=" + rec.getMarginal());
95 return gamsdir +
"apifiles" + GAMSGlobals.FILE_SEPARATOR +
"Data"
96 + GAMSGlobals.FILE_SEPARATOR +
"transport.xls";
105class readJXLFromFile {
106 private jxl.Workbook w;
113 public readJXLFromFile(String input)
throws IOException, jxl.read.biff.BiffException {
114 File inputFile =
new File(input);
115 w = jxl.Workbook.getWorkbook(inputFile);
122 public void read(GAMSSet
set, String fromWorksheet) {
123 jxl.Sheet sheet = w.getSheet(fromWorksheet);
124 for(jxl.Cell cell : sheet.getRow(0))
125 set.addRecord( cell.getContents() );
133 public void read(GAMSParameter param, String fromWorksheet,
boolean twoDimensioned) {
134 jxl.Sheet sheet = w.getSheet(fromWorksheet);
135 if (twoDimensioned) {
136 for (
int j = 1; j < sheet.getColumns(); j++)
137 for (
int i = 1; i < sheet.getRows(); i++)
138 param.addRecord( sheet.getCell(0,i).getContents(),
139 sheet.getCell(j,0).getContents()
140 ).setValue( Double.valueOf(sheet.getCell(j,i).getContents()) );
142 for (
int j = 0; j < sheet.getColumns(); j++)
143 param.addRecord( sheet.getCell(j, 0).getContents() ).setValue( Double.valueOf(sheet.getCell(j,1).getContents()) );
148 public void close() {
159class readPOIFromFile {
160 private org.apache.poi.hssf.usermodel.HSSFWorkbook workbook;
161 private FileInputStream file;
167 public readPOIFromFile(String input)
throws IOException {
168 file =
new FileInputStream(
new File(input));
169 workbook =
new org.apache.poi.hssf.usermodel.HSSFWorkbook(file);
176 public void read(GAMSSet
set, String fromWorksheet) {
177 org.apache.poi.hssf.usermodel.HSSFSheet sheet = workbook.getSheet(fromWorksheet);
178 fillSetFromRow(
set, sheet.getRow( sheet.getFirstRowNum()) );
186 public void read(GAMSParameter param, String fromWorksheet,
boolean twoDimensioned) {
187 org.apache.poi.hssf.usermodel.HSSFSheet sheet = workbook.getSheet(fromWorksheet);
189 fillTwoDimensionedParameterFromSheet(param, sheet);
191 fillParameterFromSheet( param, sheet );
195 public void close() throws IOException {
200 private void fillSetFromRow(GAMSSet
set, org.apache.poi.hssf.usermodel.HSSFRow row) {
201 for(org.apache.poi.ss.usermodel.Cell cell : row) {
202 switch(cell.getCellTypeEnum()) {
203 case BOOLEAN:
set.addRecord( String.valueOf( cell.getBooleanCellValue() ) );
break;
204 case NUMERIC:
set.addRecord( String.valueOf( cell.getNumericCellValue() ) );
break;
205 case STRING:
set.addRecord( cell.getStringCellValue() );
break;
211 private void fillParameterFromSheet(GAMSParameter param, org.apache.poi.hssf.usermodel.HSSFSheet sheet) {
212 org.apache.poi.hssf.usermodel.HSSFRow firstRow = sheet.getRow( sheet.getFirstRowNum() );
213 org.apache.poi.hssf.usermodel.HSSFRow row = sheet.getRow( sheet.getLastRowNum() );
215 for (org.apache.poi.ss.usermodel.Cell cell : row) {
216 switch(cell.getCellTypeEnum()) {
217 case NUMERIC: param.addRecord( firstRow.getCell(idx).getStringCellValue() ).setValue( cell.getNumericCellValue() );
break;
219 param.addRecord( firstRow.getCell(idx).getStringCellValue() ).setValue( Double.valueOf( cell.getStringCellValue() ));
break;
221 param.addRecord( firstRow.getCell(idx).getStringCellValue() ).setValue( cell.getBooleanCellValue() ? 1 : 0 );
break;
228 private void fillTwoDimensionedParameterFromSheet(GAMSParameter param, org.apache.poi.hssf.usermodel.HSSFSheet sheet) {
229 for (org.apache.poi.ss.usermodel.Row row : sheet) {
230 if (row.getRowNum() == sheet.getFirstRowNum()) {
233 org.apache.poi.ss.usermodel.Cell cell = row.getCell( 0 );
234 for (
short j = 1; j<row.getLastCellNum() ; j++) {
235 cell = row.getCell( j );
236 switch(cell.getCellTypeEnum()) {
238 param.addRecord( row.getCell(0).getStringCellValue() ,
239 sheet.getRow(0).getCell( j ).getStringCellValue()
240 ).setValue( cell.getNumericCellValue() );
243 param.addRecord( row.getCell(0).getStringCellValue() , sheet.getRow( 0 ).getCell( j ).getStringCellValue() ).setValue( Double.valueOf( cell.getStringCellValue() ));
246 param.addRecord( row.getCell(0).getStringCellValue() , sheet.getRow( 0 ).getCell( j ).getStringCellValue() ).setValue( cell.getBooleanCellValue() ? 1 : 0 );
static final String FILE_SEPARATOR
void setAllModelTypes(String value)
void setSystemDirectory(String directory)
void setWorkingDirectory(String directory)
This example demonstrates how to retrieve an input for GAMS Transport Model from an Excel file (trans...
This example shows the wrapper model of a transportation problem based on the simple GAMS [trnsport] ...
GAMSOptions getopt()
Options for the execution of the trnsport model.
void run(GAMSCheckpoint checkpoint)
Executes the trnsport model.
GAMSVariable getx()
x(i,j): shipment quantities in cases
GAMSParameter getb()
b(i): demand at market j in cases
GAMSParameter geta()
a(i): capacity of plant i in cases
GAMSParameter getd()
d(i,j): distance in thousands of miles
GAMSSet geti()
i: canning plants
Provides package namespace for Java interface and examples to General Algebraic Model System (GAMS).