-
Notifications
You must be signed in to change notification settings - Fork 0
/
sailco.json
135 lines (135 loc) · 3.32 KB
/
sailco.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
{
"Problem": {
"Name": "sailco",
"Reference": "https://www.ibm.com/support/knowledgecenter/SSSA5P_12.7.1/ilog.odms.ide.help/OPL_Studio/opllanguser/topics/opl_languser_app_areas_pwl_inventory.html",
"Author": "Jeremy A. Bloom (jeremyblmca@gmail.com)",
"Notices": "Copyright © 2019 Jeremy A. Bloom"
},
"Input_Data_Model": {
"periods": {"+period": "Integer"},
"demands": {
"*period": "Integer",
"demand": "Double"
},
"parameters": {
"regularCost": "Double",
"extraCost": "Double",
"capacity": "Double",
"initialInventory": "Double",
"inventoryCost": "Double"
}
},
"Output_Data_Model": {
"production": {
"*period": "Double",
"regular": "Double",
"extra": "Double",
"inventory": "Double",
"marginalCapacityValue": "Double"
}
},
"Data": {
"periods": [
{"period": 1},
{"period": 2},
{"period": 3},
{"period": 4}
],
"demands": [
{"period": 1, "demand": 40.0},
{"period": 2, "demand": 60.0},
{"period": 3, "demand": 72.0},
{"period": 4, "demand": 25.0}
],
"parameters": [
{"regularCost": 400.0},
{"extraCost": 450.0},
{"capacity": 40.0},
{"initialInventory": 10.0},
{"inventoryCost": 20.0}
]
},
"Variables": [
{
"Name": "regular",
"Type": "Continuous",
"Index": "periods",
"Bounds": "Non-negative"
},
{
"Name": "extra",
"Type": "Continuous",
"Index": "periods",
"Bounds": "Non-negative"
},
{
"Name": "inventory",
"Type": "Continuous",
"Index": "periods",
"Bounds": "Non-negative"
}
],
"Constraints": [
{
"Name": "ctCapacity",
"Type": "Linear",
"Index": "periods",
"Sense": "<=",
"RHS": "parameters.capacity"
},
{
"Name": "ctBoat",
"Type": "Linear",
"Index": "periods.period >1",
"Sense": "==",
"RHS": "demands.demand"
},
{
"Name": "ctBoat",
"Type": "Linear",
"Index": "periods.period ==1",
"Sense": "==",
"RHS": "demands.demand + parameters.initialInventory"
}
],
"Decision_Expressions": [
{
"Name": "totalCost",
"Type": "Linear",
"Index": "Self",
"Sense": "minimize"
}
],
"Coefficients": [
{
"Name": "ctCapacity_regular",
"Constraints": "ctCapacity",
"Variables": "regular",
"Entries": 1.0
},
{
"Name": "ctBoat_regular",
"Constraints": "ctBoat",
"Variables": "regular",
"Entries": 1.0
},
{
"Name": "ctBoat_extra",
"Constraints": "ctBoat",
"Variables": "extra",
"Entries": 1.0
},
{
"Name": "ctBoat_inventory",
"Constraints": "ctBoat",
"Variables": "inventory",
"Entries": 1.0
},
{
"Name": "ctBoat_lagged_inventory",
"Constraints": {"Name": "ctBoat", "Index": "periods.period > 1"},
"Variables": {"Name":"inventory", "Index": "periods.period-1"},
"Entries": -1.0
}
]
}