mirror of
https://github.com/ANL-CEEESA/RELOG.git
synced 2025-12-06 07:48:50 -06:00
Describe piecewise-linear capacities in the docs; update JSON schema
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
name = "RELOG"
|
||||
uuid = "a2afcdf7-cf04-4913-85f9-c0d81ddf2008"
|
||||
authors = ["Alinson S Xavier <axavier@anl.gov>"]
|
||||
version = "1.0.0"
|
||||
version = "0.1.0"
|
||||
|
||||
[deps]
|
||||
Cbc = "9961bab8-2fa3-5c5a-9d89-47fab24efd76"
|
||||
|
||||
@@ -276,5 +276,5 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
<!--
|
||||
MkDocs version : 1.1
|
||||
Build Date UTC : 2020-05-22 14:47:36
|
||||
Build Date UTC : 2020-05-22 15:06:46
|
||||
-->
|
||||
|
||||
@@ -288,30 +288,6 @@
|
||||
<td>The longitude of the location, in degrees.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>opening cost</code></td>
|
||||
<td>The cost (in dollars) to open the plant.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>fixed operating cost</code></td>
|
||||
<td>The cost (in dollars) to keep the plant open, even if the plant doesn't process anything. Must be a timeseries.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>variable operating cost</code></td>
|
||||
<td>The cost (in dollars per tonnes) that the plant incurs to process each tonnes of input. Must be a timeseries.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>base capacity</code></td>
|
||||
<td>The amount of input (in tonnes) the plant can process when zero dollars are spent on expansion. If unlimited, this key may be omitted.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>max capacity</code></td>
|
||||
<td>The amount (in tonnes) the plant can process when the maximum amount of dollars are spent on expansion. If unlimited, this key may be omitted.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>expansion cost</code></td>
|
||||
<td>The cost (in dollars per tonnes) to increase the plant capacity beyond its base capacity. If zero, this key may be omitted. Must be a timeseries.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>disposal</code></td>
|
||||
<td>A dictionary describing what products can be disposed locally at the plant.</td>
|
||||
</tr>
|
||||
@@ -340,6 +316,29 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>The keys in the <code>capacities</code> dictionary should be the amounts (in tonnes). The values are dictionaries with the following keys:</p>
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th align="left">Key</th>
|
||||
<th>Description</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="left"><code>opening cost</code></td>
|
||||
<td>The cost (in dollars) to open a plant of this size.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>fixed operating cost</code></td>
|
||||
<td>The cost (in dollars) to keep the plant open, even if the plant doesn't process anything. Must be a timeseries.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="left"><code>variable operating cost</code></td>
|
||||
<td>The cost (in dollars per tonnes) that the plant incurs to process each tonne of input. Must be a timeseries.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h3 id="example_2">Example</h3>
|
||||
<pre><code class="json">{
|
||||
"plants": {
|
||||
@@ -353,32 +352,29 @@
|
||||
"L1": {
|
||||
"latitude": 0.0,
|
||||
"longitude": 0.0,
|
||||
"opening cost": [500, 500],
|
||||
"base capacity": 250.0,
|
||||
"max capacity": 1000.0,
|
||||
"expansion cost": [1.0, 1.0],
|
||||
"fixed operating cost": [30.0, 30.0],
|
||||
"variable operating cost": [30.0, 30.0],
|
||||
"disposal": {
|
||||
"P2": {
|
||||
"cost": [-10.0, -10.0],
|
||||
"limit": [1.0, 1.0]
|
||||
},
|
||||
"P3": {
|
||||
"cost": [-10.0, -10.0],
|
||||
"cost": [-10.0, -12.0],
|
||||
"limit": [1.0, 1.0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"L2": {
|
||||
"latitude": 0.5,
|
||||
"longitude": 0.5,
|
||||
"capacities": {
|
||||
"100": {
|
||||
"opening cost": [500, 530],
|
||||
"fixed operating cost": [300.0, 310.0],
|
||||
"variable operating cost": [5.0, 5.2]
|
||||
},
|
||||
"500": {
|
||||
"opening cost": [750, 760],
|
||||
"fixed operating cost": [400.0, 450.0],
|
||||
"variable operating cost": [4.5, 4.7]
|
||||
},
|
||||
"700": {
|
||||
"opening cost": [1000, 1000],
|
||||
"base capacity": 0.0,
|
||||
"max capacity": 10000.0,
|
||||
"expansion cost": [1.0, 1.0],
|
||||
"fixed operating cost": [50.0, 50.0],
|
||||
"variable operating cost": [50.0, 50.0]
|
||||
"fixed operating cost": [500.0, 600.0],
|
||||
"variable operating cost": [4.0, 4.4]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -79,12 +79,6 @@
|
||||
"L1": {
|
||||
"latitude": 0.0,
|
||||
"longitude": 0.0,
|
||||
"opening cost": [500, 500],
|
||||
"base capacity": 250.0,
|
||||
"max capacity": 1000.0,
|
||||
"expansion cost": [1.0, 1.0],
|
||||
"fixed operating cost": [30.0, 30.0],
|
||||
"variable operating cost": [30.0, 30.0],
|
||||
"disposal": {
|
||||
"P2": {
|
||||
"cost": [-10.0, -10.0],
|
||||
@@ -94,17 +88,35 @@
|
||||
"cost": [-10.0, -10.0],
|
||||
"limit": [1.0, 1.0]
|
||||
}
|
||||
},
|
||||
"capacities": {
|
||||
"250.0": {
|
||||
"opening cost": [500.0, 500.0],
|
||||
"fixed operating cost": [30.0, 30.0],
|
||||
"variable operating cost": [30.0, 30.0]
|
||||
},
|
||||
"1000.0": {
|
||||
"opening cost": [1250.0, 1250.0],
|
||||
"fixed operating cost": [30.0, 30.0],
|
||||
"variable operating cost": [30.0, 30.0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"L2": {
|
||||
"latitude": 0.5,
|
||||
"longitude": 0.5,
|
||||
"capacities": {
|
||||
"0.0": {
|
||||
"opening cost": [1000, 1000],
|
||||
"base capacity": 0.0,
|
||||
"max capacity": 10000.0,
|
||||
"expansion cost": [1.0, 1.0],
|
||||
"fixed operating cost": [50.0, 50.0],
|
||||
"variable operating cost": [50.0, 50.0]
|
||||
},
|
||||
"10000.0": {
|
||||
"opening cost": [10000, 10000],
|
||||
"fixed operating cost": [50.0, 50.0],
|
||||
"variable operating cost": [50.0, 50.0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -118,24 +130,31 @@
|
||||
"L3": {
|
||||
"latitude": 25.0,
|
||||
"longitude": 65.0,
|
||||
"capacity": 1000,
|
||||
"opening cost": [3000, 3000],
|
||||
"fixed operating cost": [50.0, 50.0],
|
||||
"variable operating cost": [50.0, 50.0],
|
||||
"disposal": {
|
||||
"P3": {
|
||||
"cost": [100.0, 100.0]
|
||||
}
|
||||
},
|
||||
"capacities": {
|
||||
"1000.0": {
|
||||
"opening cost": [3000, 3000],
|
||||
"fixed operating cost": [50.0, 50.0],
|
||||
"variable operating cost": [50.0, 50.0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"L4": {
|
||||
"latitude": 0.75,
|
||||
"longitude": 0.20,
|
||||
"capacities": {
|
||||
"10000": {
|
||||
"opening cost": [3000, 3000],
|
||||
"fixed operating cost": [50.0, 50.0],
|
||||
"variable operating cost": [50.0, 50.0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"F3": {
|
||||
"input": "P4",
|
||||
@@ -143,11 +162,15 @@
|
||||
"L5": {
|
||||
"latitude": 100.0,
|
||||
"longitude": 100.0,
|
||||
"capacities": {
|
||||
"10000": {
|
||||
"opening cost": [0.0, 0.0],
|
||||
"fixed operating cost": [0.0, 0.0],
|
||||
"variable operating cost": [-15.0, -15.0]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"F4": {
|
||||
"input": "P3",
|
||||
@@ -155,6 +178,8 @@
|
||||
"L6": {
|
||||
"latitude": 50.0,
|
||||
"longitude": 50.0,
|
||||
"capacities": {
|
||||
"10000": {
|
||||
"opening cost": [0.0, 0.0],
|
||||
"fixed operating cost": [0.0, 0.0],
|
||||
"variable operating cost": [-15.0, -15.0]
|
||||
@@ -162,4 +187,6 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,12 +91,6 @@ Each type of plant is associated with a set of potential locations where it can
|
||||
|:------------------------|---------------|
|
||||
| `latitude` | The latitude of the location, in degrees.
|
||||
| `longitude` | The longitude of the location, in degrees.
|
||||
| `opening cost` | The cost (in dollars) to open the plant.
|
||||
| `fixed operating cost` | The cost (in dollars) to keep the plant open, even if the plant doesn't process anything. Must be a timeseries.
|
||||
| `variable operating cost` | The cost (in dollars per tonnes) that the plant incurs to process each tonnes of input. Must be a timeseries.
|
||||
| `base capacity` | The amount of input (in tonnes) the plant can process when zero dollars are spent on expansion. If unlimited, this key may be omitted.
|
||||
| `max capacity` | The amount (in tonnes) the plant can process when the maximum amount of dollars are spent on expansion. If unlimited, this key may be omitted.
|
||||
| `expansion cost` | The cost (in dollars per tonnes) to increase the plant capacity beyond its base capacity. If zero, this key may be omitted. Must be a timeseries.
|
||||
| `disposal` | A dictionary describing what products can be disposed locally at the plant.
|
||||
| `capacities` | A dictionary describing what plant sizes are allowed, and their characteristics.
|
||||
|
||||
@@ -108,6 +102,14 @@ The keys in the `disposal` dictionary should be the names of the products. The v
|
||||
| `limit` | The maximum amount (in tonnes) that can be disposed of. If an unlimited amount can be disposed, this key may be omitted. Must be a timeseries.
|
||||
|
||||
|
||||
The keys in the `capacities` dictionary should be the amounts (in tonnes). The values are dictionaries with the following keys:
|
||||
|
||||
| Key | Description
|
||||
|:------------------------|---------------|
|
||||
| `opening cost` | The cost (in dollars) to open a plant of this size.
|
||||
| `fixed operating cost` | The cost (in dollars) to keep the plant open, even if the plant doesn't process anything. Must be a timeseries.
|
||||
| `variable operating cost` | The cost (in dollars per tonnes) that the plant incurs to process each tonne of input. Must be a timeseries.
|
||||
|
||||
### Example
|
||||
|
||||
```json
|
||||
@@ -123,32 +125,29 @@ The keys in the `disposal` dictionary should be the names of the products. The v
|
||||
"L1": {
|
||||
"latitude": 0.0,
|
||||
"longitude": 0.0,
|
||||
"opening cost": [500, 500],
|
||||
"base capacity": 250.0,
|
||||
"max capacity": 1000.0,
|
||||
"expansion cost": [1.0, 1.0],
|
||||
"fixed operating cost": [30.0, 30.0],
|
||||
"variable operating cost": [30.0, 30.0],
|
||||
"disposal": {
|
||||
"P2": {
|
||||
"cost": [-10.0, -10.0],
|
||||
"limit": [1.0, 1.0]
|
||||
},
|
||||
"P3": {
|
||||
"cost": [-10.0, -10.0],
|
||||
"cost": [-10.0, -12.0],
|
||||
"limit": [1.0, 1.0]
|
||||
}
|
||||
}
|
||||
},
|
||||
"L2": {
|
||||
"latitude": 0.5,
|
||||
"longitude": 0.5,
|
||||
"capacities": {
|
||||
"100": {
|
||||
"opening cost": [500, 530],
|
||||
"fixed operating cost": [300.0, 310.0],
|
||||
"variable operating cost": [5.0, 5.2]
|
||||
},
|
||||
"500": {
|
||||
"opening cost": [750, 760],
|
||||
"fixed operating cost": [400.0, 450.0],
|
||||
"variable operating cost": [4.5, 4.7]
|
||||
},
|
||||
"700": {
|
||||
"opening cost": [1000, 1000],
|
||||
"base capacity": 0.0,
|
||||
"max capacity": 10000.0,
|
||||
"expansion cost": [1.0, 1.0],
|
||||
"fixed operating cost": [50.0, 50.0],
|
||||
"variable operating cost": [50.0, 50.0]
|
||||
"fixed operating cost": [500.0, 600.0],
|
||||
"variable operating cost": [4.0, 4.4]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -160,6 +159,5 @@ Model Assumptions
|
||||
-----------------
|
||||
* Each plant can only be opened exactly once. After open, the plant remains open until the end of the simulation.
|
||||
* Plants can be expanded at any time, even long after they are open.
|
||||
* Variable and fixed operating costs do not change according to plant size.
|
||||
* All material available at the beginning of a time period must be entirely processed by the end of that time period. It is not possible to store unprocessed materials from one time period to the next.
|
||||
|
||||
|
||||
@@ -43,12 +43,6 @@
|
||||
"properties": {
|
||||
"latitude": { "type": "number" },
|
||||
"longitude": { "type": "number" },
|
||||
"variable operating cost": { "$ref": "#/definitions/TimeSeries" },
|
||||
"fixed operating cost": { "$ref": "#/definitions/TimeSeries" },
|
||||
"opening cost": { "$ref": "#/definitions/TimeSeries" },
|
||||
"base capacity": { "type": "number" },
|
||||
"max capacity": { "type": "number" },
|
||||
"expansion cost": { "$ref": "#/definitions/TimeSeries" },
|
||||
"disposal": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
@@ -61,14 +55,28 @@
|
||||
"cost"
|
||||
]
|
||||
}
|
||||
},
|
||||
"capacities": {
|
||||
"type": "object",
|
||||
"additionalProperties": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"variable operating cost": { "$ref": "#/definitions/TimeSeries" },
|
||||
"fixed operating cost": { "$ref": "#/definitions/TimeSeries" },
|
||||
"opening cost": { "$ref": "#/definitions/TimeSeries" }
|
||||
},
|
||||
"required": [
|
||||
"variable operating cost",
|
||||
"fixed operating cost",
|
||||
"opening cost"
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"latitude",
|
||||
"longitude",
|
||||
"variable operating cost",
|
||||
"fixed operating cost",
|
||||
"opening cost"
|
||||
"capacities"
|
||||
]
|
||||
}
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user