RELOG: Composition Format
Input Data Format (JSON)
Glossary of types
Type |
Description |
Example |
int |
An integer number. |
1 |
float |
A real number. |
3.1415 |
str |
A string. |
"Euclidean" |
vec(int) |
A vector of integer numbers, with any length. |
[1, 2, 3] |
vec(int, 5) |
A vector of integer numbers, with 5 elements. |
[1, 2, 3, 4, 5] |
mat(float, 2, 3, 4) |
A matrix of floating point numbers with shape (2, 3, 5). |
rand(Float64, 2, 3, 4) |
dict(str, int) |
A dictionary mapping strings to integer numbers. |
Dict("A" => 1) |
Parameters
Key |
Type |
Description |
time horizon (years) |
int |
Number of years in the simulation. |
building period (years) |
vec(int) |
List of years in which we are allowed to open new plants. For example, if this parameter is set to [1,2,3] , we can only open plants during the first three years. By default, this equals [1] ; that is, plants can only be opened during the first year. |
distance metric |
str |
Metric used to compute distances between pairs of locations. Valid options are: "Euclidean" , for the straight-line distance between points; or "driving" for an approximated driving distance. If not specified, defaults to "Euclidean" . |
Example
{
"parameters": {
"time horizon (years)": 4,
"building period (years)": [1],
"distance metric": "driving"
}
}
Products
Key |
Type |
Description |
transportation cost ($/km/tonne) |
vec(float, T) |
The cost (in dollars) to transport one tonne of the product over one kilometer at time t . |
transportation energy (J/km/tonne) |
vec(float, T) |
The energy (in J) required to transport this product at time t . |
transportation emissions (tonne/km/tonne) |
dict(str, vec(float, T)) |
A dictionary mapping the name of each greenhouse gas (produced during the transportation of one tonne of this product along one kilometer at time t ) to the amount of gas produced (in tonnes). |
components |
vec(str) |
List of components for the product. |
Example
{
"products": {
"P1": {
"transportation cost ($/km/tonne)": [0.015, 0.015, 0.015, 0.015],
"transportation energy (J/km/tonne)": [0.12, 0.12, 0.12, 0.12],
"transportation emissions (tonne/km/tonne)": {
"CO2": [0.052, 0.052, 0.052, 0.052],
"CH4": [0.003, 0.003, 0.003, 0.003]
},
"components": ["P1a", "P1b", "P1c"]
}
}
}
Centers
Key |
Type |
Description |
latitude (deg) |
float |
The latitude of the center. |
longitude (deg) |
float |
The longitude of the center. |
input |
str |
The name of the product this center takes as input. May be null if the center accept no input product. |
outputs |
vec(str) |
List of output products collected by the center. May be [] if none. |
fixed output (tonne) |
dict(str, mat(float, T, C)) |
Dictionary mapping the name of each output product p to a matrix M , where M_{t,c} is the amount (in tonne) of output product component c produced by the center at time t , regardless of how much input material the center received. |
variable output (tonne/tonne) |
dict(str,mat(float, T, M, N)) |
Dictionary mapping the name of each output product p to a (T \times m \times n) matrix M that describes the amount (in tonnes) of output product component produced by the center, depending on how much input material the center received in prior years, where T is the number of years, m is the number of components of p and n is the number of components of the input product. |
revenue ($/tonne) |
vec(float, T) |
Revenue generated by each tonne of input material sent to the center. If the center accepts no input, this should be null |
collection cost ($/tonne) |
dict(str,vec(float,T)) |
Dictionary mapping the name of each output product to the cost of collecting one tonne of the product. |
operating cost ($) |
vec(float,T) |
Fixed cost to operate the center for one year, regardless of amount of product received or generated. |
disposal limit (tonne) |
dict(str,vec(float,T)) |
Dictionary mapping the name of each output product to the maximum disposal amount allower per year of the product at the center. Entry may be null if unlimited. |
disposal cost ($/tonne) |
dict(str,vec(float,T)) |
Dictionary mapping the name of each output product to the cost to dispose one tonne of the product at the center. |
{
"centers": {
"C1": {
"latitude (deg)": 41.881,
"longitude (deg)": -87.623,
"input": "P1",
"outputs": ["P2", "P3"],
"fixed output (tonne)": {
"P2": [
[50, 20, 10],
[5, 2, 1],
[0, 0, 0],
[0, 0, 0]
],
"P3": [
[20, 10],
[10, 5],
[0, 0],
[0, 0]
]
},
"variable output (tonne/tonne)": {
"P2": [
[
[1, 0, 0],
[0, 1, 1]
],
[
[1, 0, 0],
[0, 1, 1]
],
[
[1, 0, 0],
[0, 1, 1]
],
[
[1, 0, 0],
[0, 1, 1]
]
],
"P3": [
[
[1, 0, 0],
[0, 1, 1]
],
[
[1, 0, 0],
[0, 1, 1]
],
[
[1, 0, 0],
[0, 1, 1]
],
[
[1, 0, 0],
[0, 1, 1]
]
]
},
"revenue ($/tonne)": [12.0, 12.0, 12.0, 12.0],
"collection cost ($/tonne)": {
"P2": [0.25, 0.25, 0.25, 0.25],
"P3": [0.37, 0.37, 0.37, 0.37]
},
"operating cost ($)": [150.0, 150.0, 150.0, 150.0],
"disposal limit (tonne)": {
"P2": [0, 0, 0, 0],
"P3": [null, null, null, null]
},
"disposal cost ($/tonne)": {
"P2": [0.23, 0.23, 0.23, 0.23],
"P3": [1.0, 1.0, 1.0, 1.0]
}
},
"C2": {
"latitude (deg)": 41.881,
"longitude (deg)": -87.623,
"input": null,
"outputs": ["P4"],
"fixed output (tonne)": {
"P4": [
[50, 5],
[60, 6],
[70, 7],
[80, 8]
]
},
"revenue ($/tonne)": null,
"collection cost ($/tonne)": {
"P4": [0.25, 0.25, 0.25, 0.25]
},
"operating cost ($)": [150.0, 150.0, 150.0, 150.0],
"disposal limit (tonne)": {
"P4": [null, null, null, null]
},
"disposal cost ($/tonne)": {
"P4": [0, 0, 0, 0]
}
},
"C3": {
"latitude (deg)": 41.881,
"longitude (deg)": -87.623,
"input": "P1",
"outputs": [],
"variable output (tonne/tonne)": {},
"constant output (tonne)": {},
"revenue ($/tonne)": [12.0, 12.0, 12.0, 12.0],
"collection cost ($/tonne)": {},
"operating cost ($)": [150.0, 150.0, 150.0, 150.0],
"disposal limit (tonne)": {},
"disposal cost ($/tonne)": {}
}
}
}
Plants
Key |
|
Description |
latitude (deg) |
float |
The latitude of the plant, in degrees. |
longitude (deg) |
float |
The longitude of the plant, in degrees. |
input mix (%) |
dict(str,float) |
Dictionary mapping the name of each input product to the amount required (as a percentage). Must sum to 100%. |
output (tonne/tonne) |
dict(str,dict(str,mat(float, T, M, N))) |
Dictionary of matrices describing the component outputs. |
processing emissions (tonne) |
dict(str,vec(float,T)) |
A dictionary mapping the name of each greenhouse gas, produced to process each tonne of input, to the amount of gas produced (in tonne). |
storage cost ($/tonne) |
dict(str,vec(float,T)) |
Dictionary mapping the name of each input product to the cost of storing the product for one year at the plant for later processing. |
storage limit (tonne) |
|
Dictionary mapping the name of each input product to the maximum amount allowed in storage at any time. May be null if unlimited. |
disposal cost ($/tonne) |
|
Dictionary mapping the name of each output product to the cost of disposing it at the plant. |
disposal limit (tonne) |
|
Dictionary mapping the name of each output product to the maximum amount allowed to be disposed of at the plant. May be null if unlimited. |
capacities |
|
List describing what plant sizes are allowed, and their characteristics. |
The entries in the capacities
list should be dictionaries with the following
keys:
Key |
Description |
size (tonne) |
The size of the plant. |
opening cost ($) |
The cost to open a plant of this size. |
fixed operating cost ($) |
The cost to keep the plant open, even if the plant doesn't process anything. Must be a time series. |
variable operating cost ($/tonne) |
The cost that the plant incurs to process each tonne of input. Must be a time series. |
initial capacity (tonne) |
Capacity already available. If the plant has not been built yet, this should be 0 . |
{
"plants": {
"L1": {
"latitude (deg)": 41.881,
"longitude (deg)": -87.623,
"input mix (%)": {
"P1": 95.3,
"P2": 4.7
},
"output (tonne/tonne)": {
"P3": {
"P1": [
[[1, 0, 0], [0, 1, 1]],
[[1, 0, 0], [0, 1, 1]],
[[1, 0, 0], [0, 1, 1]],
[[1, 0, 0], [0, 1, 1]]
],
"P2": [
[[0, 1], [1, 0]],
[[0, 1], [1, 0]],
[[0, 1], [1, 0]],
[[0, 1], [1, 0]]
]
},
"P4": {
"P1": [
[[1, 0, 0], [0, 1, 1]],
[[1, 0, 0], [0, 1, 1]],
[[1, 0, 0], [0, 1, 1]],
[[1, 0, 0], [0, 1, 1]]
],
"P2": [
[[0, 1], [1, 0]],
[[0, 1], [1, 0]],
[[0, 1], [1, 0]],
[[0, 1], [1, 0]]
]
},
"P5": {
"P1": [[1, 0, 0], [0, 1, 1]],
"P2": [[0, 1], [1, 0]],
}
},
"processing emissions (tonne)": {
"CO2": 0.1
},
"storage cost ($/tonne)": {
"P1": 0.1,
"P2": 0.1
},
"storage limit (tonne)": {
"P1": 100,
"P2": null
},
"disposal cost ($/tonne)": {
"P3": 0,
"P4": 0.86,
"P5": 0.25,
},
"disposal limit (tonne)": {
"P3": null,
"P4": 1000.0,
"P5": 1000.0
},
"capacities": [
{
"size": 100,
"opening cost ($)": 500,
"fixed operating cost ($)": 300,
"variable operating cost ($/tonne)": 5.0
},
{
"size": 500,
"opening cost ($)": 1000.0,
"fixed operating cost ($)": 400.0,
"variable operating cost ($/tonne)": 5.0.
}
],
"initial capacity (tonne)": 0,
}
}
}