GAMSUsersGuide.pdf

(1613 KB) Pobierz
GAMS|AUser'sGuide
TutorialbyRichardE.Rosenthal
c July 2011
GAMS Development Corporation, Washington, DC, USA
Table of Contents
1
Introduction
1
1.1
Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2
Basic Features of GAMS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2.1
General Principles
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2.2
Documentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.3
Portability
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.4
User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.2.5
Model Library
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2
1.3
Organization of the Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3
2
A GAMS Tutorial byRichardE.Rosenthal
5
2.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5
2.2
Structure of a GAMS Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2.3
Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
8
2.4
Data
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
2.4.1
Data Entry by Lists
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
2.4.2
Data Entry by Tables
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.4.3
Data Entry by Direct Assignment
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
2.5
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.6
Equations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.6.1
Equation Declaration
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.6.2
GAMS Summation (and Product) Notation . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.6.3
Equation Denition
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
2.7
Objective Function
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.8
Model and Solve Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
2.9
Display Statements
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.10
The '.lo, .l, .up, .m' Database
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
2.10.1
Assignment of Variable Bounds and/or Initial Values . . . . . . . . . . . . . . . . . . . . .
16
2.10.2
Transformation and Display of Optimal Values
. . . . . . . . . . . . . . . . . . . . . . . .
17
2.11
GAMS Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.11.1
Echo Prints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
2.11.2
Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
2.11.3
Reference Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
2.11.4
Equation Listings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
2.11.5
Model Statistics
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.11.6
Status Reports
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
2.11.7
Solution Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
2.12
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
3
GAMS Programs
27
3.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2
The Structure of GAMS Programs
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.1
Format of GAMS Input
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.2.2
Classication of GAMS Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
4
TABLE OF CONTENTS
3.2.3
Organization of GAMS Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
3.3
Data Types and Denitions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.4
Language Items
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
3.4.1
Characters
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.4.2
Reserved Words
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.4.3
Identiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
3.4.4
Labels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.4.5
Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
3.4.6
Numbers
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.4.7
Delimiters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.4.8
Comments
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
3.5
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4
Set Denitions
35
4.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.2
Simple Sets
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.2.1
The Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.2.2
Set Names
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
4.2.3
Set Elements
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.2.4
Associated Text
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
4.2.5
Sequences as Set Elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.2.6
Declarations for Multiple Sets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37
4.3
The Alias Statement: Multiple Names for a Set
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.4
Subsets and Domain Checking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
4.5
Multi-dimensional Sets
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.5.1
One-to-one Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
4.5.2
Many-to-many Mapping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.6
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
41
5
Data Entry: Parameters, Scalars & Tables
43
5.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
5.2
Scalars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
5.2.1
The Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
43
5.2.2
An Illustrative Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.3
Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.3.1
The Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.3.2
An Illustrative Examples
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
5.3.3
Parameter Data for Higher Dimensions
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.4
Tables
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.4.1
The Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
5.4.2
An Illustrative Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.4.3
Continued Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
5.4.4
Tables with more than Two Dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.4.5
Condensing Tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
5.4.6
Handling Long Row Labels
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
5.5
Acronyms
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
5.5.1
The Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
5.5.2
Illustrative Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
5.6
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
6
Data Manipulations with Parameters
51
6.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
6.2
The Assignment Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
6.2.1
Scalar Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
6.2.2
Indexed Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
6.2.3
Using Labels Explicitly in Assignments
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
TABLE OF CONTENTS
5
6.2.4
Assignments Over Subsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
6.2.5
Issues with Controlling Indices
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
52
6.2.6
Extended Range Identiers in Assignments
. . . . . . . . . . . . . . . . . . . . . . . . . .
53
6.2.7
Acronyms in Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
6.3
Expressions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
6.3.1
Standard Arithmetic Operations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
6.3.2
Indexed Operations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
6.3.3
Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
6.3.4
Extended Range Arithmetic and Error Handling
. . . . . . . . . . . . . . . . . . . . . . .
62
6.4
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
63
7
Variables
65
7.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
7.2
Variable Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
7.2.1
The Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
65
7.2.2
Variable Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
7.2.3
Styles for Variable Declaration
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
7.3
Variable Attributes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
7.3.1
Bounds on Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
7.3.2
Fixing Variables
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
67
7.3.3
Activity Levels of Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
7.4
Variables in Display and Assignment Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
7.4.1
Assigning Values to Variable Attributes
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
7.4.2
Variable Attributes in Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
7.4.3
Displaying Variable Attributes
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
7.5
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
8
Equations
71
8.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
8.2
Equation Declarations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
8.2.1
The Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
8.2.2
An Illustrative Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
8.3
Equation Denitions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
8.3.1
The Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
8.3.2
An Illustrative Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
8.3.3
Scalar Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
8.3.4
Indexed Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
8.3.5
Using Labels Explicitly in Equations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
8.4
Expressions in Equation Denitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
8.4.1
Arithmetic Operators in Equation Denitions . . . . . . . . . . . . . . . . . . . . . . . . .
74
8.4.2
Functions in Equation Denitions
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
74
8.4.3
Preventing Undened Operations in Equations
. . . . . . . . . . . . . . . . . . . . . . . .
74
8.5
Data Handling Aspects of Equations
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
75
9
Model and Solve Statements
77
9.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
9.2
The Model Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
9.2.1
The Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
9.2.2
Classication of Models
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
9.2.3
Model Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
78
9.3
The Solve Statement
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
79
9.3.1
The Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
9.3.2
Requirements for a Valid Solve Statement . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
9.3.3
Actions Triggered by the Solve Statement . . . . . . . . . . . . . . . . . . . . . . . . . . .
80
9.4
Programs with Several Solve Statements
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
9.4.1
Several Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
Zgłoś jeśli naruszono regulamin