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"
|
name = "RELOG"
|
||||||
uuid = "a2afcdf7-cf04-4913-85f9-c0d81ddf2008"
|
uuid = "a2afcdf7-cf04-4913-85f9-c0d81ddf2008"
|
||||||
authors = ["Alinson S Xavier <axavier@anl.gov>"]
|
authors = ["Alinson S Xavier <axavier@anl.gov>"]
|
||||||
version = "1.0.0"
|
version = "0.1.0"
|
||||||
|
|
||||||
[deps]
|
[deps]
|
||||||
Cbc = "9961bab8-2fa3-5c5a-9d89-47fab24efd76"
|
Cbc = "9961bab8-2fa3-5c5a-9d89-47fab24efd76"
|
||||||
|
|||||||
@@ -276,5 +276,5 @@ POSSIBILITY OF SUCH DAMAGE.
|
|||||||
|
|
||||||
<!--
|
<!--
|
||||||
MkDocs version : 1.1
|
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>
|
<td>The longitude of the location, in degrees.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<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 align="left"><code>disposal</code></td>
|
||||||
<td>A dictionary describing what products can be disposed locally at the plant.</td>
|
<td>A dictionary describing what products can be disposed locally at the plant.</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -340,6 +316,29 @@
|
|||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</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>
|
<h3 id="example_2">Example</h3>
|
||||||
<pre><code class="json">{
|
<pre><code class="json">{
|
||||||
"plants": {
|
"plants": {
|
||||||
@@ -353,32 +352,29 @@
|
|||||||
"L1": {
|
"L1": {
|
||||||
"latitude": 0.0,
|
"latitude": 0.0,
|
||||||
"longitude": 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": {
|
"disposal": {
|
||||||
"P2": {
|
"P2": {
|
||||||
"cost": [-10.0, -10.0],
|
"cost": [-10.0, -12.0],
|
||||||
"limit": [1.0, 1.0]
|
|
||||||
},
|
|
||||||
"P3": {
|
|
||||||
"cost": [-10.0, -10.0],
|
|
||||||
"limit": [1.0, 1.0]
|
"limit": [1.0, 1.0]
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"L2": {
|
"capacities": {
|
||||||
"latitude": 0.5,
|
"100": {
|
||||||
"longitude": 0.5,
|
"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],
|
"opening cost": [1000, 1000],
|
||||||
"base capacity": 0.0,
|
"fixed operating cost": [500.0, 600.0],
|
||||||
"max capacity": 10000.0,
|
"variable operating cost": [4.0, 4.4]
|
||||||
"expansion cost": [1.0, 1.0],
|
}
|
||||||
"fixed operating cost": [50.0, 50.0],
|
}
|
||||||
"variable operating cost": [50.0, 50.0]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
Binary file not shown.
@@ -79,12 +79,6 @@
|
|||||||
"L1": {
|
"L1": {
|
||||||
"latitude": 0.0,
|
"latitude": 0.0,
|
||||||
"longitude": 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": {
|
"disposal": {
|
||||||
"P2": {
|
"P2": {
|
||||||
"cost": [-10.0, -10.0],
|
"cost": [-10.0, -10.0],
|
||||||
@@ -94,17 +88,35 @@
|
|||||||
"cost": [-10.0, -10.0],
|
"cost": [-10.0, -10.0],
|
||||||
"limit": [1.0, 1.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": {
|
"L2": {
|
||||||
"latitude": 0.5,
|
"latitude": 0.5,
|
||||||
"longitude": 0.5,
|
"longitude": 0.5,
|
||||||
|
"capacities": {
|
||||||
|
"0.0": {
|
||||||
"opening cost": [1000, 1000],
|
"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],
|
"fixed operating cost": [50.0, 50.0],
|
||||||
"variable 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": {
|
"L3": {
|
||||||
"latitude": 25.0,
|
"latitude": 25.0,
|
||||||
"longitude": 65.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": {
|
"disposal": {
|
||||||
"P3": {
|
"P3": {
|
||||||
"cost": [100.0, 100.0]
|
"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": {
|
"L4": {
|
||||||
"latitude": 0.75,
|
"latitude": 0.75,
|
||||||
"longitude": 0.20,
|
"longitude": 0.20,
|
||||||
|
"capacities": {
|
||||||
|
"10000": {
|
||||||
"opening cost": [3000, 3000],
|
"opening cost": [3000, 3000],
|
||||||
"fixed operating cost": [50.0, 50.0],
|
"fixed operating cost": [50.0, 50.0],
|
||||||
"variable operating cost": [50.0, 50.0]
|
"variable operating cost": [50.0, 50.0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"F3": {
|
"F3": {
|
||||||
"input": "P4",
|
"input": "P4",
|
||||||
@@ -143,11 +162,15 @@
|
|||||||
"L5": {
|
"L5": {
|
||||||
"latitude": 100.0,
|
"latitude": 100.0,
|
||||||
"longitude": 100.0,
|
"longitude": 100.0,
|
||||||
|
"capacities": {
|
||||||
|
"10000": {
|
||||||
"opening cost": [0.0, 0.0],
|
"opening cost": [0.0, 0.0],
|
||||||
"fixed operating cost": [0.0, 0.0],
|
"fixed operating cost": [0.0, 0.0],
|
||||||
"variable operating cost": [-15.0, -15.0]
|
"variable operating cost": [-15.0, -15.0]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"F4": {
|
"F4": {
|
||||||
"input": "P3",
|
"input": "P3",
|
||||||
@@ -155,6 +178,8 @@
|
|||||||
"L6": {
|
"L6": {
|
||||||
"latitude": 50.0,
|
"latitude": 50.0,
|
||||||
"longitude": 50.0,
|
"longitude": 50.0,
|
||||||
|
"capacities": {
|
||||||
|
"10000": {
|
||||||
"opening cost": [0.0, 0.0],
|
"opening cost": [0.0, 0.0],
|
||||||
"fixed operating cost": [0.0, 0.0],
|
"fixed operating cost": [0.0, 0.0],
|
||||||
"variable operating cost": [-15.0, -15.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.
|
| `latitude` | The latitude of the location, in degrees.
|
||||||
| `longitude` | The longitude 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.
|
| `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.
|
| `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.
|
| `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
|
### Example
|
||||||
|
|
||||||
```json
|
```json
|
||||||
@@ -123,32 +125,29 @@ The keys in the `disposal` dictionary should be the names of the products. The v
|
|||||||
"L1": {
|
"L1": {
|
||||||
"latitude": 0.0,
|
"latitude": 0.0,
|
||||||
"longitude": 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": {
|
"disposal": {
|
||||||
"P2": {
|
"P2": {
|
||||||
"cost": [-10.0, -10.0],
|
"cost": [-10.0, -12.0],
|
||||||
"limit": [1.0, 1.0]
|
|
||||||
},
|
|
||||||
"P3": {
|
|
||||||
"cost": [-10.0, -10.0],
|
|
||||||
"limit": [1.0, 1.0]
|
"limit": [1.0, 1.0]
|
||||||
}
|
}
|
||||||
}
|
|
||||||
},
|
},
|
||||||
"L2": {
|
"capacities": {
|
||||||
"latitude": 0.5,
|
"100": {
|
||||||
"longitude": 0.5,
|
"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],
|
"opening cost": [1000, 1000],
|
||||||
"base capacity": 0.0,
|
"fixed operating cost": [500.0, 600.0],
|
||||||
"max capacity": 10000.0,
|
"variable operating cost": [4.0, 4.4]
|
||||||
"expansion cost": [1.0, 1.0],
|
}
|
||||||
"fixed operating cost": [50.0, 50.0],
|
}
|
||||||
"variable operating cost": [50.0, 50.0]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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.
|
* 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.
|
* 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.
|
* 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": {
|
"properties": {
|
||||||
"latitude": { "type": "number" },
|
"latitude": { "type": "number" },
|
||||||
"longitude": { "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": {
|
"disposal": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"additionalProperties": {
|
"additionalProperties": {
|
||||||
@@ -61,14 +55,28 @@
|
|||||||
"cost"
|
"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": [
|
"required": [
|
||||||
"latitude",
|
"latitude",
|
||||||
"longitude",
|
"longitude",
|
||||||
"variable operating cost",
|
"capacities"
|
||||||
"fixed operating cost",
|
|
||||||
"opening cost"
|
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user