Compare commits

..

No commits in common. '5eee29547cae6b9bfc9a41b18da598bb8ae4d71d' and '744b043461e67bb2b1ea8455afa70f56cd168087' have entirely different histories.

@ -152,7 +152,6 @@ detail.
| `disposal cost ($/tonne)` | Dictionary mapping the name of each output product to the cost of disposing it at the plant. | | `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. | | `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. | | `capacities` | List describing what plant sizes are allowed, and their characteristics. |
| `initial capacity (tonne)` | Capacity already available. If the plant has not been built yet, this should be `0`. |
The entries in the `capacities` list should be dictionaries with the following The entries in the `capacities` list should be dictionaries with the following
keys: keys:
@ -161,8 +160,9 @@ keys:
| :---------------------------------- | :-------------------------------------------------------------------------------------------------- | | :---------------------------------- | :-------------------------------------------------------------------------------------------------- |
| `size (tonne)` | The size of the plant. | | `size (tonne)` | The size of the plant. |
| `opening cost ($)` | The cost to open a plant of this size. | | `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. | | `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 the same for all capacities. | | `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`. |
```json ```json
{ {

@ -5,7 +5,7 @@
The mathematical model employed by RELOG is based on three main components: The mathematical model employed by RELOG is based on three main components:
1. **Products and Materials:** Inputs and outputs for both manufacturing and 1. **Products and Materials:** Inputs and outputs for both manufacturing and
recycling plants. This includes raw materials, whether virgin or recovered, recycling plants. This include raw materials, whether virgin or recovered,
and final products, whether new or at their end-of-life. Each product has and final products, whether new or at their end-of-life. Each product has
associated transportation parameters, such as costs, energy and emissions. associated transportation parameters, such as costs, energy and emissions.
@ -50,32 +50,25 @@ The mathematical model employed by RELOG is based on three main components:
## Constants ## Constants
| Symbol | Description | Unit | | Symbol | Description | Unit |
| :---------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- | | :-------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |
| $K^{\text{dist}}_{uv}$ | Distance between plants/centers $u$ and $v$ | km | | $K^{\text{dist}}_{uv}$ | Distance between plants/centers $u$ and $v$ | km |
| $K^\text{cap-init}_p$ | Initial capacity of plant $p$ | tonne | | $K^\text{cap}_{p}$ | Capacity of plant $p$, if the plant is open | tonne |
| $K^\text{cap-max}_p$ | Maximum capacity of plant $p$ | tonne |
| $K^\text{cap-min}_p$ | Minimum capacity of plant $p$ | tonne |
| $K^\text{disp-limit}_{mt}$ | Maximum amount of material $m$ that can be disposed of (globally) at time $t$ | tonne | | $K^\text{disp-limit}_{mt}$ | Maximum amount of material $m$ that can be disposed of (globally) at time $t$ | tonne |
| $K^\text{disp-limit}_{mut}$ | Maximum amount of material $m$ that can be disposed of at plant/center $u$ at time $t$ | tonne | | $K^\text{disp-limit}_{mut}$ | Maximum amount of material $m$ that can be disposed of at plant/center $u$ at time $t$ | tonne |
| $K^\text{em-limit}_{gt}$ | Maximum amount of greenhouse gas $g$ allowed to be emitted (globally) at time $t$ | tonne | | $K^\text{em-limit}_{gt}$ | Maximum amount of greenhouse gas $g$ allowed to be emitted (globally) at time $t$ | tonne |
| $K^\text{em-plant}_{gpt}$ | Amount of greenhouse gas $g$ released by plant $p$ at time $t$ for each tonne of input material processed | tonne/tonne | | $K^\text{em-plant}_{gpt}$ | Amount of greenhouse gas $g$ released by plant $p$ at time $t$ for each tonne of input material processed | tonne/tonne |
| $K^\text{em-tr}_{gmt}$ | Amount of greenhouse gas $g$ released by transporting 1 tonne of material $m$ over one km at time $t$ | tonne/km-tonne | | $K^\text{em-tr}_{gmt}$ | Amount of greenhouse gas $g$ released by transporting 1 tonne of material $m$ over one km at time $t$ | tonne/km-tonne |
| $K^\text{mix}_{pmt}$ | If plant $p$ receives one tonne of input material at time $t$, then $K^\text{mix}_{pmt}$ is the amount of product $m$ in this mix. Must be between zero and one, and the sum of these amounts must equal to one. | tonne | | $K^\text{mix}_{pmt}$ | If plant $p$ receives one tonne of input material at time $t$, then $K^\text{mix}_{pmt}$ is the amount of product $m$ in this mix. Must be between zero and one, and the sum of these amounts must equal to one. | tonne |
| $K^\text{out-fix}_{cmt}$ | Fixed amount of material $m$ collected at center $c$ at time $t$ | tonne | | $K^\text{out-fix}_{cmt}$ | Fixed amount of material $m$ collected at center $m$ at time $t$ | \$/tonne |
| $K^\text{out-var-len}_{cm}$ | Length of the $K^\text{out-var}_{c,m,*}$ vector. | -- | | $K^\text{out-var-len}_{cm}$ | Length of the $K^\text{out-var}_{c,m,*}$ vector. | -- |
| $K^\text{out-var}_{cmi}$ | Factor used to calculate variable amount of material $m$ collected at center $c$. See `eq_z_collected` for more details. | -- | | $K^\text{out-var}_{c,m,i}$ | Factor used to calculate variable amount of material $m$ collected at center $m$. See `eq_z_collected` for more details. | -- |
| $K^\text{output}_{pmt}$ | Amount of material $m$ produced by plant $p$ at time $t$ for each tonne of input material processed | tonne | | $K^\text{output}_{pmt}$ | Amount of material $m$ produced by plant $p$ at time $t$ for each tonne of input material processed | tonne |
| $K^\text{storage-limit}_{pm}$ | Maximum amount of material $m$ that can be stored at plant $p$ at any time | tonne |
| $R^\text{collect}_{cmt}$ | Cost of collecting material $m$ at center $c$ at time $t$ | \$/tonne | | $R^\text{collect}_{cmt}$ | Cost of collecting material $m$ at center $c$ at time $t$ | \$/tonne |
| $R^\text{disp}_{umt}$ | Cost to dispose of material at plant/center $u$ at time $t$ | \$/tonne | | $R^\text{disp}_{umt}$ | Cost to dispose of material at plant/center $u$ at time $t$ | \$/tonne |
| $R^\text{em}_{gt}$ | Penalty cost per tonne of greenhouse gas $g$ emitted at time $t$ | \$/tonne | | $R^\text{em}_{gt}$ | Penalty cost per tonne of greenhouse gas $g$ emitted at time $t$ | \$/tonne |
| $R^\text{expand}_{pt}$ | Cost to increase capacity of plant $p$ at time $t$ | \$/tonne | | $R^\text{fix}_{ut}$ | Fixed operating cost for plant/center $u$ at time $t$ | \$ |
| $R^\text{fix-exp}_{pt}$ | Increase in fixed operational cost for plant $p$ at time $t$ for every additional tonne of capacity | \$/tonne | | $R^\text{open}_{pt}$ | Cost to open plant $p$ at time $t$ | \$ |
| $R^\text{fix-min}_{pt}$ | Fixed operating cost for plant $p$ at time $t$ at minimum capacity | \$ |
| $R^\text{fix}_{ct}$ | Fixed operating cost for center $c$ at time $t$ | \$ |
| $R^\text{open}_{pt}$ | Cost to open plant $p$ at time $t$, at minimum capacity | \$ |
| $R^\text{rev}_{ct}$ | Revenue for selling the input product of center $c$ at this center at time $t$ | \$/tonne | | $R^\text{rev}_{ct}$ | Revenue for selling the input product of center $c$ at this center at time $t$ | \$/tonne |
| $R^\text{storage}_{pmt}$ | Cost to store one tonne of material $m$ at plant $p$ at time $t$ for one year | \$/tonne |
| $R^\text{tr}_{mt}$ | Cost to send material $m$ at time $t$ | \$/km-tonne | | $R^\text{tr}_{mt}$ | Cost to send material $m$ at time $t$ | \$/km-tonne |
| $R^\text{var}_{pt}$ | Cost to process one tonne of input material at plant $p$ at time $t$ | \$/tonne | | $R^\text{var}_{pt}$ | Cost to process one tonne of input material at plant $p$ at time $t$ | \$/tonne |
@ -85,19 +78,16 @@ The mathematical model employed by RELOG is based on three main components:
| :--------------------------- | :------------------------------------------- | :------------------------------------------------------------------------------------------------------ | :----- | | :--------------------------- | :------------------------------------------- | :------------------------------------------------------------------------------------------------------ | :----- |
| $x_{pt}$ | `x[p.name, t]` | One if plant $p$ is operational at time $t$ | binary | | $x_{pt}$ | `x[p.name, t]` | One if plant $p$ is operational at time $t$ | binary |
| $y_{uvmt}$ | `y[u.name, v.name, m.name, t]` | Amount of product $m$ sent from plant/center $u$ to plant/center $v$ at time $t$ | tonne | | $y_{uvmt}$ | `y[u.name, v.name, m.name, t]` | Amount of product $m$ sent from plant/center $u$ to plant/center $v$ at time $t$ | tonne |
| $z^{\text{exp}}_{pt}$ | `z_exp[p.name, t]` | Extra capacity installed at plant $p$ at time $t$ above the minimum capacity | tonne |
| $z^{\text{collected}}_{cmt}$ | `z_collected[c.name, m.name, t]` | Amount of material $m$ collected by center $c$ at time $t$ | tonne | | $z^{\text{collected}}_{cmt}$ | `z_collected[c.name, m.name, t]` | Amount of material $m$ collected by center $c$ at time $t$ | tonne |
| $z^{\text{disp}}_{umt}$ | `z_disp[u.name, m.name, t]` | Amount of product $m$ disposed of at plant/center $u$ at time $t$ | tonne | | $z^{\text{disp}}_{umt}$ | `z_disp[u.name, m.name, t]` | Amount of product $m$ disposed of at plant/center $u$ at time $t$ | tonne |
| $z^{\text{em-plant}}_{gpt}$ | `z_em_plant[g.name, p.name, t]` | Amount of greenhouse gas $g$ released by plant $p$ at time $t$ | tonne | | $z^{\text{input}}_{ut}$ | `z_input[u.name, t]` | Total plant/center input at time $t$ | tonne |
| $z^{\text{em-tr}}_{guvmt}$ | `z_em_tr[g.name, u.name, v.name, m.name, t]` | Amount of greenhouse gas $g$ released at time $t$ due to transportation of material $m$ from $u$ to $v$ | tonne |
| $z^{\text{input}}_{ut}$ | `z_input[u.name, t]` | Total amount received by plant/center $u$ at time $t$ | tonne |
| $z^{\text{prod}}_{umt}$ | `z_prod[u.name, m.name, t]` | Amount of product $m$ produced by plant/center $u$ at time $t$ | tonne | | $z^{\text{prod}}_{umt}$ | `z_prod[u.name, m.name, t]` | Amount of product $m$ produced by plant/center $u$ at time $t$ | tonne |
| $z^{\text{storage}}_{pmt}$ | `z_storage[p.name, m.name, t]` | Amount of input material $m$ stored at plant $p$ at the end of time $t$ | tonne | | $z^{\text{em-tr}}_{guvmt}$ | `z_em_tr[g.name, u.name, v.name, m.name, t]` | Amount of greenhouse gas $g$ released at time $t$ due to transportation of material $m$ from $u$ to $v$ | tonne |
| $z^{\text{process}}_{pt}$ | `z_process[p.name, t]` | Total amount of input material processed by plant $p$ at time $t$ | tonne | | $z^{\text{em-plant}}_{gpt}$ | `z_em_plant[g.name, p.name, t]` | Amount of greenhouse gas $g$ released by plant $p$ at time $t$ | tonne |
## Objective function ## Objective function
The goal is to minimize a linear objective function with the following terms: The goals is to minimize a linear objective function with the following terms:
- Transportation costs, which depend on transportation distance - Transportation costs, which depend on transportation distance
$K^{\text{dist}}_{uv}$ and product-specific factor $R^\text{tr}_{mt}$: $K^{\text{dist}}_{uv}$ and product-specific factor $R^\text{tr}_{mt}$:
@ -141,9 +131,7 @@ The goal is to minimize a linear objective function with the following terms:
\sum_{p \in P} \sum_{m \in M^+_p} \sum_{t \in T} R^\text{disp}_{pmt} z^\text{disp}_{pmt} \sum_{p \in P} \sum_{m \in M^+_p} \sum_{t \in T} R^\text{disp}_{pmt} z^\text{disp}_{pmt}
``` ```
- Plant opening cost, incurred when the plant goes from non-operational at time - Plant opening cost:
$t-1$ to operational at time $t$. Never incurred if the plant is initially
open:
```math ```math
\sum_{p \in P} \sum_{t \in T} R^\text{open}_{pt} \left( \sum_{p \in P} \sum_{t \in T} R^\text{open}_{pt} \left(
@ -152,20 +140,10 @@ The goal is to minimize a linear objective function with the following terms:
``` ```
- Plant fixed operating cost, incurred for every time period, regardless of - Plant fixed operating cost, incurred for every time period, regardless of
input or output amounts, as long as the plant is operational. Depends on the input or output amounts, as long as the plant is operational:
size of the plant:
```math ```math
\sum_{p \in P} \sum_{t \in T} \left( \sum_{p \in P} \sum_{t \in T} R^\text{fix}_{pt} x_{pt}
R^\text{fix-min}_{pt} x_{pt} +
R^\text{fix-exp}_{pt} z^\text{exp}_{pt}
\right)
```
- Plant expansion cost, incurred whenever plant capacity increases:
```math
\sum_{p \in P} \sum_{t \in T} R^\text{expand}_{pt} \left(z^\text{exp}_{pt} - z^\text{exp}_{p,t-1} \right)
``` ```
- Plant variable operating cost, incurred for each tonne of input material - Plant variable operating cost, incurred for each tonne of input material
@ -175,12 +153,6 @@ The goal is to minimize a linear objective function with the following terms:
\sum_{p \in P} \sum_{(u,m) \in E^-(p)} \sum_{t \in T} R^\text{var}_{pt} y_{upmt} \sum_{p \in P} \sum_{(u,m) \in E^-(p)} \sum_{t \in T} R^\text{var}_{pt} y_{upmt}
``` ```
- Plant storage cost, incurred for each tonne of material stored at the plant:
```math
\sum_{p \in P} \sum_{m \in M^-_p} \sum_{t \in T} R^\text{storage}_{pmt} z^{\text{storage}}_{pmt}
```
- Emissions penalty cost, incurred for each tonne of greenhouse gas emitted: - Emissions penalty cost, incurred for each tonne of greenhouse gas emitted:
```math ```math
@ -188,7 +160,6 @@ The goal is to minimize a linear objective function with the following terms:
\sum_{p \in P} z^{\text{em-plant}}_{gpt} + \sum_{(u,v,m) \in E} z^{\text{em-tr}}_{guvmt} \sum_{p \in P} z^{\text{em-plant}}_{gpt} + \sum_{(u,v,m) \in E} z^{\text{em-tr}}_{guvmt}
\right) \right)
``` ```
## Constraints ## Constraints
- Definition of plant input (`eq_z_input[p.name, t]`): - Definition of plant input (`eq_z_input[p.name, t]`):
@ -200,22 +171,13 @@ The goal is to minimize a linear objective function with the following terms:
\end{align*} \end{align*}
``` ```
- Definition of plant processing (`eq_z_process[p.name, t]`): - Plant input mix must have correct proportion
(`eq_input_mix[p.name, m.name, t]`):
```math
\begin{align*}
& z^{\text{process}}_{pt} = z^{\text{input}}_{pt} + \sum_{m \in M^-_p} \left(z^{\text{storage}}_{p,m,t-1} - z^{\text{storage}}_{pmt}\right)
& \forall p \in P, t \in T
\end{align*}
```
- Plant processing mix must have correct proportion
(`eq_process_mix[p.name, m.name, t]`):
```math ```math
\begin{align*} \begin{align*}
& \sum_{u : (u,m) \in E^-(p)} y_{upmt} + z^{\text{storage}}_{p,m,t-1} - z^{\text{storage}}_{pmt} & \sum_{u : (u,m) \in E^-(p)} y_{upmt}
= K^\text{mix}_{pmt} z^{\text{process}}_{pt} = K^\text{mix}_{pmt} z^{\text{input}}_{pt}
& \forall p \in P, m \in M^-_p, t \in T & \forall p \in P, m \in M^-_p, t \in T
\end{align*} \end{align*}
``` ```
@ -224,7 +186,7 @@ The goal is to minimize a linear objective function with the following terms:
```math ```math
\begin{align*} \begin{align*}
& z^\text{prod}_{pmt} = K^\text{output}_{pmt} z^{\text{process}}_{pt} & z^\text{prod}_{pmt} = K^\text{output}_{pmt} z^\text{input}_{pt}
& \forall p \in P, m \in M^+_p, t \in T & \forall p \in P, m \in M^+_p, t \in T
\end{align*} \end{align*}
``` ```
@ -239,56 +201,16 @@ The goal is to minimize a linear objective function with the following terms:
\end{align*} \end{align*}
``` ```
- Plant can only be expanded if the plant is open, and up to a certain amount - Plants have a maximum capacity; furthermore, if the plant is not open, its
(`eq_exp_ub[p.name, t]`): capacity is zero (`eq_capacity[p.name,t]`)
```math ```math
\begin{align*} \begin{align*}
& z^\text{exp}_{pt} \leq \left(K^\text{cap-max}_p - K^\text{cap-min}_p) x_{pt} & z^\text{input}_{pt} \leq K^\text{cap}_p x_{pt}
& \forall p \in P, t \in T & \forall p \in P, t \in T
\end{align*} \end{align*}
``` ```
- Plant is initially open if initial capacity is positive:
```math
\begin{align*}
& x_{p,0} = \begin{cases}
0 & \text{ if } K^\text{cap-init}_p = 0 \\
1 & \text{otherwise}
\end{cases}
& \forall p \in P
\end{align*}
```
- Calculation of initial plant expansion:
```math
\begin{align*}
& z^\text{exp}_{p,0} = K^\text{cap-init}_p - K^\text{cap-min}_p
& \forall p \in P
\end{align*}
```
- Plants cannot process more than their current capacity
(`eq_process_limit[p.name,t]`)
```math
\begin{align*}
& z^\text{process}_{pt} \leq K^\text{cap-min}_p x_{pt} + z^\text{exp}_{pt}
& \forall p \in P, t \in T
\end{align*}
```
- Storage limit at the plants (`eq_storage_limit[p.name, m.name, t]`):
```math
\begin{align*}
& z^{\text{storage}}_{pmt} \leq K^\text{storage-limit}_{pm}
& \forall p \in P, m \in M^-_p, t \in T
\end{align*}
```
- Disposal limit at the plants (`eq_disposal_limit[p.name, m.name, t]`): - Disposal limit at the plants (`eq_disposal_limit[p.name, m.name, t]`):
```math ```math
@ -358,8 +280,7 @@ The goal is to minimize a linear objective function with the following terms:
\end{align*} \end{align*}
``` ```
- Computation of transportation emissions - Computation of transportation emissions (`eq_emission_tr[g.name, u.name, v.name, m.name, t`):
(`eq_emission_tr[g.name, u.name, v.name, m.name, t]`):
```math ```math
\begin{align*} \begin{align*}
@ -372,7 +293,7 @@ The goal is to minimize a linear objective function with the following terms:
```math ```math
\begin{align*} \begin{align*}
& z^{\text{em-plant}}_{gpt} = K^\text{em-plant}_{gpt} z^{\text{process}}_{pt} & z^{\text{em-plant}}_{gpt} = \sum_{(u,m) \in E^-(p)} K^\text{em-plant}_{gpt} y_{upmt}
& \forall g \in G, p \in P, t \in T & \forall g \in G, p \in P, t \in T
\end{align*} \end{align*}
``` ```
@ -385,22 +306,3 @@ The goal is to minimize a linear objective function with the following terms:
& \forall g \in G, t \in T & \forall g \in G, t \in T
\end{align*} \end{align*}
``` ```
- All stored materials must be processed by the end of the time horizon
(`eq_storage_final[p.name, m.name]`):
```math
\begin{align*}
& z^{\text{storage}}_{p,m,t^{max}} = 0
& \forall p \in P, m \in M^-_p
\end{align*}
```
- Initial storage is zero (`eq_storage_initial[p.name, m.name]`):
```math
\begin{align*}
& z^{\text{storage}}_{p,m,0} = 0
& \forall p \in P, m \in M^-_p
\end{align*}
```

@ -1,12 +1,6 @@
module RELOG module RELOG
function _round(x::Number) _round(x::Number) = round(x, digits = 5)
if abs(x) < 1e-5
return 0
else
return round(x, digits = 5)
end
end
include("instance/structs.jl") include("instance/structs.jl")
include("instance/parse.jl") include("instance/parse.jl")

@ -110,32 +110,6 @@ function parse(json)::Instance
) )
end end
# Validate capacity count and duplicate if needed
if length(capacities) == 0
error("Plant '$name' must have at least one capacity defined")
elseif length(capacities) == 1
# Duplicate the single capacity
push!(capacities, capacities[1])
elseif length(capacities) > 2
error(
"Plant '$name' cannot have more than 2 capacities, got $(length(capacities))",
)
end
# Validate capacity sizes are non-decreasing
if capacities[1].size > capacities[2].size
error(
"Plant '$name' capacity sizes must be non-decreasing: $(capacities[1].size) > $(capacities[2].size)",
)
end
# Validate variable operating costs are the same
if capacities[1].var_operating_cost != capacities[2].var_operating_cost
error(
"Plant '$name' variable operating costs must be the same across all capacities",
)
end
plant = Plant(; plant = Plant(;
name, name,
latitude, latitude,

@ -1,17 +1,5 @@
# RELOG: Reverse Logistics Optimization
# Copyright (C) 2020, UChicago Argonne, LLC. All rights reserved.
# Released under the modified BSD license. See COPYING.md for more details.
using JuMP using JuMP
R_expand(p::Plant, t::Int) =
(p.capacities[2].opening_cost[t] - p.capacities[1].opening_cost[t]) /
(p.capacities[2].size - p.capacities[1].size)
R_fix_exp(p::Plant, t::Int) =
(p.capacities[2].fix_operating_cost[t] - p.capacities[1].fix_operating_cost[t]) /
(p.capacities[2].size - p.capacities[1].size)
function build_model(instance::Instance; optimizer, variable_names::Bool = false) function build_model(instance::Instance; optimizer, variable_names::Bool = false)
model = JuMP.Model(optimizer) model = JuMP.Model(optimizer)
centers = instance.centers centers = instance.centers
@ -20,15 +8,6 @@ function build_model(instance::Instance; optimizer, variable_names::Bool = false
T = 1:instance.time_horizon T = 1:instance.time_horizon
model.ext[:instance] = instance model.ext[:instance] = instance
# Constants
# -------------------------------------------------------------------------
K_cap_min = Dict(p => p.capacities[1].size for p in plants)
K_cap_max = Dict(p => p.capacities[2].size for p in plants)
R_open = Dict((p, t) => p.capacities[1].opening_cost[t] for p in plants for t in T)
R_fix_min =
Dict((p, t) => p.capacities[1].fix_operating_cost[t] for p in plants for t in T)
# Transportation edges # Transportation edges
# ------------------------------------------------------------------------- # -------------------------------------------------------------------------
@ -133,38 +112,12 @@ function build_model(instance::Instance; optimizer, variable_names::Bool = false
z_input[c.name, t] = @variable(model, lower_bound = 0) z_input[c.name, t] = @variable(model, lower_bound = 0)
end end
# Plant expansion
z_exp = _init(model, :z_exp)
for p in plants
z_exp[p.name, 0] = max(0, p.initial_capacity - K_cap_min[p])
end
for p in plants, t in T
z_exp[p.name, t] = @variable(model, lower_bound = 0)
end
# Total amount collected by the center # Total amount collected by the center
z_collected = _init(model, :z_collected) z_collected = _init(model, :z_collected)
for c in centers, m in c.outputs, t in T for c in centers, m in c.outputs, t in T
z_collected[c.name, m.name, t] = @variable(model, lower_bound = 0) z_collected[c.name, m.name, t] = @variable(model, lower_bound = 0)
end end
# Amount of input material stored at plant at end of time period
z_storage = _init(model, :z_storage)
for p in plants
for m in keys(p.input_mix)
z_storage[p.name, m.name, 0] = 0 # Initial storage is zero
end
end
for p in plants, m in keys(p.input_mix), t in T
z_storage[p.name, m.name, t] = @variable(model, lower_bound = 0)
end
# Total amount of input material processed by plant
z_process = _init(model, :z_process)
for p in plants, t in T
z_process[p.name, t] = @variable(model, lower_bound = 0)
end
# Transportation emissions by greenhouse gas # Transportation emissions by greenhouse gas
z_em_tr = _init(model, :z_em_tr) z_em_tr = _init(model, :z_em_tr)
for (p1, p2, m) in E, t in T, g in keys(m.tr_emissions) for (p1, p2, m) in E, t in T, g in keys(m.tr_emissions)
@ -218,18 +171,16 @@ function build_model(instance::Instance; optimizer, variable_names::Bool = false
# Plants: Opening cost # Plants: Opening cost
for p in plants, t in T for p in plants, t in T
add_to_expression!(obj, R_open[p, t], (x[p.name, t] - x[p.name, t-1])) add_to_expression!(
obj,
p.capacities[1].opening_cost[t],
(x[p.name, t] - x[p.name, t-1]),
)
end end
# Plants: Fixed operating cost # Plants: Fixed operating cost
for p in plants, t in T for p in plants, t in T
add_to_expression!(obj, R_fix_min[p, t], x[p.name, t]) add_to_expression!(obj, p.capacities[1].fix_operating_cost[t], x[p.name, t])
add_to_expression!(obj, R_fix_exp(p, t), z_exp[p.name, t])
end
# Plants: Expansion cost
for p in plants, t in T
add_to_expression!(obj, R_expand(p, t), z_exp[p.name, t] - z_exp[p.name, t-1])
end end
# Plants: Variable operating cost # Plants: Variable operating cost
@ -241,11 +192,6 @@ function build_model(instance::Instance; optimizer, variable_names::Bool = false
) )
end end
# Plants: Storage cost
for p in plants, m in keys(p.storage_cost), t in T
add_to_expression!(obj, p.storage_cost[m][t], z_storage[p.name, m.name, t])
end
# Emissions penalty cost # Emissions penalty cost
for emission in instance.emissions, t in T for emission in instance.emissions, t in T
# Plant emissions penalty # Plant emissions penalty
@ -285,27 +231,13 @@ function build_model(instance::Instance; optimizer, variable_names::Bool = false
) )
end end
# Plants: Definition of total processing amount # Plants: Must meet input mix
eq_z_process = _init(model, :eq_z_process) eq_input_mix = _init(model, :eq_input_mix)
for p in plants, t in T
eq_z_process[p.name, t] = @constraint(
model,
z_process[p.name, t] ==
z_input[p.name, t] + sum(
z_storage[p.name, m.name, t-1] - z_storage[p.name, m.name, t] for
m in keys(p.input_mix)
)
)
end
# Plants: Processing mix must have correct proportion
eq_process_mix = _init(model, :eq_process_mix)
for p in plants, m in keys(p.input_mix), t in T for p in plants, m in keys(p.input_mix), t in T
eq_process_mix[p.name, m.name, t] = @constraint( eq_input_mix[p.name, m.name, t] = @constraint(
model, model,
sum(y[src.name, p.name, m.name, t] for (src, m2) in E_in[p] if m == m2) + sum(y[src.name, p.name, m.name, t] for (src, m2) in E_in[p] if m == m2) ==
z_storage[p.name, m.name, t-1] - z_storage[p.name, m.name, t] == z_input[p.name, t] * p.input_mix[m][t]
z_process[p.name, t] * p.input_mix[m][t]
) )
end end
@ -314,7 +246,7 @@ function build_model(instance::Instance; optimizer, variable_names::Bool = false
for p in plants, m in keys(p.output), t in T for p in plants, m in keys(p.output), t in T
eq_z_prod[p.name, m.name, t] = @constraint( eq_z_prod[p.name, m.name, t] = @constraint(
model, model,
z_prod[p.name, m.name, t] == z_process[p.name, t] * p.output[m][t] z_prod[p.name, m.name, t] == z_input[p.name, t] * p.output[m][t]
) )
end end
@ -329,22 +261,11 @@ function build_model(instance::Instance; optimizer, variable_names::Bool = false
) )
end end
# Plants: Expansion upper bound # Plants: Capacity limit
eq_exp_ub = _init(model, :eq_exp_ub) eq_capacity = _init(model, :eq_capacity)
for p in plants, t in T for p in plants, t in T
eq_exp_ub[p.name, t] = @constraint( eq_capacity[p.name, t] =
model, @constraint(model, z_input[p.name, t] <= p.capacities[1].size * x[p.name, t])
z_exp[p.name, t] <= (K_cap_max[p] - K_cap_min[p]) * x[p.name, t]
)
end
# Plants: Processing limit
eq_process_limit = _init(model, :eq_process_limit)
for p in plants, t in T
eq_process_limit[p.name, t] = @constraint(
model,
z_process[p.name, t] <= K_cap_min[p] * x[p.name, t] + z_exp[p.name, t]
)
end end
# Plants: Disposal limit # Plants: Disposal limit
@ -440,26 +361,11 @@ function build_model(instance::Instance; optimizer, variable_names::Bool = false
for p in plants, t in T, g in keys(p.emissions) for p in plants, t in T, g in keys(p.emissions)
eq_emission_plant[g, p.name, t] = @constraint( eq_emission_plant[g, p.name, t] = @constraint(
model, model,
z_em_plant[g, p.name, t] == p.emissions[g][t] * z_process[p.name, t] z_em_plant[g, p.name, t] ==
p.emissions[g][t] * sum(y[src.name, p.name, m.name, t] for (src, m) in E_in[p])
) )
end end
# Storage limit at plants
eq_storage_limit = _init(model, :eq_storage_limit)
for p in plants, m in keys(p.storage_limit), t in T
if isfinite(p.storage_limit[m][t])
eq_storage_limit[p.name, m.name, t] =
@constraint(model, z_storage[p.name, m.name, t] <= p.storage_limit[m][t])
end
end
# All stored materials must be processed by end of time horizon
eq_storage_final = _init(model, :eq_storage_final)
for p in plants, m in keys(p.input_mix)
eq_storage_final[p.name, m.name] =
@constraint(model, z_storage[p.name, m.name, instance.time_horizon] == 0)
end
# Global emissions limit # Global emissions limit
eq_emission_limit = _init(model, :eq_emission_limit) eq_emission_limit = _init(model, :eq_emission_limit)
for emission in instance.emissions, t in T for emission in instance.emissions, t in T

@ -15,13 +15,9 @@ function plants_report(model)::DataFrame
df."year" = Int[] df."year" = Int[]
df."operational?" = Bool[] df."operational?" = Bool[]
df."input amount (tonne)" = Float64[] df."input amount (tonne)" = Float64[]
df."stored amount (tonne)" = Float64[]
df."processed amount (tonne)" = Float64[]
df."opening cost (\$)" = Float64[] df."opening cost (\$)" = Float64[]
df."fixed operating cost (\$)" = Float64[] df."fixed operating cost (\$)" = Float64[]
df."variable operating cost (\$)" = Float64[] df."variable operating cost (\$)" = Float64[]
df."expansion cost (\$)" = Float64[]
df."storage cost (\$)" = Float64[]
plants = model.ext[:instance].plants plants = model.ext[:instance].plants
T = 1:model.ext[:instance].time_horizon T = 1:model.ext[:instance].time_horizon
@ -29,36 +25,21 @@ function plants_report(model)::DataFrame
for p in plants, t in T for p in plants, t in T
operational = JuMP.value(model[:x][p.name, t]) > 0.5 operational = JuMP.value(model[:x][p.name, t]) > 0.5
input = value(model[:z_input][p.name, t]) input = value(model[:z_input][p.name, t])
processed = value(model[:z_process][p.name, t])
# Calculate total stored amount across all input materials # Opening cost
stored = sum(value(model[:z_storage][p.name, m.name, t]) for m in keys(p.input_mix))
# Calculate total storage cost
storage_cost = sum(
p.storage_cost[m][t] * value(model[:z_storage][p.name, m.name, t]) for
m in keys(p.storage_cost)
)
var_operating_cost = input * p.capacities[1].var_operating_cost[t]
opening_cost = 0 opening_cost = 0
curr_capacity = 0
expansion_cost = 0
fix_operating_cost = 0
if value(model[:x][p.name, t]) > 0.5 && value(model[:x][p.name, t-1]) < 0.5 if value(model[:x][p.name, t]) > 0.5 && value(model[:x][p.name, t-1]) < 0.5
opening_cost = p.capacities[1].opening_cost[t] opening_cost = p.capacities[1].opening_cost[t]
end end
# Plant size
curr_capacity = 0
if operational if operational
curr_expansion = JuMP.value(model[:z_exp][p.name, t]) curr_capacity = p.capacities[1].size
prev_expansion = JuMP.value(model[:z_exp][p.name, t-1])
curr_capacity = p.capacities[1].size + curr_expansion
expansion_cost = R_expand(p, t) * (curr_expansion - prev_expansion)
fix_operating_cost =
p.capacities[1].fix_operating_cost[t] + R_fix_exp(p, t) * curr_expansion
end end
fix_operating_cost = (operational ? p.capacities[1].fix_operating_cost[t] : 0)
var_operating_cost = input * p.capacities[1].var_operating_cost[t]
push!( push!(
df, df,
Dict( Dict(
@ -70,53 +51,9 @@ function plants_report(model)::DataFrame
"year" => t, "year" => t,
"operational?" => operational, "operational?" => operational,
"input amount (tonne)" => _round(input), "input amount (tonne)" => _round(input),
"stored amount (tonne)" => _round(stored),
"processed amount (tonne)" => _round(processed),
"opening cost (\$)" => _round(opening_cost), "opening cost (\$)" => _round(opening_cost),
"fixed operating cost (\$)" => _round(fix_operating_cost), "fixed operating cost (\$)" => _round(fix_operating_cost),
"variable operating cost (\$)" => _round(var_operating_cost), "variable operating cost (\$)" => _round(var_operating_cost),
"expansion cost (\$)" => _round(expansion_cost),
"storage cost (\$)" => _round(storage_cost),
),
)
end
return df
end
function plant_inputs_report(model)::DataFrame
df = DataFrame()
df."plant" = String[]
df."latitude" = Float64[]
df."longitude" = Float64[]
df."input product" = String[]
df."year" = Int[]
df."amount received (tonne)" = Float64[]
df."current storage level (tonne)" = Float64[]
df."storage limit (tonne)" = Float64[]
df."storage cost (\$)" = Float64[]
plants = model.ext[:instance].plants
T = 1:model.ext[:instance].time_horizon
for p in plants, m in keys(p.input_mix), t in T
amount_received = sum(
value(model[:y][src.name, p.name, m.name, t]) for
(src, prod) in model.ext[:E_in][p] if prod == m
)
storage_level = value(model[:z_storage][p.name, m.name, t])
storage_cost = p.storage_cost[m][t] * storage_level
push!(
df,
Dict(
"plant" => p.name,
"latitude" => p.latitude,
"longitude" => p.longitude,
"input product" => m.name,
"year" => t,
"amount received (tonne)" => _round(amount_received),
"current storage level (tonne)" => _round(storage_level),
"storage limit (tonne)" => _round(p.storage_limit[m][t]),
"storage cost (\$)" => _round(storage_cost),
), ),
) )
end end
@ -167,7 +104,7 @@ function plant_emissions_report(model)::DataFrame
df."longitude" = Float64[] df."longitude" = Float64[]
df."emission" = String[] df."emission" = String[]
df."year" = Int[] df."year" = Int[]
df."processed amount (tonne)" = Float64[] df."input amount (tonne)" = Float64[]
df."emission factor (tonne/tonne)" = Float64[] df."emission factor (tonne/tonne)" = Float64[]
df."emissions amount (tonne)" = Float64[] df."emissions amount (tonne)" = Float64[]
@ -175,9 +112,9 @@ function plant_emissions_report(model)::DataFrame
T = 1:model.ext[:instance].time_horizon T = 1:model.ext[:instance].time_horizon
for p in plants, t in T, g in keys(p.emissions) for p in plants, t in T, g in keys(p.emissions)
processed_amount = JuMP.value(model[:z_process][p.name, t]) input_amount = JuMP.value(model[:z_input][p.name, t])
processed_amount > 1e-3 || continue input_amount > 1e-3 || continue
emissions = JuMP.value(model[:z_em_plant][g, p.name, t]) emissions = JuMP.value(model[:z_plant_em][g, p.name, t])
emission_factor = p.emissions[g][t] emission_factor = p.emissions[g][t]
push!( push!(
df, df,
@ -187,7 +124,7 @@ function plant_emissions_report(model)::DataFrame
"longitude" => p.longitude, "longitude" => p.longitude,
"emission" => g, "emission" => g,
"year" => t, "year" => t,
"processed amount (tonne)" => _round(processed_amount), "input amount (tonne)" => _round(input_amount),
"emission factor (tonne/tonne)" => _round(emission_factor), "emission factor (tonne/tonne)" => _round(emission_factor),
"emissions amount (tonne)" => _round(emissions), "emissions amount (tonne)" => _round(emissions),
), ),
@ -197,8 +134,6 @@ function plant_emissions_report(model)::DataFrame
end end
write_plants_report(solution, filename) = CSV.write(filename, plants_report(solution)) write_plants_report(solution, filename) = CSV.write(filename, plants_report(solution))
write_plant_inputs_report(solution, filename) =
CSV.write(filename, plant_inputs_report(solution))
write_plant_outputs_report(solution, filename) = write_plant_outputs_report(solution, filename) =
CSV.write(filename, plant_outputs_report(solution)) CSV.write(filename, plant_outputs_report(solution))
write_plant_emissions_report(solution, filename) = write_plant_emissions_report(solution, filename) =

@ -73,7 +73,7 @@ function transportation_emissions_report(model)::DataFrame
amount > 1e-3 || continue amount > 1e-3 || continue
distance = distances[p1, p2, m] distance = distances[p1, p2, m]
emission_factor = m.tr_emissions[g][t] emission_factor = m.tr_emissions[g][t]
emissions = value(model[:z_em_tr][g, p1.name, p2.name, m.name, t]) emissions = value(model[:z_tr_em][g, p1.name, p2.name, m.name, t])
push!( push!(
df, df,
Dict( Dict(

@ -173,7 +173,6 @@ function run_boat_example()
mkpath(fixture("boat_example")) mkpath(fixture("boat_example"))
write_to_file(model, fixture("boat_example/model.lp")) write_to_file(model, fixture("boat_example/model.lp"))
RELOG.write_plants_report(model, fixture("boat_example/plants.csv")) RELOG.write_plants_report(model, fixture("boat_example/plants.csv"))
RELOG.write_plant_inputs_report(model, fixture("boat_example/plant_inputs.csv"))
RELOG.write_plant_outputs_report(model, fixture("boat_example/plant_outputs.csv")) RELOG.write_plant_outputs_report(model, fixture("boat_example/plant_outputs.csv"))
RELOG.write_plant_emissions_report(model, fixture("boat_example/plant_emissions.csv")) RELOG.write_plant_emissions_report(model, fixture("boat_example/plant_emissions.csv"))
RELOG.write_centers_report(model, fixture("boat_example/centers.csv")) RELOG.write_centers_report(model, fixture("boat_example/centers.csv"))

@ -1,27 +1,27 @@
center,latitude,longitude,output product,year,amount collected (tonne),amount disposed (tonne),disposal limit (tonne),collection cost ($),disposal cost ($) center,latitude,longitude,output product,year,amount collected (tonne),amount disposed (tonne),disposal limit (tonne),collection cost ($),disposal cost ($)
NailFactory (Chicago),41.881832,-87.623177,Nail,1,1.0,0.0,Inf,1000.0,0.0 NailFactory (Chicago),41.881832,-87.623177,Nail,1,1.0,-0.0,Inf,1000.0,-0.0
NailFactory (Chicago),41.881832,-87.623177,Nail,2,1.0,0.0,Inf,1000.0,0.0 NailFactory (Chicago),41.881832,-87.623177,Nail,2,1.0,0.0,Inf,1000.0,0.0
NailFactory (Chicago),41.881832,-87.623177,Nail,3,1.0,0.0,Inf,1000.0,0.0 NailFactory (Chicago),41.881832,-87.623177,Nail,3,1.0,0.0,Inf,1000.0,0.0
NailFactory (Chicago),41.881832,-87.623177,Nail,4,1.0,0.0,Inf,1000.0,0.0 NailFactory (Chicago),41.881832,-87.623177,Nail,4,1.0,0.0,Inf,1000.0,0.0
NailFactory (Chicago),41.881832,-87.623177,Nail,5,1.0,0.0,Inf,1000.0,0.0 NailFactory (Chicago),41.881832,-87.623177,Nail,5,1.0,-0.0,Inf,1000.0,-0.0
NailFactory (Phoenix),33.448376,-112.074036,Nail,1,1.0,0.0,Inf,1000.0,0.0 NailFactory (Phoenix),33.448376,-112.074036,Nail,1,1.0,0.0,Inf,1000.0,0.0
NailFactory (Phoenix),33.448376,-112.074036,Nail,2,1.0,0.0,Inf,1000.0,0.0 NailFactory (Phoenix),33.448376,-112.074036,Nail,2,1.0,0.0,Inf,1000.0,0.0
NailFactory (Phoenix),33.448376,-112.074036,Nail,3,1.0,0.0,Inf,1000.0,0.0 NailFactory (Phoenix),33.448376,-112.074036,Nail,3,1.0,0.0,Inf,1000.0,0.0
NailFactory (Phoenix),33.448376,-112.074036,Nail,4,1.0,0.0,Inf,1000.0,0.0 NailFactory (Phoenix),33.448376,-112.074036,Nail,4,1.0,0.0,Inf,1000.0,0.0
NailFactory (Phoenix),33.448376,-112.074036,Nail,5,1.0,0.0,Inf,1000.0,0.0 NailFactory (Phoenix),33.448376,-112.074036,Nail,5,1.0,-0.0,Inf,1000.0,-0.0
NailFactory (Dallas),32.776664,-96.796988,Nail,1,1.0,0.0,Inf,1000.0,0.0 NailFactory (Dallas),32.776664,-96.796988,Nail,1,1.0,0.0,Inf,1000.0,0.0
NailFactory (Dallas),32.776664,-96.796988,Nail,2,1.0,0.0,Inf,1000.0,0.0 NailFactory (Dallas),32.776664,-96.796988,Nail,2,1.0,0.0,Inf,1000.0,0.0
NailFactory (Dallas),32.776664,-96.796988,Nail,3,1.0,0.0,Inf,1000.0,0.0 NailFactory (Dallas),32.776664,-96.796988,Nail,3,1.0,0.0,Inf,1000.0,0.0
NailFactory (Dallas),32.776664,-96.796988,Nail,4,1.0,0.0,Inf,1000.0,0.0 NailFactory (Dallas),32.776664,-96.796988,Nail,4,1.0,0.0,Inf,1000.0,0.0
NailFactory (Dallas),32.776664,-96.796988,Nail,5,1.0,0.0,Inf,1000.0,0.0 NailFactory (Dallas),32.776664,-96.796988,Nail,5,1.0,-0.0,Inf,1000.0,-0.0
Forest (Chicago),41.881832,-87.623177,Wood,1,100.0,100.0,Inf,0.0,0.0 Forest (Chicago),41.881832,-87.623177,Wood,1,100.0,100.0,Inf,0.0,0.0
Forest (Chicago),41.881832,-87.623177,Wood,2,100.0,100.0,Inf,0.0,0.0 Forest (Chicago),41.881832,-87.623177,Wood,2,100.0,100.0,Inf,-0.0,0.0
Forest (Chicago),41.881832,-87.623177,Wood,3,100.0,100.0,Inf,0.0,0.0 Forest (Chicago),41.881832,-87.623177,Wood,3,100.0,100.0,Inf,-0.0,0.0
Forest (Chicago),41.881832,-87.623177,Wood,4,100.0,100.0,Inf,0.0,0.0 Forest (Chicago),41.881832,-87.623177,Wood,4,100.0,100.0,Inf,-0.0,0.0
Forest (Chicago),41.881832,-87.623177,Wood,5,100.0,100.0,Inf,0.0,0.0 Forest (Chicago),41.881832,-87.623177,Wood,5,100.0,100.0,Inf,0.0,0.0
Forest (Phoenix),33.448376,-112.074036,Wood,1,100.0,100.0,Inf,0.0,0.0 Forest (Phoenix),33.448376,-112.074036,Wood,1,100.0,100.0,Inf,0.0,0.0
Forest (Phoenix),33.448376,-112.074036,Wood,2,100.0,100.0,Inf,0.0,0.0 Forest (Phoenix),33.448376,-112.074036,Wood,2,100.0,100.0,Inf,-0.0,0.0
Forest (Phoenix),33.448376,-112.074036,Wood,3,100.0,100.0,Inf,0.0,0.0 Forest (Phoenix),33.448376,-112.074036,Wood,3,100.0,100.0,Inf,-0.0,0.0
Forest (Phoenix),33.448376,-112.074036,Wood,4,100.0,100.0,Inf,0.0,0.0 Forest (Phoenix),33.448376,-112.074036,Wood,4,100.0,100.0,Inf,0.0,0.0
Forest (Phoenix),33.448376,-112.074036,Wood,5,100.0,100.0,Inf,0.0,0.0 Forest (Phoenix),33.448376,-112.074036,Wood,5,100.0,100.0,Inf,0.0,0.0
Forest (Dallas),32.776664,-96.796988,Wood,1,100.0,43.0,Inf,14250.0,0.0 Forest (Dallas),32.776664,-96.796988,Wood,1,100.0,43.0,Inf,14250.0,0.0
@ -33,7 +33,7 @@ Retail (Chicago),41.881832,-87.623177,UsedBoat,1,0.0,0.0,0.0,0.0,0.0
Retail (Chicago),41.881832,-87.623177,UsedBoat,2,0.0,0.0,0.0,0.0,0.0 Retail (Chicago),41.881832,-87.623177,UsedBoat,2,0.0,0.0,0.0,0.0,0.0
Retail (Chicago),41.881832,-87.623177,UsedBoat,3,0.0,0.0,0.0,0.0,0.0 Retail (Chicago),41.881832,-87.623177,UsedBoat,3,0.0,0.0,0.0,0.0,0.0
Retail (Chicago),41.881832,-87.623177,UsedBoat,4,0.0,0.0,0.0,0.0,0.0 Retail (Chicago),41.881832,-87.623177,UsedBoat,4,0.0,0.0,0.0,0.0,0.0
Retail (Chicago),41.881832,-87.623177,UsedBoat,5,0.0,0.0,0.0,0.0,0.0 Retail (Chicago),41.881832,-87.623177,UsedBoat,5,0.0,0.0,0.0,-0.0,0.0
Retail (New York City),40.712776,-74.005974,UsedBoat,1,0.0,0.0,0.0,0.0,0.0 Retail (New York City),40.712776,-74.005974,UsedBoat,1,0.0,0.0,0.0,0.0,0.0
Retail (New York City),40.712776,-74.005974,UsedBoat,2,0.0,0.0,0.0,0.0,0.0 Retail (New York City),40.712776,-74.005974,UsedBoat,2,0.0,0.0,0.0,0.0,0.0
Retail (New York City),40.712776,-74.005974,UsedBoat,3,0.0,0.0,0.0,0.0,0.0 Retail (New York City),40.712776,-74.005974,UsedBoat,3,0.0,0.0,0.0,0.0,0.0
@ -44,31 +44,31 @@ Retail (Los Angeles),34.052235,-118.243683,UsedBoat,2,0.0,0.0,0.0,0.0,0.0
Retail (Los Angeles),34.052235,-118.243683,UsedBoat,3,0.0,0.0,0.0,0.0,0.0 Retail (Los Angeles),34.052235,-118.243683,UsedBoat,3,0.0,0.0,0.0,0.0,0.0
Retail (Los Angeles),34.052235,-118.243683,UsedBoat,4,0.0,0.0,0.0,0.0,0.0 Retail (Los Angeles),34.052235,-118.243683,UsedBoat,4,0.0,0.0,0.0,0.0,0.0
Retail (Los Angeles),34.052235,-118.243683,UsedBoat,5,0.0,0.0,0.0,0.0,0.0 Retail (Los Angeles),34.052235,-118.243683,UsedBoat,5,0.0,0.0,0.0,0.0,0.0
Retail (Houston),29.760427,-95.369804,UsedBoat,1,0.0,0.0,0.0,0.0,0.0 Retail (Houston),29.760427,-95.369804,UsedBoat,1,-0.0,0.0,0.0,0.0,0.0
Retail (Houston),29.760427,-95.369804,UsedBoat,2,0.0,0.0,0.0,0.0,0.0 Retail (Houston),29.760427,-95.369804,UsedBoat,2,-0.0,0.0,0.0,-0.0,0.0
Retail (Houston),29.760427,-95.369804,UsedBoat,3,0.0,0.0,0.0,0.0,0.0 Retail (Houston),29.760427,-95.369804,UsedBoat,3,-0.0,0.0,0.0,-0.0,0.0
Retail (Houston),29.760427,-95.369804,UsedBoat,4,0.0,0.0,0.0,0.0,0.0 Retail (Houston),29.760427,-95.369804,UsedBoat,4,0.0,0.0,0.0,0.0,0.0
Retail (Houston),29.760427,-95.369804,UsedBoat,5,0.0,0.0,0.0,0.0,0.0 Retail (Houston),29.760427,-95.369804,UsedBoat,5,0.0,0.0,0.0,0.0,0.0
Retail (Phoenix),33.448376,-112.074036,UsedBoat,1,0.0,0.0,0.0,0.0,0.0 Retail (Phoenix),33.448376,-112.074036,UsedBoat,1,0.0,0.0,0.0,0.0,0.0
Retail (Phoenix),33.448376,-112.074036,UsedBoat,2,0.0,0.0,0.0,0.0,0.0 Retail (Phoenix),33.448376,-112.074036,UsedBoat,2,-0.0,0.0,0.0,-0.0,0.0
Retail (Phoenix),33.448376,-112.074036,UsedBoat,3,0.0,0.0,0.0,0.0,0.0 Retail (Phoenix),33.448376,-112.074036,UsedBoat,3,-0.0,0.0,0.0,-0.0,0.0
Retail (Phoenix),33.448376,-112.074036,UsedBoat,4,0.0,0.0,0.0,0.0,0.0 Retail (Phoenix),33.448376,-112.074036,UsedBoat,4,-0.0,0.0,0.0,-0.0,0.0
Retail (Phoenix),33.448376,-112.074036,UsedBoat,5,0.0,0.0,0.0,0.0,0.0 Retail (Phoenix),33.448376,-112.074036,UsedBoat,5,0.0,0.0,0.0,0.0,0.0
Retail (Philadelphia),39.952583,-75.165222,UsedBoat,1,0.0,0.0,0.0,0.0,0.0 Retail (Philadelphia),39.952583,-75.165222,UsedBoat,1,0.0,0.0,0.0,0.0,0.0
Retail (Philadelphia),39.952583,-75.165222,UsedBoat,2,0.0,0.0,0.0,0.0,0.0 Retail (Philadelphia),39.952583,-75.165222,UsedBoat,2,0.0,0.0,0.0,0.0,0.0
Retail (Philadelphia),39.952583,-75.165222,UsedBoat,3,0.0,0.0,0.0,0.0,0.0 Retail (Philadelphia),39.952583,-75.165222,UsedBoat,3,0.0,0.0,0.0,0.0,0.0
Retail (Philadelphia),39.952583,-75.165222,UsedBoat,4,0.0,0.0,0.0,0.0,0.0 Retail (Philadelphia),39.952583,-75.165222,UsedBoat,4,0.0,0.0,0.0,0.0,0.0
Retail (Philadelphia),39.952583,-75.165222,UsedBoat,5,0.0,0.0,0.0,0.0,0.0 Retail (Philadelphia),39.952583,-75.165222,UsedBoat,5,0.0,0.0,0.0,0.0,0.0
Retail (San Antonio),29.424122,-98.493629,UsedBoat,1,0.0,0.0,0.0,0.0,0.0 Retail (San Antonio),29.424122,-98.493629,UsedBoat,1,-0.0,0.0,0.0,-0.0,0.0
Retail (San Antonio),29.424122,-98.493629,UsedBoat,2,0.0,0.0,0.0,0.0,0.0 Retail (San Antonio),29.424122,-98.493629,UsedBoat,2,-0.0,0.0,0.0,-0.0,0.0
Retail (San Antonio),29.424122,-98.493629,UsedBoat,3,0.0,0.0,0.0,0.0,0.0 Retail (San Antonio),29.424122,-98.493629,UsedBoat,3,0.0,0.0,0.0,0.0,0.0
Retail (San Antonio),29.424122,-98.493629,UsedBoat,4,0.0,0.0,0.0,0.0,0.0 Retail (San Antonio),29.424122,-98.493629,UsedBoat,4,0.0,0.0,0.0,0.0,0.0
Retail (San Antonio),29.424122,-98.493629,UsedBoat,5,0.0,0.0,0.0,0.0,0.0 Retail (San Antonio),29.424122,-98.493629,UsedBoat,5,-0.0,0.0,0.0,-0.0,0.0
Retail (San Diego),32.715736,-117.161087,UsedBoat,1,0.0,0.0,0.0,0.0,0.0 Retail (San Diego),32.715736,-117.161087,UsedBoat,1,0.0,0.0,0.0,0.0,0.0
Retail (San Diego),32.715736,-117.161087,UsedBoat,2,0.0,0.0,0.0,0.0,0.0 Retail (San Diego),32.715736,-117.161087,UsedBoat,2,0.0,0.0,0.0,0.0,0.0
Retail (San Diego),32.715736,-117.161087,UsedBoat,3,0.0,0.0,0.0,0.0,0.0 Retail (San Diego),32.715736,-117.161087,UsedBoat,3,0.0,0.0,0.0,0.0,0.0
Retail (San Diego),32.715736,-117.161087,UsedBoat,4,0.0,0.0,0.0,0.0,0.0 Retail (San Diego),32.715736,-117.161087,UsedBoat,4,0.0,0.0,0.0,0.0,0.0
Retail (San Diego),32.715736,-117.161087,UsedBoat,5,0.0,0.0,0.0,0.0,0.0 Retail (San Diego),32.715736,-117.161087,UsedBoat,5,-0.0,0.0,0.0,-0.0,0.0
Retail (Dallas),32.776664,-96.796988,UsedBoat,1,6.31579,0.0,0.0,631.57895,0.0 Retail (Dallas),32.776664,-96.796988,UsedBoat,1,6.31579,0.0,0.0,631.57895,0.0
Retail (Dallas),32.776664,-96.796988,UsedBoat,2,22.93629,0.0,0.0,2293.62881,0.0 Retail (Dallas),32.776664,-96.796988,UsedBoat,2,22.93629,0.0,0.0,2293.62881,0.0
Retail (Dallas),32.776664,-96.796988,UsedBoat,3,31.7714,0.0,0.0,3177.13952,0.0 Retail (Dallas),32.776664,-96.796988,UsedBoat,3,31.7714,0.0,0.0,3177.13952,0.0

1 center latitude longitude output product year amount collected (tonne) amount disposed (tonne) disposal limit (tonne) collection cost ($) disposal cost ($)
2 NailFactory (Chicago) 41.881832 -87.623177 Nail 1 1.0 0.0 -0.0 Inf 1000.0 0.0 -0.0
3 NailFactory (Chicago) 41.881832 -87.623177 Nail 2 1.0 0.0 Inf 1000.0 0.0
4 NailFactory (Chicago) 41.881832 -87.623177 Nail 3 1.0 0.0 Inf 1000.0 0.0
5 NailFactory (Chicago) 41.881832 -87.623177 Nail 4 1.0 0.0 Inf 1000.0 0.0
6 NailFactory (Chicago) 41.881832 -87.623177 Nail 5 1.0 0.0 -0.0 Inf 1000.0 0.0 -0.0
7 NailFactory (Phoenix) 33.448376 -112.074036 Nail 1 1.0 0.0 Inf 1000.0 0.0
8 NailFactory (Phoenix) 33.448376 -112.074036 Nail 2 1.0 0.0 Inf 1000.0 0.0
9 NailFactory (Phoenix) 33.448376 -112.074036 Nail 3 1.0 0.0 Inf 1000.0 0.0
10 NailFactory (Phoenix) 33.448376 -112.074036 Nail 4 1.0 0.0 Inf 1000.0 0.0
11 NailFactory (Phoenix) 33.448376 -112.074036 Nail 5 1.0 0.0 -0.0 Inf 1000.0 0.0 -0.0
12 NailFactory (Dallas) 32.776664 -96.796988 Nail 1 1.0 0.0 Inf 1000.0 0.0
13 NailFactory (Dallas) 32.776664 -96.796988 Nail 2 1.0 0.0 Inf 1000.0 0.0
14 NailFactory (Dallas) 32.776664 -96.796988 Nail 3 1.0 0.0 Inf 1000.0 0.0
15 NailFactory (Dallas) 32.776664 -96.796988 Nail 4 1.0 0.0 Inf 1000.0 0.0
16 NailFactory (Dallas) 32.776664 -96.796988 Nail 5 1.0 0.0 -0.0 Inf 1000.0 0.0 -0.0
17 Forest (Chicago) 41.881832 -87.623177 Wood 1 100.0 100.0 Inf 0.0 0.0
18 Forest (Chicago) 41.881832 -87.623177 Wood 2 100.0 100.0 Inf 0.0 -0.0 0.0
19 Forest (Chicago) 41.881832 -87.623177 Wood 3 100.0 100.0 Inf 0.0 -0.0 0.0
20 Forest (Chicago) 41.881832 -87.623177 Wood 4 100.0 100.0 Inf 0.0 -0.0 0.0
21 Forest (Chicago) 41.881832 -87.623177 Wood 5 100.0 100.0 Inf 0.0 0.0
22 Forest (Phoenix) 33.448376 -112.074036 Wood 1 100.0 100.0 Inf 0.0 0.0
23 Forest (Phoenix) 33.448376 -112.074036 Wood 2 100.0 100.0 Inf 0.0 -0.0 0.0
24 Forest (Phoenix) 33.448376 -112.074036 Wood 3 100.0 100.0 Inf 0.0 -0.0 0.0
25 Forest (Phoenix) 33.448376 -112.074036 Wood 4 100.0 100.0 Inf 0.0 0.0
26 Forest (Phoenix) 33.448376 -112.074036 Wood 5 100.0 100.0 Inf 0.0 0.0
27 Forest (Dallas) 32.776664 -96.796988 Wood 1 100.0 43.0 Inf 14250.0 0.0
33 Retail (Chicago) 41.881832 -87.623177 UsedBoat 2 0.0 0.0 0.0 0.0 0.0
34 Retail (Chicago) 41.881832 -87.623177 UsedBoat 3 0.0 0.0 0.0 0.0 0.0
35 Retail (Chicago) 41.881832 -87.623177 UsedBoat 4 0.0 0.0 0.0 0.0 0.0
36 Retail (Chicago) 41.881832 -87.623177 UsedBoat 5 0.0 0.0 0.0 0.0 -0.0 0.0
37 Retail (New York City) 40.712776 -74.005974 UsedBoat 1 0.0 0.0 0.0 0.0 0.0
38 Retail (New York City) 40.712776 -74.005974 UsedBoat 2 0.0 0.0 0.0 0.0 0.0
39 Retail (New York City) 40.712776 -74.005974 UsedBoat 3 0.0 0.0 0.0 0.0 0.0
44 Retail (Los Angeles) 34.052235 -118.243683 UsedBoat 3 0.0 0.0 0.0 0.0 0.0
45 Retail (Los Angeles) 34.052235 -118.243683 UsedBoat 4 0.0 0.0 0.0 0.0 0.0
46 Retail (Los Angeles) 34.052235 -118.243683 UsedBoat 5 0.0 0.0 0.0 0.0 0.0
47 Retail (Houston) 29.760427 -95.369804 UsedBoat 1 0.0 -0.0 0.0 0.0 0.0 0.0
48 Retail (Houston) 29.760427 -95.369804 UsedBoat 2 0.0 -0.0 0.0 0.0 0.0 -0.0 0.0
49 Retail (Houston) 29.760427 -95.369804 UsedBoat 3 0.0 -0.0 0.0 0.0 0.0 -0.0 0.0
50 Retail (Houston) 29.760427 -95.369804 UsedBoat 4 0.0 0.0 0.0 0.0 0.0
51 Retail (Houston) 29.760427 -95.369804 UsedBoat 5 0.0 0.0 0.0 0.0 0.0
52 Retail (Phoenix) 33.448376 -112.074036 UsedBoat 1 0.0 0.0 0.0 0.0 0.0
53 Retail (Phoenix) 33.448376 -112.074036 UsedBoat 2 0.0 -0.0 0.0 0.0 0.0 -0.0 0.0
54 Retail (Phoenix) 33.448376 -112.074036 UsedBoat 3 0.0 -0.0 0.0 0.0 0.0 -0.0 0.0
55 Retail (Phoenix) 33.448376 -112.074036 UsedBoat 4 0.0 -0.0 0.0 0.0 0.0 -0.0 0.0
56 Retail (Phoenix) 33.448376 -112.074036 UsedBoat 5 0.0 0.0 0.0 0.0 0.0
57 Retail (Philadelphia) 39.952583 -75.165222 UsedBoat 1 0.0 0.0 0.0 0.0 0.0
58 Retail (Philadelphia) 39.952583 -75.165222 UsedBoat 2 0.0 0.0 0.0 0.0 0.0
59 Retail (Philadelphia) 39.952583 -75.165222 UsedBoat 3 0.0 0.0 0.0 0.0 0.0
60 Retail (Philadelphia) 39.952583 -75.165222 UsedBoat 4 0.0 0.0 0.0 0.0 0.0
61 Retail (Philadelphia) 39.952583 -75.165222 UsedBoat 5 0.0 0.0 0.0 0.0 0.0
62 Retail (San Antonio) 29.424122 -98.493629 UsedBoat 1 0.0 -0.0 0.0 0.0 0.0 -0.0 0.0
63 Retail (San Antonio) 29.424122 -98.493629 UsedBoat 2 0.0 -0.0 0.0 0.0 0.0 -0.0 0.0
64 Retail (San Antonio) 29.424122 -98.493629 UsedBoat 3 0.0 0.0 0.0 0.0 0.0
65 Retail (San Antonio) 29.424122 -98.493629 UsedBoat 4 0.0 0.0 0.0 0.0 0.0
66 Retail (San Antonio) 29.424122 -98.493629 UsedBoat 5 0.0 -0.0 0.0 0.0 0.0 -0.0 0.0
67 Retail (San Diego) 32.715736 -117.161087 UsedBoat 1 0.0 0.0 0.0 0.0 0.0
68 Retail (San Diego) 32.715736 -117.161087 UsedBoat 2 0.0 0.0 0.0 0.0 0.0
69 Retail (San Diego) 32.715736 -117.161087 UsedBoat 3 0.0 0.0 0.0 0.0 0.0
70 Retail (San Diego) 32.715736 -117.161087 UsedBoat 4 0.0 0.0 0.0 0.0 0.0
71 Retail (San Diego) 32.715736 -117.161087 UsedBoat 5 0.0 -0.0 0.0 0.0 0.0 -0.0 0.0
72 Retail (Dallas) 32.776664 -96.796988 UsedBoat 1 6.31579 0.0 0.0 631.57895 0.0
73 Retail (Dallas) 32.776664 -96.796988 UsedBoat 2 22.93629 0.0 0.0 2293.62881 0.0
74 Retail (Dallas) 32.776664 -96.796988 UsedBoat 3 31.7714 0.0 0.0 3177.13952 0.0

@ -29,53 +29,53 @@ Forest (Dallas),32.776664,-96.796988,2,,0.0,0.0,0.0
Forest (Dallas),32.776664,-96.796988,3,,0.0,0.0,0.0 Forest (Dallas),32.776664,-96.796988,3,,0.0,0.0,0.0
Forest (Dallas),32.776664,-96.796988,4,,0.0,0.0,0.0 Forest (Dallas),32.776664,-96.796988,4,,0.0,0.0,0.0
Forest (Dallas),32.776664,-96.796988,5,,0.0,0.0,0.0 Forest (Dallas),32.776664,-96.796988,5,,0.0,0.0,0.0
Retail (Chicago),41.881832,-87.623177,1,NewBoat,0.0,0.0,125000.0 Retail (Chicago),41.881832,-87.623177,1,NewBoat,-0.0,0.0,125000.0
Retail (Chicago),41.881832,-87.623177,2,NewBoat,0.0,0.0,125000.0 Retail (Chicago),41.881832,-87.623177,2,NewBoat,-0.0,0.0,125000.0
Retail (Chicago),41.881832,-87.623177,3,NewBoat,0.0,0.0,125000.0 Retail (Chicago),41.881832,-87.623177,3,NewBoat,0.0,0.0,125000.0
Retail (Chicago),41.881832,-87.623177,4,NewBoat,0.0,0.0,125000.0 Retail (Chicago),41.881832,-87.623177,4,NewBoat,0.0,0.0,125000.0
Retail (Chicago),41.881832,-87.623177,5,NewBoat,0.0,0.0,125000.0 Retail (Chicago),41.881832,-87.623177,5,NewBoat,0.0,0.0,125000.0
Retail (New York City),40.712776,-74.005974,1,NewBoat,0.0,0.0,125000.0 Retail (New York City),40.712776,-74.005974,1,NewBoat,-0.0,0.0,125000.0
Retail (New York City),40.712776,-74.005974,2,NewBoat,0.0,0.0,125000.0 Retail (New York City),40.712776,-74.005974,2,NewBoat,-0.0,0.0,125000.0
Retail (New York City),40.712776,-74.005974,3,NewBoat,0.0,0.0,125000.0 Retail (New York City),40.712776,-74.005974,3,NewBoat,-0.0,0.0,125000.0
Retail (New York City),40.712776,-74.005974,4,NewBoat,0.0,0.0,125000.0 Retail (New York City),40.712776,-74.005974,4,NewBoat,0.0,0.0,125000.0
Retail (New York City),40.712776,-74.005974,5,NewBoat,0.0,0.0,125000.0 Retail (New York City),40.712776,-74.005974,5,NewBoat,0.0,0.0,125000.0
Retail (Los Angeles),34.052235,-118.243683,1,NewBoat,0.0,0.0,125000.0 Retail (Los Angeles),34.052235,-118.243683,1,NewBoat,-0.0,0.0,125000.0
Retail (Los Angeles),34.052235,-118.243683,2,NewBoat,0.0,0.0,125000.0 Retail (Los Angeles),34.052235,-118.243683,2,NewBoat,-0.0,0.0,125000.0
Retail (Los Angeles),34.052235,-118.243683,3,NewBoat,0.0,0.0,125000.0 Retail (Los Angeles),34.052235,-118.243683,3,NewBoat,-0.0,0.0,125000.0
Retail (Los Angeles),34.052235,-118.243683,4,NewBoat,0.0,0.0,125000.0 Retail (Los Angeles),34.052235,-118.243683,4,NewBoat,0.0,0.0,125000.0
Retail (Los Angeles),34.052235,-118.243683,5,NewBoat,0.0,0.0,125000.0 Retail (Los Angeles),34.052235,-118.243683,5,NewBoat,0.0,0.0,125000.0
Retail (Houston),29.760427,-95.369804,1,NewBoat,0.0,0.0,125000.0 Retail (Houston),29.760427,-95.369804,1,NewBoat,-0.0,-0.0,125000.0
Retail (Houston),29.760427,-95.369804,2,NewBoat,0.0,0.0,125000.0 Retail (Houston),29.760427,-95.369804,2,NewBoat,-0.0,0.0,125000.0
Retail (Houston),29.760427,-95.369804,3,NewBoat,0.0,0.0,125000.0 Retail (Houston),29.760427,-95.369804,3,NewBoat,-0.0,0.0,125000.0
Retail (Houston),29.760427,-95.369804,4,NewBoat,0.0,0.0,125000.0 Retail (Houston),29.760427,-95.369804,4,NewBoat,0.0,0.0,125000.0
Retail (Houston),29.760427,-95.369804,5,NewBoat,0.0,0.0,125000.0 Retail (Houston),29.760427,-95.369804,5,NewBoat,0.0,0.0,125000.0
Retail (Phoenix),33.448376,-112.074036,1,NewBoat,0.0,0.0,125000.0 Retail (Phoenix),33.448376,-112.074036,1,NewBoat,-0.0,0.0,125000.0
Retail (Phoenix),33.448376,-112.074036,2,NewBoat,0.0,0.0,125000.0 Retail (Phoenix),33.448376,-112.074036,2,NewBoat,-0.0,-0.0,125000.0
Retail (Phoenix),33.448376,-112.074036,3,NewBoat,0.0,0.0,125000.0 Retail (Phoenix),33.448376,-112.074036,3,NewBoat,-0.0,0.0,125000.0
Retail (Phoenix),33.448376,-112.074036,4,NewBoat,0.0,0.0,125000.0 Retail (Phoenix),33.448376,-112.074036,4,NewBoat,0.0,0.0,125000.0
Retail (Phoenix),33.448376,-112.074036,5,NewBoat,0.0,0.0,125000.0 Retail (Phoenix),33.448376,-112.074036,5,NewBoat,0.0,0.0,125000.0
Retail (Philadelphia),39.952583,-75.165222,1,NewBoat,0.0,0.0,125000.0 Retail (Philadelphia),39.952583,-75.165222,1,NewBoat,-0.0,0.0,125000.0
Retail (Philadelphia),39.952583,-75.165222,2,NewBoat,0.0,0.0,125000.0 Retail (Philadelphia),39.952583,-75.165222,2,NewBoat,-0.0,0.0,125000.0
Retail (Philadelphia),39.952583,-75.165222,3,NewBoat,0.0,0.0,125000.0 Retail (Philadelphia),39.952583,-75.165222,3,NewBoat,-0.0,0.0,125000.0
Retail (Philadelphia),39.952583,-75.165222,4,NewBoat,0.0,0.0,125000.0 Retail (Philadelphia),39.952583,-75.165222,4,NewBoat,0.0,0.0,125000.0
Retail (Philadelphia),39.952583,-75.165222,5,NewBoat,0.0,0.0,125000.0 Retail (Philadelphia),39.952583,-75.165222,5,NewBoat,0.0,0.0,125000.0
Retail (San Antonio),29.424122,-98.493629,1,NewBoat,0.0,0.0,125000.0 Retail (San Antonio),29.424122,-98.493629,1,NewBoat,-0.0,-0.0,125000.0
Retail (San Antonio),29.424122,-98.493629,2,NewBoat,0.0,0.0,125000.0 Retail (San Antonio),29.424122,-98.493629,2,NewBoat,-0.0,0.0,125000.0
Retail (San Antonio),29.424122,-98.493629,3,NewBoat,0.0,0.0,125000.0 Retail (San Antonio),29.424122,-98.493629,3,NewBoat,0.0,0.0,125000.0
Retail (San Antonio),29.424122,-98.493629,4,NewBoat,0.0,0.0,125000.0 Retail (San Antonio),29.424122,-98.493629,4,NewBoat,0.0,0.0,125000.0
Retail (San Antonio),29.424122,-98.493629,5,NewBoat,0.0,0.0,125000.0 Retail (San Antonio),29.424122,-98.493629,5,NewBoat,-0.0,0.0,125000.0
Retail (San Diego),32.715736,-117.161087,1,NewBoat,0.0,0.0,125000.0 Retail (San Diego),32.715736,-117.161087,1,NewBoat,-0.0,0.0,125000.0
Retail (San Diego),32.715736,-117.161087,2,NewBoat,0.0,0.0,125000.0 Retail (San Diego),32.715736,-117.161087,2,NewBoat,-0.0,0.0,125000.0
Retail (San Diego),32.715736,-117.161087,3,NewBoat,0.0,0.0,125000.0 Retail (San Diego),32.715736,-117.161087,3,NewBoat,-0.0,0.0,125000.0
Retail (San Diego),32.715736,-117.161087,4,NewBoat,0.0,0.0,125000.0 Retail (San Diego),32.715736,-117.161087,4,NewBoat,0.0,0.0,125000.0
Retail (San Diego),32.715736,-117.161087,5,NewBoat,0.0,0.0,125000.0 Retail (San Diego),32.715736,-117.161087,5,NewBoat,-0.0,0.0,125000.0
Retail (Dallas),32.776664,-96.796988,1,NewBoat,63.15789,757894.73684,125000.0 Retail (Dallas),32.776664,-96.796988,1,NewBoat,63.15789,757894.73684,125000.0
Retail (Dallas),32.776664,-96.796988,2,NewBoat,71.46814,857617.72853,125000.0 Retail (Dallas),32.776664,-96.796988,2,NewBoat,71.46814,857617.72853,125000.0
Retail (Dallas),32.776664,-96.796988,3,NewBoat,75.8857,910628.37148,125000.0 Retail (Dallas),32.776664,-96.796988,3,NewBoat,75.8857,910628.37148,125000.0
Retail (Dallas),32.776664,-96.796988,4,NewBoat,76.90434,922852.03459,125000.0 Retail (Dallas),32.776664,-96.796988,4,NewBoat,76.90434,922852.03459,125000.0
Retail (Dallas),32.776664,-96.796988,5,NewBoat,77.27087,927250.44516,125000.0 Retail (Dallas),32.776664,-96.796988,5,NewBoat,77.27087,927250.44516,125000.0
Retail (San Jose),37.338208,-121.886329,1,NewBoat,0.0,0.0,125000.0 Retail (San Jose),37.338208,-121.886329,1,NewBoat,-0.0,0.0,125000.0
Retail (San Jose),37.338208,-121.886329,2,NewBoat,0.0,0.0,125000.0 Retail (San Jose),37.338208,-121.886329,2,NewBoat,-0.0,0.0,125000.0
Retail (San Jose),37.338208,-121.886329,3,NewBoat,0.0,0.0,125000.0 Retail (San Jose),37.338208,-121.886329,3,NewBoat,-0.0,0.0,125000.0
Retail (San Jose),37.338208,-121.886329,4,NewBoat,0.0,0.0,125000.0 Retail (San Jose),37.338208,-121.886329,4,NewBoat,0.0,0.0,125000.0
Retail (San Jose),37.338208,-121.886329,5,NewBoat,0.0,0.0,125000.0 Retail (San Jose),37.338208,-121.886329,5,NewBoat,0.0,0.0,125000.0

1 center latitude longitude year input product input amount (tonne) revenue ($) operating cost ($)
29 Forest (Dallas) 32.776664 -96.796988 3 0.0 0.0 0.0
30 Forest (Dallas) 32.776664 -96.796988 4 0.0 0.0 0.0
31 Forest (Dallas) 32.776664 -96.796988 5 0.0 0.0 0.0
32 Retail (Chicago) 41.881832 -87.623177 1 NewBoat 0.0 -0.0 0.0 125000.0
33 Retail (Chicago) 41.881832 -87.623177 2 NewBoat 0.0 -0.0 0.0 125000.0
34 Retail (Chicago) 41.881832 -87.623177 3 NewBoat 0.0 0.0 125000.0
35 Retail (Chicago) 41.881832 -87.623177 4 NewBoat 0.0 0.0 125000.0
36 Retail (Chicago) 41.881832 -87.623177 5 NewBoat 0.0 0.0 125000.0
37 Retail (New York City) 40.712776 -74.005974 1 NewBoat 0.0 -0.0 0.0 125000.0
38 Retail (New York City) 40.712776 -74.005974 2 NewBoat 0.0 -0.0 0.0 125000.0
39 Retail (New York City) 40.712776 -74.005974 3 NewBoat 0.0 -0.0 0.0 125000.0
40 Retail (New York City) 40.712776 -74.005974 4 NewBoat 0.0 0.0 125000.0
41 Retail (New York City) 40.712776 -74.005974 5 NewBoat 0.0 0.0 125000.0
42 Retail (Los Angeles) 34.052235 -118.243683 1 NewBoat 0.0 -0.0 0.0 125000.0
43 Retail (Los Angeles) 34.052235 -118.243683 2 NewBoat 0.0 -0.0 0.0 125000.0
44 Retail (Los Angeles) 34.052235 -118.243683 3 NewBoat 0.0 -0.0 0.0 125000.0
45 Retail (Los Angeles) 34.052235 -118.243683 4 NewBoat 0.0 0.0 125000.0
46 Retail (Los Angeles) 34.052235 -118.243683 5 NewBoat 0.0 0.0 125000.0
47 Retail (Houston) 29.760427 -95.369804 1 NewBoat 0.0 -0.0 0.0 -0.0 125000.0
48 Retail (Houston) 29.760427 -95.369804 2 NewBoat 0.0 -0.0 0.0 125000.0
49 Retail (Houston) 29.760427 -95.369804 3 NewBoat 0.0 -0.0 0.0 125000.0
50 Retail (Houston) 29.760427 -95.369804 4 NewBoat 0.0 0.0 125000.0
51 Retail (Houston) 29.760427 -95.369804 5 NewBoat 0.0 0.0 125000.0
52 Retail (Phoenix) 33.448376 -112.074036 1 NewBoat 0.0 -0.0 0.0 125000.0
53 Retail (Phoenix) 33.448376 -112.074036 2 NewBoat 0.0 -0.0 0.0 -0.0 125000.0
54 Retail (Phoenix) 33.448376 -112.074036 3 NewBoat 0.0 -0.0 0.0 125000.0
55 Retail (Phoenix) 33.448376 -112.074036 4 NewBoat 0.0 0.0 125000.0
56 Retail (Phoenix) 33.448376 -112.074036 5 NewBoat 0.0 0.0 125000.0
57 Retail (Philadelphia) 39.952583 -75.165222 1 NewBoat 0.0 -0.0 0.0 125000.0
58 Retail (Philadelphia) 39.952583 -75.165222 2 NewBoat 0.0 -0.0 0.0 125000.0
59 Retail (Philadelphia) 39.952583 -75.165222 3 NewBoat 0.0 -0.0 0.0 125000.0
60 Retail (Philadelphia) 39.952583 -75.165222 4 NewBoat 0.0 0.0 125000.0
61 Retail (Philadelphia) 39.952583 -75.165222 5 NewBoat 0.0 0.0 125000.0
62 Retail (San Antonio) 29.424122 -98.493629 1 NewBoat 0.0 -0.0 0.0 -0.0 125000.0
63 Retail (San Antonio) 29.424122 -98.493629 2 NewBoat 0.0 -0.0 0.0 125000.0
64 Retail (San Antonio) 29.424122 -98.493629 3 NewBoat 0.0 0.0 125000.0
65 Retail (San Antonio) 29.424122 -98.493629 4 NewBoat 0.0 0.0 125000.0
66 Retail (San Antonio) 29.424122 -98.493629 5 NewBoat 0.0 -0.0 0.0 125000.0
67 Retail (San Diego) 32.715736 -117.161087 1 NewBoat 0.0 -0.0 0.0 125000.0
68 Retail (San Diego) 32.715736 -117.161087 2 NewBoat 0.0 -0.0 0.0 125000.0
69 Retail (San Diego) 32.715736 -117.161087 3 NewBoat 0.0 -0.0 0.0 125000.0
70 Retail (San Diego) 32.715736 -117.161087 4 NewBoat 0.0 0.0 125000.0
71 Retail (San Diego) 32.715736 -117.161087 5 NewBoat 0.0 -0.0 0.0 125000.0
72 Retail (Dallas) 32.776664 -96.796988 1 NewBoat 63.15789 757894.73684 125000.0
73 Retail (Dallas) 32.776664 -96.796988 2 NewBoat 71.46814 857617.72853 125000.0
74 Retail (Dallas) 32.776664 -96.796988 3 NewBoat 75.8857 910628.37148 125000.0
75 Retail (Dallas) 32.776664 -96.796988 4 NewBoat 76.90434 922852.03459 125000.0
76 Retail (Dallas) 32.776664 -96.796988 5 NewBoat 77.27087 927250.44516 125000.0
77 Retail (San Jose) 37.338208 -121.886329 1 NewBoat 0.0 -0.0 0.0 125000.0
78 Retail (San Jose) 37.338208 -121.886329 2 NewBoat 0.0 -0.0 0.0 125000.0
79 Retail (San Jose) 37.338208 -121.886329 3 NewBoat 0.0 -0.0 0.0 125000.0
80 Retail (San Jose) 37.338208 -121.886329 4 NewBoat 0.0 0.0 125000.0
81 Retail (San Jose) 37.338208 -121.886329 5 NewBoat 0.0 0.0 125000.0

@ -1,4 +1,4 @@
plant,latitude,longitude,emission,year,processed amount (tonne),emission factor (tonne/tonne),emissions amount (tonne) plant,latitude,longitude,emission,year,input amount (tonne),emission factor (tonne/tonne),emissions amount (tonne)
BoatFactory (Dallas),32.776664,-96.796988,CO2,1,63.15789,5.0,315.78947 BoatFactory (Dallas),32.776664,-96.796988,CO2,1,63.15789,5.0,315.78947
BoatFactory (Dallas),32.776664,-96.796988,CO2,2,71.46814,5.0,357.34072 BoatFactory (Dallas),32.776664,-96.796988,CO2,2,71.46814,5.0,357.34072
BoatFactory (Dallas),32.776664,-96.796988,CO2,3,75.8857,5.0,379.42849 BoatFactory (Dallas),32.776664,-96.796988,CO2,3,75.8857,5.0,379.42849

1 plant latitude longitude emission year processed amount (tonne) input amount (tonne) emission factor (tonne/tonne) emissions amount (tonne)
2 BoatFactory (Dallas) 32.776664 -96.796988 CO2 1 63.15789 5.0 315.78947
3 BoatFactory (Dallas) 32.776664 -96.796988 CO2 2 71.46814 5.0 357.34072
4 BoatFactory (Dallas) 32.776664 -96.796988 CO2 3 75.8857 5.0 379.42849

@ -1,151 +0,0 @@
plant,latitude,longitude,input product,year,amount received (tonne),current storage level (tonne),storage limit (tonne),storage cost ($)
BoatFactory (Chicago),41.881832,-87.623177,Wood,1,0.0,0.0,5.0,0.0
BoatFactory (Chicago),41.881832,-87.623177,Wood,2,0.0,0.0,5.0,0.0
BoatFactory (Chicago),41.881832,-87.623177,Wood,3,0.0,0.0,5.0,0.0
BoatFactory (Chicago),41.881832,-87.623177,Wood,4,0.0,0.0,5.0,0.0
BoatFactory (Chicago),41.881832,-87.623177,Wood,5,0.0,0.0,5.0,0.0
BoatFactory (Chicago),41.881832,-87.623177,Nail,1,0.0,0.0,1.0,0.0
BoatFactory (Chicago),41.881832,-87.623177,Nail,2,0.0,0.0,1.0,0.0
BoatFactory (Chicago),41.881832,-87.623177,Nail,3,0.0,0.0,1.0,0.0
BoatFactory (Chicago),41.881832,-87.623177,Nail,4,0.0,0.0,1.0,0.0
BoatFactory (Chicago),41.881832,-87.623177,Nail,5,0.0,0.0,1.0,0.0
BoatFactory (New York City),40.712776,-74.005974,Wood,1,0.0,0.0,5.0,0.0
BoatFactory (New York City),40.712776,-74.005974,Wood,2,0.0,0.0,5.0,0.0
BoatFactory (New York City),40.712776,-74.005974,Wood,3,0.0,0.0,5.0,0.0
BoatFactory (New York City),40.712776,-74.005974,Wood,4,0.0,0.0,5.0,0.0
BoatFactory (New York City),40.712776,-74.005974,Wood,5,0.0,0.0,5.0,0.0
BoatFactory (New York City),40.712776,-74.005974,Nail,1,0.0,0.0,1.0,0.0
BoatFactory (New York City),40.712776,-74.005974,Nail,2,0.0,0.0,1.0,0.0
BoatFactory (New York City),40.712776,-74.005974,Nail,3,0.0,0.0,1.0,0.0
BoatFactory (New York City),40.712776,-74.005974,Nail,4,0.0,0.0,1.0,0.0
BoatFactory (New York City),40.712776,-74.005974,Nail,5,0.0,0.0,1.0,0.0
BoatFactory (Los Angeles),34.052235,-118.243683,Wood,1,0.0,0.0,5.0,0.0
BoatFactory (Los Angeles),34.052235,-118.243683,Wood,2,0.0,0.0,5.0,0.0
BoatFactory (Los Angeles),34.052235,-118.243683,Wood,3,0.0,0.0,5.0,0.0
BoatFactory (Los Angeles),34.052235,-118.243683,Wood,4,0.0,0.0,5.0,0.0
BoatFactory (Los Angeles),34.052235,-118.243683,Wood,5,0.0,0.0,5.0,0.0
BoatFactory (Los Angeles),34.052235,-118.243683,Nail,1,0.0,0.0,1.0,0.0
BoatFactory (Los Angeles),34.052235,-118.243683,Nail,2,0.0,0.0,1.0,0.0
BoatFactory (Los Angeles),34.052235,-118.243683,Nail,3,0.0,0.0,1.0,0.0
BoatFactory (Los Angeles),34.052235,-118.243683,Nail,4,0.0,0.0,1.0,0.0
BoatFactory (Los Angeles),34.052235,-118.243683,Nail,5,0.0,0.0,1.0,0.0
BoatFactory (Houston),29.760427,-95.369804,Wood,1,0.0,0.0,5.0,0.0
BoatFactory (Houston),29.760427,-95.369804,Wood,2,0.0,0.0,5.0,0.0
BoatFactory (Houston),29.760427,-95.369804,Wood,3,0.0,0.0,5.0,0.0
BoatFactory (Houston),29.760427,-95.369804,Wood,4,0.0,0.0,5.0,0.0
BoatFactory (Houston),29.760427,-95.369804,Wood,5,0.0,0.0,5.0,0.0
BoatFactory (Houston),29.760427,-95.369804,Nail,1,0.0,0.0,1.0,0.0
BoatFactory (Houston),29.760427,-95.369804,Nail,2,0.0,0.0,1.0,0.0
BoatFactory (Houston),29.760427,-95.369804,Nail,3,0.0,0.0,1.0,0.0
BoatFactory (Houston),29.760427,-95.369804,Nail,4,0.0,0.0,1.0,0.0
BoatFactory (Houston),29.760427,-95.369804,Nail,5,0.0,0.0,1.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,Wood,1,0.0,0.0,5.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,Wood,2,0.0,0.0,5.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,Wood,3,0.0,0.0,5.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,Wood,4,0.0,0.0,5.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,Wood,5,0.0,0.0,5.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,Nail,1,0.0,0.0,1.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,Nail,2,0.0,0.0,1.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,Nail,3,0.0,0.0,1.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,Nail,4,0.0,0.0,1.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,Nail,5,0.0,0.0,1.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,Wood,1,0.0,0.0,5.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,Wood,2,0.0,0.0,5.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,Wood,3,0.0,0.0,5.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,Wood,4,0.0,0.0,5.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,Wood,5,0.0,0.0,5.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,Nail,1,0.0,0.0,1.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,Nail,2,0.0,0.0,1.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,Nail,3,0.0,0.0,1.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,Nail,4,0.0,0.0,1.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,Nail,5,0.0,0.0,1.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,Wood,1,0.0,0.0,5.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,Wood,2,0.0,0.0,5.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,Wood,3,0.0,0.0,5.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,Wood,4,0.0,0.0,5.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,Wood,5,0.0,0.0,5.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,Nail,1,0.0,0.0,1.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,Nail,2,0.0,0.0,1.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,Nail,3,0.0,0.0,1.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,Nail,4,0.0,0.0,1.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,Nail,5,0.0,0.0,1.0,0.0
BoatFactory (San Diego),32.715736,-117.161087,Wood,1,0.0,0.0,5.0,0.0
BoatFactory (San Diego),32.715736,-117.161087,Wood,2,0.0,0.0,5.0,0.0
BoatFactory (San Diego),32.715736,-117.161087,Wood,3,0.0,0.0,5.0,0.0
BoatFactory (San Diego),32.715736,-117.161087,Wood,4,0.0,0.0,5.0,0.0
BoatFactory (San Diego),32.715736,-117.161087,Wood,5,0.0,0.0,5.0,0.0
BoatFactory (San Diego),32.715736,-117.161087,Nail,1,0.0,0.0,1.0,0.0
BoatFactory (San Diego),32.715736,-117.161087,Nail,2,0.0,0.0,1.0,0.0
BoatFactory (San Diego),32.715736,-117.161087,Nail,3,0.0,0.0,1.0,0.0
BoatFactory (San Diego),32.715736,-117.161087,Nail,4,0.0,0.0,1.0,0.0
BoatFactory (San Diego),32.715736,-117.161087,Nail,5,0.0,0.0,1.0,0.0
BoatFactory (Dallas),32.776664,-96.796988,Wood,1,60.0,0.0,5.0,0.0
BoatFactory (Dallas),32.776664,-96.796988,Wood,2,67.89474,0.0,5.0,0.0
BoatFactory (Dallas),32.776664,-96.796988,Wood,3,72.09141,0.0,5.0,0.0
BoatFactory (Dallas),32.776664,-96.796988,Wood,4,73.05912,0.0,5.0,0.0
BoatFactory (Dallas),32.776664,-96.796988,Wood,5,73.40733,0.0,5.0,0.0
BoatFactory (Dallas),32.776664,-96.796988,Nail,1,3.15789,0.0,1.0,0.0
BoatFactory (Dallas),32.776664,-96.796988,Nail,2,3.57341,0.0,1.0,0.0
BoatFactory (Dallas),32.776664,-96.796988,Nail,3,3.79428,0.0,1.0,0.0
BoatFactory (Dallas),32.776664,-96.796988,Nail,4,3.84522,0.0,1.0,0.0
BoatFactory (Dallas),32.776664,-96.796988,Nail,5,3.86354,0.0,1.0,0.0
BoatFactory (San Jose),37.338208,-121.886329,Wood,1,0.0,0.0,5.0,0.0
BoatFactory (San Jose),37.338208,-121.886329,Wood,2,0.0,0.0,5.0,0.0
BoatFactory (San Jose),37.338208,-121.886329,Wood,3,0.0,0.0,5.0,0.0
BoatFactory (San Jose),37.338208,-121.886329,Wood,4,0.0,0.0,5.0,0.0
BoatFactory (San Jose),37.338208,-121.886329,Wood,5,0.0,0.0,5.0,0.0
BoatFactory (San Jose),37.338208,-121.886329,Nail,1,0.0,0.0,1.0,0.0
BoatFactory (San Jose),37.338208,-121.886329,Nail,2,0.0,0.0,1.0,0.0
BoatFactory (San Jose),37.338208,-121.886329,Nail,3,0.0,0.0,1.0,0.0
BoatFactory (San Jose),37.338208,-121.886329,Nail,4,0.0,0.0,1.0,0.0
BoatFactory (San Jose),37.338208,-121.886329,Nail,5,0.0,0.0,1.0,0.0
RecyclingPlant (Chicago),41.881832,-87.623177,UsedBoat,1,0.0,0.0,0.0,0.0
RecyclingPlant (Chicago),41.881832,-87.623177,UsedBoat,2,0.0,0.0,0.0,0.0
RecyclingPlant (Chicago),41.881832,-87.623177,UsedBoat,3,0.0,0.0,0.0,0.0
RecyclingPlant (Chicago),41.881832,-87.623177,UsedBoat,4,0.0,0.0,0.0,0.0
RecyclingPlant (Chicago),41.881832,-87.623177,UsedBoat,5,0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,UsedBoat,1,0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,UsedBoat,2,0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,UsedBoat,3,0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,UsedBoat,4,0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,UsedBoat,5,0.0,0.0,0.0,0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,UsedBoat,1,0.0,0.0,0.0,0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,UsedBoat,2,0.0,0.0,0.0,0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,UsedBoat,3,0.0,0.0,0.0,0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,UsedBoat,4,0.0,0.0,0.0,0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,UsedBoat,5,0.0,0.0,0.0,0.0
RecyclingPlant (Houston),29.760427,-95.369804,UsedBoat,1,0.0,0.0,0.0,0.0
RecyclingPlant (Houston),29.760427,-95.369804,UsedBoat,2,0.0,0.0,0.0,0.0
RecyclingPlant (Houston),29.760427,-95.369804,UsedBoat,3,0.0,0.0,0.0,0.0
RecyclingPlant (Houston),29.760427,-95.369804,UsedBoat,4,0.0,0.0,0.0,0.0
RecyclingPlant (Houston),29.760427,-95.369804,UsedBoat,5,0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,UsedBoat,1,0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,UsedBoat,2,0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,UsedBoat,3,0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,UsedBoat,4,0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,UsedBoat,5,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,UsedBoat,1,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,UsedBoat,2,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,UsedBoat,3,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,UsedBoat,4,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,UsedBoat,5,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,UsedBoat,1,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,UsedBoat,2,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,UsedBoat,3,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,UsedBoat,4,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,UsedBoat,5,0.0,0.0,0.0,0.0
RecyclingPlant (San Diego),32.715736,-117.161087,UsedBoat,1,0.0,0.0,0.0,0.0
RecyclingPlant (San Diego),32.715736,-117.161087,UsedBoat,2,0.0,0.0,0.0,0.0
RecyclingPlant (San Diego),32.715736,-117.161087,UsedBoat,3,0.0,0.0,0.0,0.0
RecyclingPlant (San Diego),32.715736,-117.161087,UsedBoat,4,0.0,0.0,0.0,0.0
RecyclingPlant (San Diego),32.715736,-117.161087,UsedBoat,5,0.0,0.0,0.0,0.0
RecyclingPlant (Dallas),32.776664,-96.796988,UsedBoat,1,6.31579,0.0,0.0,0.0
RecyclingPlant (Dallas),32.776664,-96.796988,UsedBoat,2,22.93629,0.0,0.0,0.0
RecyclingPlant (Dallas),32.776664,-96.796988,UsedBoat,3,31.7714,0.0,0.0,0.0
RecyclingPlant (Dallas),32.776664,-96.796988,UsedBoat,4,33.80867,0.0,0.0,0.0
RecyclingPlant (Dallas),32.776664,-96.796988,UsedBoat,5,34.54174,0.0,0.0,0.0
RecyclingPlant (San Jose),37.338208,-121.886329,UsedBoat,1,0.0,0.0,0.0,0.0
RecyclingPlant (San Jose),37.338208,-121.886329,UsedBoat,2,0.0,0.0,0.0,0.0
RecyclingPlant (San Jose),37.338208,-121.886329,UsedBoat,3,0.0,0.0,0.0,0.0
RecyclingPlant (San Jose),37.338208,-121.886329,UsedBoat,4,0.0,0.0,0.0,0.0
RecyclingPlant (San Jose),37.338208,-121.886329,UsedBoat,5,0.0,0.0,0.0,0.0
1 plant latitude longitude input product year amount received (tonne) current storage level (tonne) storage limit (tonne) storage cost ($)
2 BoatFactory (Chicago) 41.881832 -87.623177 Wood 1 0.0 0.0 5.0 0.0
3 BoatFactory (Chicago) 41.881832 -87.623177 Wood 2 0.0 0.0 5.0 0.0
4 BoatFactory (Chicago) 41.881832 -87.623177 Wood 3 0.0 0.0 5.0 0.0
5 BoatFactory (Chicago) 41.881832 -87.623177 Wood 4 0.0 0.0 5.0 0.0
6 BoatFactory (Chicago) 41.881832 -87.623177 Wood 5 0.0 0.0 5.0 0.0
7 BoatFactory (Chicago) 41.881832 -87.623177 Nail 1 0.0 0.0 1.0 0.0
8 BoatFactory (Chicago) 41.881832 -87.623177 Nail 2 0.0 0.0 1.0 0.0
9 BoatFactory (Chicago) 41.881832 -87.623177 Nail 3 0.0 0.0 1.0 0.0
10 BoatFactory (Chicago) 41.881832 -87.623177 Nail 4 0.0 0.0 1.0 0.0
11 BoatFactory (Chicago) 41.881832 -87.623177 Nail 5 0.0 0.0 1.0 0.0
12 BoatFactory (New York City) 40.712776 -74.005974 Wood 1 0.0 0.0 5.0 0.0
13 BoatFactory (New York City) 40.712776 -74.005974 Wood 2 0.0 0.0 5.0 0.0
14 BoatFactory (New York City) 40.712776 -74.005974 Wood 3 0.0 0.0 5.0 0.0
15 BoatFactory (New York City) 40.712776 -74.005974 Wood 4 0.0 0.0 5.0 0.0
16 BoatFactory (New York City) 40.712776 -74.005974 Wood 5 0.0 0.0 5.0 0.0
17 BoatFactory (New York City) 40.712776 -74.005974 Nail 1 0.0 0.0 1.0 0.0
18 BoatFactory (New York City) 40.712776 -74.005974 Nail 2 0.0 0.0 1.0 0.0
19 BoatFactory (New York City) 40.712776 -74.005974 Nail 3 0.0 0.0 1.0 0.0
20 BoatFactory (New York City) 40.712776 -74.005974 Nail 4 0.0 0.0 1.0 0.0
21 BoatFactory (New York City) 40.712776 -74.005974 Nail 5 0.0 0.0 1.0 0.0
22 BoatFactory (Los Angeles) 34.052235 -118.243683 Wood 1 0.0 0.0 5.0 0.0
23 BoatFactory (Los Angeles) 34.052235 -118.243683 Wood 2 0.0 0.0 5.0 0.0
24 BoatFactory (Los Angeles) 34.052235 -118.243683 Wood 3 0.0 0.0 5.0 0.0
25 BoatFactory (Los Angeles) 34.052235 -118.243683 Wood 4 0.0 0.0 5.0 0.0
26 BoatFactory (Los Angeles) 34.052235 -118.243683 Wood 5 0.0 0.0 5.0 0.0
27 BoatFactory (Los Angeles) 34.052235 -118.243683 Nail 1 0.0 0.0 1.0 0.0
28 BoatFactory (Los Angeles) 34.052235 -118.243683 Nail 2 0.0 0.0 1.0 0.0
29 BoatFactory (Los Angeles) 34.052235 -118.243683 Nail 3 0.0 0.0 1.0 0.0
30 BoatFactory (Los Angeles) 34.052235 -118.243683 Nail 4 0.0 0.0 1.0 0.0
31 BoatFactory (Los Angeles) 34.052235 -118.243683 Nail 5 0.0 0.0 1.0 0.0
32 BoatFactory (Houston) 29.760427 -95.369804 Wood 1 0.0 0.0 5.0 0.0
33 BoatFactory (Houston) 29.760427 -95.369804 Wood 2 0.0 0.0 5.0 0.0
34 BoatFactory (Houston) 29.760427 -95.369804 Wood 3 0.0 0.0 5.0 0.0
35 BoatFactory (Houston) 29.760427 -95.369804 Wood 4 0.0 0.0 5.0 0.0
36 BoatFactory (Houston) 29.760427 -95.369804 Wood 5 0.0 0.0 5.0 0.0
37 BoatFactory (Houston) 29.760427 -95.369804 Nail 1 0.0 0.0 1.0 0.0
38 BoatFactory (Houston) 29.760427 -95.369804 Nail 2 0.0 0.0 1.0 0.0
39 BoatFactory (Houston) 29.760427 -95.369804 Nail 3 0.0 0.0 1.0 0.0
40 BoatFactory (Houston) 29.760427 -95.369804 Nail 4 0.0 0.0 1.0 0.0
41 BoatFactory (Houston) 29.760427 -95.369804 Nail 5 0.0 0.0 1.0 0.0
42 BoatFactory (Phoenix) 33.448376 -112.074036 Wood 1 0.0 0.0 5.0 0.0
43 BoatFactory (Phoenix) 33.448376 -112.074036 Wood 2 0.0 0.0 5.0 0.0
44 BoatFactory (Phoenix) 33.448376 -112.074036 Wood 3 0.0 0.0 5.0 0.0
45 BoatFactory (Phoenix) 33.448376 -112.074036 Wood 4 0.0 0.0 5.0 0.0
46 BoatFactory (Phoenix) 33.448376 -112.074036 Wood 5 0.0 0.0 5.0 0.0
47 BoatFactory (Phoenix) 33.448376 -112.074036 Nail 1 0.0 0.0 1.0 0.0
48 BoatFactory (Phoenix) 33.448376 -112.074036 Nail 2 0.0 0.0 1.0 0.0
49 BoatFactory (Phoenix) 33.448376 -112.074036 Nail 3 0.0 0.0 1.0 0.0
50 BoatFactory (Phoenix) 33.448376 -112.074036 Nail 4 0.0 0.0 1.0 0.0
51 BoatFactory (Phoenix) 33.448376 -112.074036 Nail 5 0.0 0.0 1.0 0.0
52 BoatFactory (Philadelphia) 39.952583 -75.165222 Wood 1 0.0 0.0 5.0 0.0
53 BoatFactory (Philadelphia) 39.952583 -75.165222 Wood 2 0.0 0.0 5.0 0.0
54 BoatFactory (Philadelphia) 39.952583 -75.165222 Wood 3 0.0 0.0 5.0 0.0
55 BoatFactory (Philadelphia) 39.952583 -75.165222 Wood 4 0.0 0.0 5.0 0.0
56 BoatFactory (Philadelphia) 39.952583 -75.165222 Wood 5 0.0 0.0 5.0 0.0
57 BoatFactory (Philadelphia) 39.952583 -75.165222 Nail 1 0.0 0.0 1.0 0.0
58 BoatFactory (Philadelphia) 39.952583 -75.165222 Nail 2 0.0 0.0 1.0 0.0
59 BoatFactory (Philadelphia) 39.952583 -75.165222 Nail 3 0.0 0.0 1.0 0.0
60 BoatFactory (Philadelphia) 39.952583 -75.165222 Nail 4 0.0 0.0 1.0 0.0
61 BoatFactory (Philadelphia) 39.952583 -75.165222 Nail 5 0.0 0.0 1.0 0.0
62 BoatFactory (San Antonio) 29.424122 -98.493629 Wood 1 0.0 0.0 5.0 0.0
63 BoatFactory (San Antonio) 29.424122 -98.493629 Wood 2 0.0 0.0 5.0 0.0
64 BoatFactory (San Antonio) 29.424122 -98.493629 Wood 3 0.0 0.0 5.0 0.0
65 BoatFactory (San Antonio) 29.424122 -98.493629 Wood 4 0.0 0.0 5.0 0.0
66 BoatFactory (San Antonio) 29.424122 -98.493629 Wood 5 0.0 0.0 5.0 0.0
67 BoatFactory (San Antonio) 29.424122 -98.493629 Nail 1 0.0 0.0 1.0 0.0
68 BoatFactory (San Antonio) 29.424122 -98.493629 Nail 2 0.0 0.0 1.0 0.0
69 BoatFactory (San Antonio) 29.424122 -98.493629 Nail 3 0.0 0.0 1.0 0.0
70 BoatFactory (San Antonio) 29.424122 -98.493629 Nail 4 0.0 0.0 1.0 0.0
71 BoatFactory (San Antonio) 29.424122 -98.493629 Nail 5 0.0 0.0 1.0 0.0
72 BoatFactory (San Diego) 32.715736 -117.161087 Wood 1 0.0 0.0 5.0 0.0
73 BoatFactory (San Diego) 32.715736 -117.161087 Wood 2 0.0 0.0 5.0 0.0
74 BoatFactory (San Diego) 32.715736 -117.161087 Wood 3 0.0 0.0 5.0 0.0
75 BoatFactory (San Diego) 32.715736 -117.161087 Wood 4 0.0 0.0 5.0 0.0
76 BoatFactory (San Diego) 32.715736 -117.161087 Wood 5 0.0 0.0 5.0 0.0
77 BoatFactory (San Diego) 32.715736 -117.161087 Nail 1 0.0 0.0 1.0 0.0
78 BoatFactory (San Diego) 32.715736 -117.161087 Nail 2 0.0 0.0 1.0 0.0
79 BoatFactory (San Diego) 32.715736 -117.161087 Nail 3 0.0 0.0 1.0 0.0
80 BoatFactory (San Diego) 32.715736 -117.161087 Nail 4 0.0 0.0 1.0 0.0
81 BoatFactory (San Diego) 32.715736 -117.161087 Nail 5 0.0 0.0 1.0 0.0
82 BoatFactory (Dallas) 32.776664 -96.796988 Wood 1 60.0 0.0 5.0 0.0
83 BoatFactory (Dallas) 32.776664 -96.796988 Wood 2 67.89474 0.0 5.0 0.0
84 BoatFactory (Dallas) 32.776664 -96.796988 Wood 3 72.09141 0.0 5.0 0.0
85 BoatFactory (Dallas) 32.776664 -96.796988 Wood 4 73.05912 0.0 5.0 0.0
86 BoatFactory (Dallas) 32.776664 -96.796988 Wood 5 73.40733 0.0 5.0 0.0
87 BoatFactory (Dallas) 32.776664 -96.796988 Nail 1 3.15789 0.0 1.0 0.0
88 BoatFactory (Dallas) 32.776664 -96.796988 Nail 2 3.57341 0.0 1.0 0.0
89 BoatFactory (Dallas) 32.776664 -96.796988 Nail 3 3.79428 0.0 1.0 0.0
90 BoatFactory (Dallas) 32.776664 -96.796988 Nail 4 3.84522 0.0 1.0 0.0
91 BoatFactory (Dallas) 32.776664 -96.796988 Nail 5 3.86354 0.0 1.0 0.0
92 BoatFactory (San Jose) 37.338208 -121.886329 Wood 1 0.0 0.0 5.0 0.0
93 BoatFactory (San Jose) 37.338208 -121.886329 Wood 2 0.0 0.0 5.0 0.0
94 BoatFactory (San Jose) 37.338208 -121.886329 Wood 3 0.0 0.0 5.0 0.0
95 BoatFactory (San Jose) 37.338208 -121.886329 Wood 4 0.0 0.0 5.0 0.0
96 BoatFactory (San Jose) 37.338208 -121.886329 Wood 5 0.0 0.0 5.0 0.0
97 BoatFactory (San Jose) 37.338208 -121.886329 Nail 1 0.0 0.0 1.0 0.0
98 BoatFactory (San Jose) 37.338208 -121.886329 Nail 2 0.0 0.0 1.0 0.0
99 BoatFactory (San Jose) 37.338208 -121.886329 Nail 3 0.0 0.0 1.0 0.0
100 BoatFactory (San Jose) 37.338208 -121.886329 Nail 4 0.0 0.0 1.0 0.0
101 BoatFactory (San Jose) 37.338208 -121.886329 Nail 5 0.0 0.0 1.0 0.0
102 RecyclingPlant (Chicago) 41.881832 -87.623177 UsedBoat 1 0.0 0.0 0.0 0.0
103 RecyclingPlant (Chicago) 41.881832 -87.623177 UsedBoat 2 0.0 0.0 0.0 0.0
104 RecyclingPlant (Chicago) 41.881832 -87.623177 UsedBoat 3 0.0 0.0 0.0 0.0
105 RecyclingPlant (Chicago) 41.881832 -87.623177 UsedBoat 4 0.0 0.0 0.0 0.0
106 RecyclingPlant (Chicago) 41.881832 -87.623177 UsedBoat 5 0.0 0.0 0.0 0.0
107 RecyclingPlant (New York City) 40.712776 -74.005974 UsedBoat 1 0.0 0.0 0.0 0.0
108 RecyclingPlant (New York City) 40.712776 -74.005974 UsedBoat 2 0.0 0.0 0.0 0.0
109 RecyclingPlant (New York City) 40.712776 -74.005974 UsedBoat 3 0.0 0.0 0.0 0.0
110 RecyclingPlant (New York City) 40.712776 -74.005974 UsedBoat 4 0.0 0.0 0.0 0.0
111 RecyclingPlant (New York City) 40.712776 -74.005974 UsedBoat 5 0.0 0.0 0.0 0.0
112 RecyclingPlant (Los Angeles) 34.052235 -118.243683 UsedBoat 1 0.0 0.0 0.0 0.0
113 RecyclingPlant (Los Angeles) 34.052235 -118.243683 UsedBoat 2 0.0 0.0 0.0 0.0
114 RecyclingPlant (Los Angeles) 34.052235 -118.243683 UsedBoat 3 0.0 0.0 0.0 0.0
115 RecyclingPlant (Los Angeles) 34.052235 -118.243683 UsedBoat 4 0.0 0.0 0.0 0.0
116 RecyclingPlant (Los Angeles) 34.052235 -118.243683 UsedBoat 5 0.0 0.0 0.0 0.0
117 RecyclingPlant (Houston) 29.760427 -95.369804 UsedBoat 1 0.0 0.0 0.0 0.0
118 RecyclingPlant (Houston) 29.760427 -95.369804 UsedBoat 2 0.0 0.0 0.0 0.0
119 RecyclingPlant (Houston) 29.760427 -95.369804 UsedBoat 3 0.0 0.0 0.0 0.0
120 RecyclingPlant (Houston) 29.760427 -95.369804 UsedBoat 4 0.0 0.0 0.0 0.0
121 RecyclingPlant (Houston) 29.760427 -95.369804 UsedBoat 5 0.0 0.0 0.0 0.0
122 RecyclingPlant (Phoenix) 33.448376 -112.074036 UsedBoat 1 0.0 0.0 0.0 0.0
123 RecyclingPlant (Phoenix) 33.448376 -112.074036 UsedBoat 2 0.0 0.0 0.0 0.0
124 RecyclingPlant (Phoenix) 33.448376 -112.074036 UsedBoat 3 0.0 0.0 0.0 0.0
125 RecyclingPlant (Phoenix) 33.448376 -112.074036 UsedBoat 4 0.0 0.0 0.0 0.0
126 RecyclingPlant (Phoenix) 33.448376 -112.074036 UsedBoat 5 0.0 0.0 0.0 0.0
127 RecyclingPlant (Philadelphia) 39.952583 -75.165222 UsedBoat 1 0.0 0.0 0.0 0.0
128 RecyclingPlant (Philadelphia) 39.952583 -75.165222 UsedBoat 2 0.0 0.0 0.0 0.0
129 RecyclingPlant (Philadelphia) 39.952583 -75.165222 UsedBoat 3 0.0 0.0 0.0 0.0
130 RecyclingPlant (Philadelphia) 39.952583 -75.165222 UsedBoat 4 0.0 0.0 0.0 0.0
131 RecyclingPlant (Philadelphia) 39.952583 -75.165222 UsedBoat 5 0.0 0.0 0.0 0.0
132 RecyclingPlant (San Antonio) 29.424122 -98.493629 UsedBoat 1 0.0 0.0 0.0 0.0
133 RecyclingPlant (San Antonio) 29.424122 -98.493629 UsedBoat 2 0.0 0.0 0.0 0.0
134 RecyclingPlant (San Antonio) 29.424122 -98.493629 UsedBoat 3 0.0 0.0 0.0 0.0
135 RecyclingPlant (San Antonio) 29.424122 -98.493629 UsedBoat 4 0.0 0.0 0.0 0.0
136 RecyclingPlant (San Antonio) 29.424122 -98.493629 UsedBoat 5 0.0 0.0 0.0 0.0
137 RecyclingPlant (San Diego) 32.715736 -117.161087 UsedBoat 1 0.0 0.0 0.0 0.0
138 RecyclingPlant (San Diego) 32.715736 -117.161087 UsedBoat 2 0.0 0.0 0.0 0.0
139 RecyclingPlant (San Diego) 32.715736 -117.161087 UsedBoat 3 0.0 0.0 0.0 0.0
140 RecyclingPlant (San Diego) 32.715736 -117.161087 UsedBoat 4 0.0 0.0 0.0 0.0
141 RecyclingPlant (San Diego) 32.715736 -117.161087 UsedBoat 5 0.0 0.0 0.0 0.0
142 RecyclingPlant (Dallas) 32.776664 -96.796988 UsedBoat 1 6.31579 0.0 0.0 0.0
143 RecyclingPlant (Dallas) 32.776664 -96.796988 UsedBoat 2 22.93629 0.0 0.0 0.0
144 RecyclingPlant (Dallas) 32.776664 -96.796988 UsedBoat 3 31.7714 0.0 0.0 0.0
145 RecyclingPlant (Dallas) 32.776664 -96.796988 UsedBoat 4 33.80867 0.0 0.0 0.0
146 RecyclingPlant (Dallas) 32.776664 -96.796988 UsedBoat 5 34.54174 0.0 0.0 0.0
147 RecyclingPlant (San Jose) 37.338208 -121.886329 UsedBoat 1 0.0 0.0 0.0 0.0
148 RecyclingPlant (San Jose) 37.338208 -121.886329 UsedBoat 2 0.0 0.0 0.0 0.0
149 RecyclingPlant (San Jose) 37.338208 -121.886329 UsedBoat 3 0.0 0.0 0.0 0.0
150 RecyclingPlant (San Jose) 37.338208 -121.886329 UsedBoat 4 0.0 0.0 0.0 0.0
151 RecyclingPlant (San Jose) 37.338208 -121.886329 UsedBoat 5 0.0 0.0 0.0 0.0

@ -20,7 +20,7 @@ BoatFactory (Houston),29.760427,-95.369804,NewBoat,3,0.0,0.0,0.0,0.0
BoatFactory (Houston),29.760427,-95.369804,NewBoat,4,0.0,0.0,0.0,0.0 BoatFactory (Houston),29.760427,-95.369804,NewBoat,4,0.0,0.0,0.0,0.0
BoatFactory (Houston),29.760427,-95.369804,NewBoat,5,0.0,0.0,0.0,0.0 BoatFactory (Houston),29.760427,-95.369804,NewBoat,5,0.0,0.0,0.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,NewBoat,1,0.0,0.0,0.0,0.0 BoatFactory (Phoenix),33.448376,-112.074036,NewBoat,1,0.0,0.0,0.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,NewBoat,2,0.0,0.0,0.0,0.0 BoatFactory (Phoenix),33.448376,-112.074036,NewBoat,2,-0.0,0.0,0.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,NewBoat,3,0.0,0.0,0.0,0.0 BoatFactory (Phoenix),33.448376,-112.074036,NewBoat,3,0.0,0.0,0.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,NewBoat,4,0.0,0.0,0.0,0.0 BoatFactory (Phoenix),33.448376,-112.074036,NewBoat,4,0.0,0.0,0.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,NewBoat,5,0.0,0.0,0.0,0.0 BoatFactory (Phoenix),33.448376,-112.074036,NewBoat,5,0.0,0.0,0.0,0.0
@ -60,15 +60,15 @@ RecyclingPlant (Chicago),41.881832,-87.623177,Wood,3,0.0,0.0,0.0,0.0
RecyclingPlant (Chicago),41.881832,-87.623177,Wood,4,0.0,0.0,0.0,0.0 RecyclingPlant (Chicago),41.881832,-87.623177,Wood,4,0.0,0.0,0.0,0.0
RecyclingPlant (Chicago),41.881832,-87.623177,Wood,5,0.0,0.0,0.0,0.0 RecyclingPlant (Chicago),41.881832,-87.623177,Wood,5,0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,Nail,1,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,Nail,1,0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,Nail,2,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,Nail,2,-0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,Nail,3,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,Nail,3,0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,Nail,4,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,Nail,4,-0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,Nail,5,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,Nail,5,-0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,Wood,1,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,Wood,1,0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,Wood,2,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,Wood,2,-0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,Wood,3,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,Wood,3,0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,Wood,4,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,Wood,4,-0.0,0.0,0.0,0.0
RecyclingPlant (New York City),40.712776,-74.005974,Wood,5,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,Wood,5,-0.0,0.0,0.0,0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,Nail,1,0.0,0.0,0.0,0.0 RecyclingPlant (Los Angeles),34.052235,-118.243683,Nail,1,0.0,0.0,0.0,0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,Nail,2,0.0,0.0,0.0,0.0 RecyclingPlant (Los Angeles),34.052235,-118.243683,Nail,2,0.0,0.0,0.0,0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,Nail,3,0.0,0.0,0.0,0.0 RecyclingPlant (Los Angeles),34.052235,-118.243683,Nail,3,0.0,0.0,0.0,0.0
@ -90,14 +90,14 @@ RecyclingPlant (Houston),29.760427,-95.369804,Wood,3,0.0,0.0,0.0,0.0
RecyclingPlant (Houston),29.760427,-95.369804,Wood,4,0.0,0.0,0.0,0.0 RecyclingPlant (Houston),29.760427,-95.369804,Wood,4,0.0,0.0,0.0,0.0
RecyclingPlant (Houston),29.760427,-95.369804,Wood,5,0.0,0.0,0.0,0.0 RecyclingPlant (Houston),29.760427,-95.369804,Wood,5,0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,Nail,1,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,Nail,1,0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,Nail,2,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,Nail,2,-0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,Nail,3,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,Nail,3,-0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,Nail,4,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,Nail,4,-0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,Nail,5,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,Nail,5,0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,Wood,1,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,Wood,1,0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,Wood,2,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,Wood,2,-0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,Wood,3,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,Wood,3,-0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,Wood,4,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,Wood,4,-0.0,0.0,0.0,0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,Wood,5,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,Wood,5,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,Nail,1,0.0,0.0,0.0,0.0 RecyclingPlant (Philadelphia),39.952583,-75.165222,Nail,1,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,Nail,2,0.0,0.0,0.0,0.0 RecyclingPlant (Philadelphia),39.952583,-75.165222,Nail,2,0.0,0.0,0.0,0.0
@ -109,12 +109,12 @@ RecyclingPlant (Philadelphia),39.952583,-75.165222,Wood,2,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,Wood,3,0.0,0.0,0.0,0.0 RecyclingPlant (Philadelphia),39.952583,-75.165222,Wood,3,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,Wood,4,0.0,0.0,0.0,0.0 RecyclingPlant (Philadelphia),39.952583,-75.165222,Wood,4,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,Wood,5,0.0,0.0,0.0,0.0 RecyclingPlant (Philadelphia),39.952583,-75.165222,Wood,5,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,Nail,1,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,Nail,1,-0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,Nail,2,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,Nail,2,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,Nail,3,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,Nail,3,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,Nail,4,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,Nail,4,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,Nail,5,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,Nail,5,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,Wood,1,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,Wood,1,-0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,Wood,2,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,Wood,2,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,Wood,3,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,Wood,3,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,Wood,4,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,Wood,4,0.0,0.0,0.0,0.0

1 plant latitude longitude output product year amount produced (tonne) amount disposed (tonne) disposal limit (tonne) disposal cost ($)
20 BoatFactory (Houston) 29.760427 -95.369804 NewBoat 4 0.0 0.0 0.0 0.0
21 BoatFactory (Houston) 29.760427 -95.369804 NewBoat 5 0.0 0.0 0.0 0.0
22 BoatFactory (Phoenix) 33.448376 -112.074036 NewBoat 1 0.0 0.0 0.0 0.0
23 BoatFactory (Phoenix) 33.448376 -112.074036 NewBoat 2 0.0 -0.0 0.0 0.0 0.0
24 BoatFactory (Phoenix) 33.448376 -112.074036 NewBoat 3 0.0 0.0 0.0 0.0
25 BoatFactory (Phoenix) 33.448376 -112.074036 NewBoat 4 0.0 0.0 0.0 0.0
26 BoatFactory (Phoenix) 33.448376 -112.074036 NewBoat 5 0.0 0.0 0.0 0.0
60 RecyclingPlant (Chicago) 41.881832 -87.623177 Wood 4 0.0 0.0 0.0 0.0
61 RecyclingPlant (Chicago) 41.881832 -87.623177 Wood 5 0.0 0.0 0.0 0.0
62 RecyclingPlant (New York City) 40.712776 -74.005974 Nail 1 0.0 0.0 0.0 0.0
63 RecyclingPlant (New York City) 40.712776 -74.005974 Nail 2 0.0 -0.0 0.0 0.0 0.0
64 RecyclingPlant (New York City) 40.712776 -74.005974 Nail 3 0.0 0.0 0.0 0.0
65 RecyclingPlant (New York City) 40.712776 -74.005974 Nail 4 0.0 -0.0 0.0 0.0 0.0
66 RecyclingPlant (New York City) 40.712776 -74.005974 Nail 5 0.0 -0.0 0.0 0.0 0.0
67 RecyclingPlant (New York City) 40.712776 -74.005974 Wood 1 0.0 0.0 0.0 0.0
68 RecyclingPlant (New York City) 40.712776 -74.005974 Wood 2 0.0 -0.0 0.0 0.0 0.0
69 RecyclingPlant (New York City) 40.712776 -74.005974 Wood 3 0.0 0.0 0.0 0.0
70 RecyclingPlant (New York City) 40.712776 -74.005974 Wood 4 0.0 -0.0 0.0 0.0 0.0
71 RecyclingPlant (New York City) 40.712776 -74.005974 Wood 5 0.0 -0.0 0.0 0.0 0.0
72 RecyclingPlant (Los Angeles) 34.052235 -118.243683 Nail 1 0.0 0.0 0.0 0.0
73 RecyclingPlant (Los Angeles) 34.052235 -118.243683 Nail 2 0.0 0.0 0.0 0.0
74 RecyclingPlant (Los Angeles) 34.052235 -118.243683 Nail 3 0.0 0.0 0.0 0.0
90 RecyclingPlant (Houston) 29.760427 -95.369804 Wood 4 0.0 0.0 0.0 0.0
91 RecyclingPlant (Houston) 29.760427 -95.369804 Wood 5 0.0 0.0 0.0 0.0
92 RecyclingPlant (Phoenix) 33.448376 -112.074036 Nail 1 0.0 0.0 0.0 0.0
93 RecyclingPlant (Phoenix) 33.448376 -112.074036 Nail 2 0.0 -0.0 0.0 0.0 0.0
94 RecyclingPlant (Phoenix) 33.448376 -112.074036 Nail 3 0.0 -0.0 0.0 0.0 0.0
95 RecyclingPlant (Phoenix) 33.448376 -112.074036 Nail 4 0.0 -0.0 0.0 0.0 0.0
96 RecyclingPlant (Phoenix) 33.448376 -112.074036 Nail 5 0.0 0.0 0.0 0.0
97 RecyclingPlant (Phoenix) 33.448376 -112.074036 Wood 1 0.0 0.0 0.0 0.0
98 RecyclingPlant (Phoenix) 33.448376 -112.074036 Wood 2 0.0 -0.0 0.0 0.0 0.0
99 RecyclingPlant (Phoenix) 33.448376 -112.074036 Wood 3 0.0 -0.0 0.0 0.0 0.0
100 RecyclingPlant (Phoenix) 33.448376 -112.074036 Wood 4 0.0 -0.0 0.0 0.0 0.0
101 RecyclingPlant (Phoenix) 33.448376 -112.074036 Wood 5 0.0 0.0 0.0 0.0
102 RecyclingPlant (Philadelphia) 39.952583 -75.165222 Nail 1 0.0 0.0 0.0 0.0
103 RecyclingPlant (Philadelphia) 39.952583 -75.165222 Nail 2 0.0 0.0 0.0 0.0
109 RecyclingPlant (Philadelphia) 39.952583 -75.165222 Wood 3 0.0 0.0 0.0 0.0
110 RecyclingPlant (Philadelphia) 39.952583 -75.165222 Wood 4 0.0 0.0 0.0 0.0
111 RecyclingPlant (Philadelphia) 39.952583 -75.165222 Wood 5 0.0 0.0 0.0 0.0
112 RecyclingPlant (San Antonio) 29.424122 -98.493629 Nail 1 0.0 -0.0 0.0 0.0 0.0
113 RecyclingPlant (San Antonio) 29.424122 -98.493629 Nail 2 0.0 0.0 0.0 0.0
114 RecyclingPlant (San Antonio) 29.424122 -98.493629 Nail 3 0.0 0.0 0.0 0.0
115 RecyclingPlant (San Antonio) 29.424122 -98.493629 Nail 4 0.0 0.0 0.0 0.0
116 RecyclingPlant (San Antonio) 29.424122 -98.493629 Nail 5 0.0 0.0 0.0 0.0
117 RecyclingPlant (San Antonio) 29.424122 -98.493629 Wood 1 0.0 -0.0 0.0 0.0 0.0
118 RecyclingPlant (San Antonio) 29.424122 -98.493629 Wood 2 0.0 0.0 0.0 0.0
119 RecyclingPlant (San Antonio) 29.424122 -98.493629 Wood 3 0.0 0.0 0.0 0.0
120 RecyclingPlant (San Antonio) 29.424122 -98.493629 Wood 4 0.0 0.0 0.0 0.0

@ -1,101 +1,101 @@
plant,latitude,longitude,initial capacity,current capacity,year,operational?,input amount (tonne),stored amount (tonne),processed amount (tonne),opening cost ($),fixed operating cost ($),variable operating cost ($),expansion cost ($),storage cost ($) plant,latitude,longitude,initial capacity,current capacity,year,operational?,input amount (tonne),opening cost ($),fixed operating cost ($),variable operating cost ($)
BoatFactory (Chicago),41.881832,-87.623177,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Chicago),41.881832,-87.623177,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
BoatFactory (Chicago),41.881832,-87.623177,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Chicago),41.881832,-87.623177,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
BoatFactory (Chicago),41.881832,-87.623177,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Chicago),41.881832,-87.623177,0.0,0.0,3,false,0.0,0.0,0.0,0.0
BoatFactory (Chicago),41.881832,-87.623177,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Chicago),41.881832,-87.623177,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
BoatFactory (Chicago),41.881832,-87.623177,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Chicago),41.881832,-87.623177,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
BoatFactory (New York City),40.712776,-74.005974,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (New York City),40.712776,-74.005974,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
BoatFactory (New York City),40.712776,-74.005974,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (New York City),40.712776,-74.005974,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
BoatFactory (New York City),40.712776,-74.005974,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (New York City),40.712776,-74.005974,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
BoatFactory (New York City),40.712776,-74.005974,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (New York City),40.712776,-74.005974,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
BoatFactory (New York City),40.712776,-74.005974,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (New York City),40.712776,-74.005974,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
BoatFactory (Los Angeles),34.052235,-118.243683,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Los Angeles),34.052235,-118.243683,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
BoatFactory (Los Angeles),34.052235,-118.243683,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Los Angeles),34.052235,-118.243683,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
BoatFactory (Los Angeles),34.052235,-118.243683,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Los Angeles),34.052235,-118.243683,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
BoatFactory (Los Angeles),34.052235,-118.243683,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Los Angeles),34.052235,-118.243683,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
BoatFactory (Los Angeles),34.052235,-118.243683,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Los Angeles),34.052235,-118.243683,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
BoatFactory (Houston),29.760427,-95.369804,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Houston),29.760427,-95.369804,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
BoatFactory (Houston),29.760427,-95.369804,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Houston),29.760427,-95.369804,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
BoatFactory (Houston),29.760427,-95.369804,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Houston),29.760427,-95.369804,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
BoatFactory (Houston),29.760427,-95.369804,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Houston),29.760427,-95.369804,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
BoatFactory (Houston),29.760427,-95.369804,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Houston),29.760427,-95.369804,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
BoatFactory (Phoenix),33.448376,-112.074036,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Phoenix),33.448376,-112.074036,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
BoatFactory (Phoenix),33.448376,-112.074036,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Phoenix),33.448376,-112.074036,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
BoatFactory (Phoenix),33.448376,-112.074036,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Phoenix),33.448376,-112.074036,0.0,0.0,3,false,0.0,0.0,0.0,0.0
BoatFactory (Phoenix),33.448376,-112.074036,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Phoenix),33.448376,-112.074036,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
BoatFactory (Phoenix),33.448376,-112.074036,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Phoenix),33.448376,-112.074036,0.0,0.0,5,false,0.0,0.0,0.0,0.0
BoatFactory (Philadelphia),39.952583,-75.165222,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Philadelphia),39.952583,-75.165222,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
BoatFactory (Philadelphia),39.952583,-75.165222,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Philadelphia),39.952583,-75.165222,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
BoatFactory (Philadelphia),39.952583,-75.165222,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Philadelphia),39.952583,-75.165222,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
BoatFactory (Philadelphia),39.952583,-75.165222,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Philadelphia),39.952583,-75.165222,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
BoatFactory (Philadelphia),39.952583,-75.165222,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (Philadelphia),39.952583,-75.165222,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Antonio),29.424122,-98.493629,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Antonio),29.424122,-98.493629,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Antonio),29.424122,-98.493629,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Antonio),29.424122,-98.493629,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Antonio),29.424122,-98.493629,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Antonio),29.424122,-98.493629,0.0,0.0,3,false,0.0,0.0,0.0,0.0
BoatFactory (San Antonio),29.424122,-98.493629,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Antonio),29.424122,-98.493629,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Antonio),29.424122,-98.493629,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Antonio),29.424122,-98.493629,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Diego),32.715736,-117.161087,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Diego),32.715736,-117.161087,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Diego),32.715736,-117.161087,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Diego),32.715736,-117.161087,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Diego),32.715736,-117.161087,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Diego),32.715736,-117.161087,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Diego),32.715736,-117.161087,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Diego),32.715736,-117.161087,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Diego),32.715736,-117.161087,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Diego),32.715736,-117.161087,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
BoatFactory (Dallas),32.776664,-96.796988,0.0,500.0,1,true,63.15789,0.0,63.15789,100000.0,250000.0,315.78947,0.0,0.0 BoatFactory (Dallas),32.776664,-96.796988,0.0,500.0,1,true,63.15789,100000.0,250000.0,315.78947
BoatFactory (Dallas),32.776664,-96.796988,0.0,500.0,2,true,71.46814,0.0,71.46814,0.0,250000.0,357.34072,0.0,0.0 BoatFactory (Dallas),32.776664,-96.796988,0.0,500.0,2,true,71.46814,0.0,250000.0,357.34072
BoatFactory (Dallas),32.776664,-96.796988,0.0,500.0,3,true,75.8857,0.0,75.8857,0.0,250000.0,379.42849,0.0,0.0 BoatFactory (Dallas),32.776664,-96.796988,0.0,500.0,3,true,75.8857,0.0,250000.0,379.42849
BoatFactory (Dallas),32.776664,-96.796988,0.0,500.0,4,true,76.90434,0.0,76.90434,0.0,250000.0,384.52168,0.0,0.0 BoatFactory (Dallas),32.776664,-96.796988,0.0,500.0,4,true,76.90434,0.0,250000.0,384.52168
BoatFactory (Dallas),32.776664,-96.796988,0.0,500.0,5,true,77.27087,0.0,77.27087,0.0,250000.0,386.35435,0.0,0.0 BoatFactory (Dallas),32.776664,-96.796988,0.0,500.0,5,true,77.27087,0.0,250000.0,386.35435
BoatFactory (San Jose),37.338208,-121.886329,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Jose),37.338208,-121.886329,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Jose),37.338208,-121.886329,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Jose),37.338208,-121.886329,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Jose),37.338208,-121.886329,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Jose),37.338208,-121.886329,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Jose),37.338208,-121.886329,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Jose),37.338208,-121.886329,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
BoatFactory (San Jose),37.338208,-121.886329,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 BoatFactory (San Jose),37.338208,-121.886329,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Chicago),41.881832,-87.623177,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Chicago),41.881832,-87.623177,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Chicago),41.881832,-87.623177,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Chicago),41.881832,-87.623177,0.0,0.0,2,false,0.0,0.0,0.0,0.0
RecyclingPlant (Chicago),41.881832,-87.623177,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Chicago),41.881832,-87.623177,0.0,0.0,3,false,0.0,0.0,0.0,0.0
RecyclingPlant (Chicago),41.881832,-87.623177,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Chicago),41.881832,-87.623177,0.0,0.0,4,false,0.0,0.0,0.0,0.0
RecyclingPlant (Chicago),41.881832,-87.623177,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Chicago),41.881832,-87.623177,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (New York City),40.712776,-74.005974,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (New York City),40.712776,-74.005974,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (New York City),40.712776,-74.005974,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (New York City),40.712776,-74.005974,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (New York City),40.712776,-74.005974,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (New York City),40.712776,-74.005974,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Los Angeles),34.052235,-118.243683,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Los Angeles),34.052235,-118.243683,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Los Angeles),34.052235,-118.243683,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Los Angeles),34.052235,-118.243683,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Los Angeles),34.052235,-118.243683,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Los Angeles),34.052235,-118.243683,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Houston),29.760427,-95.369804,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Houston),29.760427,-95.369804,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Houston),29.760427,-95.369804,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Houston),29.760427,-95.369804,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Houston),29.760427,-95.369804,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Houston),29.760427,-95.369804,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Houston),29.760427,-95.369804,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Houston),29.760427,-95.369804,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Houston),29.760427,-95.369804,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Houston),29.760427,-95.369804,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Phoenix),33.448376,-112.074036,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Phoenix),33.448376,-112.074036,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Philadelphia),39.952583,-75.165222,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Philadelphia),39.952583,-75.165222,0.0,0.0,2,false,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Philadelphia),39.952583,-75.165222,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Philadelphia),39.952583,-75.165222,0.0,0.0,4,false,0.0,0.0,0.0,0.0
RecyclingPlant (Philadelphia),39.952583,-75.165222,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (Philadelphia),39.952583,-75.165222,0.0,0.0,5,false,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,0.0,0.0,2,false,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,0.0,0.0,3,false,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,0.0,0.0,4,false,0.0,0.0,0.0,0.0
RecyclingPlant (San Antonio),29.424122,-98.493629,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Antonio),29.424122,-98.493629,0.0,0.0,5,false,0.0,0.0,0.0,0.0
RecyclingPlant (San Diego),32.715736,-117.161087,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Diego),32.715736,-117.161087,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (San Diego),32.715736,-117.161087,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Diego),32.715736,-117.161087,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (San Diego),32.715736,-117.161087,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Diego),32.715736,-117.161087,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (San Diego),32.715736,-117.161087,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Diego),32.715736,-117.161087,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (San Diego),32.715736,-117.161087,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Diego),32.715736,-117.161087,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (Dallas),32.776664,-96.796988,0.0,500.0,1,true,6.31579,0.0,6.31579,500000.0,125000.0,15.78947,0.0,0.0 RecyclingPlant (Dallas),32.776664,-96.796988,0.0,500.0,1,true,6.31579,500000.0,125000.0,15.78947
RecyclingPlant (Dallas),32.776664,-96.796988,0.0,500.0,2,true,22.93629,0.0,22.93629,0.0,125000.0,57.34072,0.0,0.0 RecyclingPlant (Dallas),32.776664,-96.796988,0.0,500.0,2,true,22.93629,0.0,125000.0,57.34072
RecyclingPlant (Dallas),32.776664,-96.796988,0.0,500.0,3,true,31.7714,0.0,31.7714,0.0,125000.0,79.42849,0.0,0.0 RecyclingPlant (Dallas),32.776664,-96.796988,0.0,500.0,3,true,31.7714,0.0,125000.0,79.42849
RecyclingPlant (Dallas),32.776664,-96.796988,0.0,500.0,4,true,33.80867,0.0,33.80867,0.0,125000.0,84.52168,0.0,0.0 RecyclingPlant (Dallas),32.776664,-96.796988,0.0,500.0,4,true,33.80867,0.0,125000.0,84.52168
RecyclingPlant (Dallas),32.776664,-96.796988,0.0,500.0,5,true,34.54174,0.0,34.54174,0.0,125000.0,86.35435,0.0,0.0 RecyclingPlant (Dallas),32.776664,-96.796988,0.0,500.0,5,true,34.54174,0.0,125000.0,86.35435
RecyclingPlant (San Jose),37.338208,-121.886329,0.0,0.0,1,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Jose),37.338208,-121.886329,0.0,0.0,1,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (San Jose),37.338208,-121.886329,0.0,0.0,2,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Jose),37.338208,-121.886329,0.0,0.0,2,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (San Jose),37.338208,-121.886329,0.0,0.0,3,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Jose),37.338208,-121.886329,0.0,0.0,3,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (San Jose),37.338208,-121.886329,0.0,0.0,4,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Jose),37.338208,-121.886329,0.0,0.0,4,false,-0.0,0.0,0.0,-0.0
RecyclingPlant (San Jose),37.338208,-121.886329,0.0,0.0,5,false,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0 RecyclingPlant (San Jose),37.338208,-121.886329,0.0,0.0,5,false,-0.0,0.0,0.0,-0.0

1 plant latitude longitude initial capacity current capacity year operational? input amount (tonne) stored amount (tonne) opening cost ($) processed amount (tonne) fixed operating cost ($) variable operating cost ($) expansion cost ($) storage cost ($)
2 BoatFactory (Chicago) 41.881832 -87.623177 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
3 BoatFactory (Chicago) 41.881832 -87.623177 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
4 BoatFactory (Chicago) 41.881832 -87.623177 0.0 0.0 3 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
5 BoatFactory (Chicago) 41.881832 -87.623177 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
6 BoatFactory (Chicago) 41.881832 -87.623177 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
7 BoatFactory (New York City) 40.712776 -74.005974 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
8 BoatFactory (New York City) 40.712776 -74.005974 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
9 BoatFactory (New York City) 40.712776 -74.005974 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
10 BoatFactory (New York City) 40.712776 -74.005974 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
11 BoatFactory (New York City) 40.712776 -74.005974 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
12 BoatFactory (Los Angeles) 34.052235 -118.243683 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
13 BoatFactory (Los Angeles) 34.052235 -118.243683 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
14 BoatFactory (Los Angeles) 34.052235 -118.243683 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
15 BoatFactory (Los Angeles) 34.052235 -118.243683 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
16 BoatFactory (Los Angeles) 34.052235 -118.243683 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
17 BoatFactory (Houston) 29.760427 -95.369804 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
18 BoatFactory (Houston) 29.760427 -95.369804 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
19 BoatFactory (Houston) 29.760427 -95.369804 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
20 BoatFactory (Houston) 29.760427 -95.369804 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
21 BoatFactory (Houston) 29.760427 -95.369804 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
22 BoatFactory (Phoenix) 33.448376 -112.074036 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
23 BoatFactory (Phoenix) 33.448376 -112.074036 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
24 BoatFactory (Phoenix) 33.448376 -112.074036 0.0 0.0 3 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
25 BoatFactory (Phoenix) 33.448376 -112.074036 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
26 BoatFactory (Phoenix) 33.448376 -112.074036 0.0 0.0 5 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
27 BoatFactory (Philadelphia) 39.952583 -75.165222 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
28 BoatFactory (Philadelphia) 39.952583 -75.165222 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
29 BoatFactory (Philadelphia) 39.952583 -75.165222 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
30 BoatFactory (Philadelphia) 39.952583 -75.165222 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
31 BoatFactory (Philadelphia) 39.952583 -75.165222 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
32 BoatFactory (San Antonio) 29.424122 -98.493629 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
33 BoatFactory (San Antonio) 29.424122 -98.493629 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
34 BoatFactory (San Antonio) 29.424122 -98.493629 0.0 0.0 3 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
35 BoatFactory (San Antonio) 29.424122 -98.493629 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
36 BoatFactory (San Antonio) 29.424122 -98.493629 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
37 BoatFactory (San Diego) 32.715736 -117.161087 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
38 BoatFactory (San Diego) 32.715736 -117.161087 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
39 BoatFactory (San Diego) 32.715736 -117.161087 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
40 BoatFactory (San Diego) 32.715736 -117.161087 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
41 BoatFactory (San Diego) 32.715736 -117.161087 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
42 BoatFactory (Dallas) 32.776664 -96.796988 0.0 500.0 1 true 63.15789 0.0 100000.0 63.15789 250000.0 315.78947 0.0 0.0
43 BoatFactory (Dallas) 32.776664 -96.796988 0.0 500.0 2 true 71.46814 0.0 0.0 71.46814 250000.0 357.34072 0.0 0.0
44 BoatFactory (Dallas) 32.776664 -96.796988 0.0 500.0 3 true 75.8857 0.0 0.0 75.8857 250000.0 379.42849 0.0 0.0
45 BoatFactory (Dallas) 32.776664 -96.796988 0.0 500.0 4 true 76.90434 0.0 0.0 76.90434 250000.0 384.52168 0.0 0.0
46 BoatFactory (Dallas) 32.776664 -96.796988 0.0 500.0 5 true 77.27087 0.0 0.0 77.27087 250000.0 386.35435 0.0 0.0
47 BoatFactory (San Jose) 37.338208 -121.886329 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
48 BoatFactory (San Jose) 37.338208 -121.886329 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
49 BoatFactory (San Jose) 37.338208 -121.886329 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
50 BoatFactory (San Jose) 37.338208 -121.886329 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
51 BoatFactory (San Jose) 37.338208 -121.886329 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
52 RecyclingPlant (Chicago) 41.881832 -87.623177 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
53 RecyclingPlant (Chicago) 41.881832 -87.623177 0.0 0.0 2 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
54 RecyclingPlant (Chicago) 41.881832 -87.623177 0.0 0.0 3 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
55 RecyclingPlant (Chicago) 41.881832 -87.623177 0.0 0.0 4 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
56 RecyclingPlant (Chicago) 41.881832 -87.623177 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
57 RecyclingPlant (New York City) 40.712776 -74.005974 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
58 RecyclingPlant (New York City) 40.712776 -74.005974 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
59 RecyclingPlant (New York City) 40.712776 -74.005974 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
60 RecyclingPlant (New York City) 40.712776 -74.005974 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
61 RecyclingPlant (New York City) 40.712776 -74.005974 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
62 RecyclingPlant (Los Angeles) 34.052235 -118.243683 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
63 RecyclingPlant (Los Angeles) 34.052235 -118.243683 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
64 RecyclingPlant (Los Angeles) 34.052235 -118.243683 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
65 RecyclingPlant (Los Angeles) 34.052235 -118.243683 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
66 RecyclingPlant (Los Angeles) 34.052235 -118.243683 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
67 RecyclingPlant (Houston) 29.760427 -95.369804 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
68 RecyclingPlant (Houston) 29.760427 -95.369804 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
69 RecyclingPlant (Houston) 29.760427 -95.369804 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
70 RecyclingPlant (Houston) 29.760427 -95.369804 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
71 RecyclingPlant (Houston) 29.760427 -95.369804 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
72 RecyclingPlant (Phoenix) 33.448376 -112.074036 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
73 RecyclingPlant (Phoenix) 33.448376 -112.074036 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
74 RecyclingPlant (Phoenix) 33.448376 -112.074036 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
75 RecyclingPlant (Phoenix) 33.448376 -112.074036 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
76 RecyclingPlant (Phoenix) 33.448376 -112.074036 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
77 RecyclingPlant (Philadelphia) 39.952583 -75.165222 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
78 RecyclingPlant (Philadelphia) 39.952583 -75.165222 0.0 0.0 2 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
79 RecyclingPlant (Philadelphia) 39.952583 -75.165222 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
80 RecyclingPlant (Philadelphia) 39.952583 -75.165222 0.0 0.0 4 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
81 RecyclingPlant (Philadelphia) 39.952583 -75.165222 0.0 0.0 5 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
82 RecyclingPlant (San Antonio) 29.424122 -98.493629 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
83 RecyclingPlant (San Antonio) 29.424122 -98.493629 0.0 0.0 2 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
84 RecyclingPlant (San Antonio) 29.424122 -98.493629 0.0 0.0 3 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
85 RecyclingPlant (San Antonio) 29.424122 -98.493629 0.0 0.0 4 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
86 RecyclingPlant (San Antonio) 29.424122 -98.493629 0.0 0.0 5 false 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
87 RecyclingPlant (San Diego) 32.715736 -117.161087 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
88 RecyclingPlant (San Diego) 32.715736 -117.161087 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
89 RecyclingPlant (San Diego) 32.715736 -117.161087 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
90 RecyclingPlant (San Diego) 32.715736 -117.161087 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
91 RecyclingPlant (San Diego) 32.715736 -117.161087 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
92 RecyclingPlant (Dallas) 32.776664 -96.796988 0.0 500.0 1 true 6.31579 0.0 500000.0 6.31579 125000.0 15.78947 0.0 0.0
93 RecyclingPlant (Dallas) 32.776664 -96.796988 0.0 500.0 2 true 22.93629 0.0 0.0 22.93629 125000.0 57.34072 0.0 0.0
94 RecyclingPlant (Dallas) 32.776664 -96.796988 0.0 500.0 3 true 31.7714 0.0 0.0 31.7714 125000.0 79.42849 0.0 0.0
95 RecyclingPlant (Dallas) 32.776664 -96.796988 0.0 500.0 4 true 33.80867 0.0 0.0 33.80867 125000.0 84.52168 0.0 0.0
96 RecyclingPlant (Dallas) 32.776664 -96.796988 0.0 500.0 5 true 34.54174 0.0 0.0 34.54174 125000.0 86.35435 0.0 0.0
97 RecyclingPlant (San Jose) 37.338208 -121.886329 0.0 0.0 1 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
98 RecyclingPlant (San Jose) 37.338208 -121.886329 0.0 0.0 2 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
99 RecyclingPlant (San Jose) 37.338208 -121.886329 0.0 0.0 3 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
100 RecyclingPlant (San Jose) 37.338208 -121.886329 0.0 0.0 4 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0
101 RecyclingPlant (San Jose) 37.338208 -121.886329 0.0 0.0 5 false 0.0 -0.0 0.0 0.0 0.0 0.0 0.0 -0.0 0.0 0.0

@ -153,7 +153,7 @@
"variable operating cost ($/tonne)": 5.0 "variable operating cost ($/tonne)": 5.0
} }
], ],
"initial capacity (tonne)": 250 "initial capacity (tonne)": 0
} }
}, },
"emissions": { "emissions": {

@ -56,7 +56,7 @@ function instance_parse_test_1()
@test l1.disposal_cost == Dict(p3 => [0, 0, 0, 0], p4 => [0.86, 0.86, 0.86, 0.86]) @test l1.disposal_cost == Dict(p3 => [0, 0, 0, 0], p4 => [0.86, 0.86, 0.86, 0.86])
@test l1.disposal_limit == @test l1.disposal_limit ==
Dict(p3 => [Inf, Inf, Inf, Inf], p4 => [1000.0, 1000.0, 1000.0, 1000.0]) Dict(p3 => [Inf, Inf, Inf, Inf], p4 => [1000.0, 1000.0, 1000.0, 1000.0])
@test l1.initial_capacity == 250 @test l1.initial_capacity == 0
@test length(l1.capacities) == 2 @test length(l1.capacities) == 2
c1 = l1.capacities[1] c1 = l1.capacities[1]
@test c1.size == 100 @test c1.size == 100

@ -9,11 +9,8 @@ function model_build_test()
y = model[:y] y = model[:y]
z_disp = model[:z_disp] z_disp = model[:z_disp]
z_input = model[:z_input] z_input = model[:z_input]
z_process = model[:z_process]
z_storage = model[:z_storage]
z_em_tr = model[:z_em_tr] z_em_tr = model[:z_em_tr]
z_em_plant = model[:z_em_plant] z_em_plant = model[:z_em_plant]
z_exp = model[:z_exp]
x = model[:x] x = model[:x]
obj = objective_function(model) obj = objective_function(model)
# print(model) # print(model)
@ -30,8 +27,6 @@ function model_build_test()
@test obj.terms[z_disp["C1", "P2", 1]] == 0.23 @test obj.terms[z_disp["C1", "P2", 1]] == 0.23
@test obj.constant == ( @test obj.constant == (
150 * 4 * 3 # center operating cost 150 * 4 * 3 # center operating cost
- 300 # initial opening cost
- 150 * 1.75 # initial expansion
) )
@test obj.terms[z_disp["L1", "P4", 2]] == 0.86 @test obj.terms[z_disp["L1", "P4", 2]] == 0.86
@test obj.terms[x["L1", 1]] == ( @test obj.terms[x["L1", 1]] == (
@ -51,27 +46,6 @@ function model_build_test()
300 # fixed operating cost 300 # fixed operating cost
) )
# Test expansion variables exist and have correct initial values
@test z_exp["L1", 0] == 150.0 # initial_capacity (250) - min_capacity (100)
@test haskey(z_exp, ("L1", 1))
@test haskey(z_exp, ("L1", 2))
@test haskey(z_exp, ("L1", 3))
@test haskey(z_exp, ("L1", 4))
# Test expansion costs in objective function
# R_expand[1] = (1000 - 300) / (500 - 100) = 1.75
# R_expand[2] = (1000 - 400) / (500 - 100) = 1.5
# R_fix_exp[1] = (400 - 300) / (500 - 100) = 0.25
@test obj.terms[z_exp["L1", 1]] == (
+1.75 # expansion cost[1]
- 1.5 # expansion cost[2]
+ 0.25 # fixed operating cost[1]
)
# Test storage cost in objective function
@test obj.terms[z_storage["L1", "P1", 1]] == 0.1 # P1 storage cost
@test obj.terms[z_storage["L1", "P2", 1]] == 0.1 # P2 storage cost
# Variables: Transportation emissions # Variables: Transportation emissions
@test haskey(z_em_tr, ("CO2", "L1", "C3", "P4", 1)) @test haskey(z_em_tr, ("CO2", "L1", "C3", "P4", 1))
@test haskey(z_em_tr, ("CH4", "L1", "C3", "P4", 1)) @test haskey(z_em_tr, ("CH4", "L1", "C3", "P4", 1))
@ -88,21 +62,17 @@ function model_build_test()
@test repr(model[:eq_z_input]["L1", 1]) == @test repr(model[:eq_z_input]["L1", 1]) ==
"eq_z_input[L1,1] : -y[C2,L1,P1,1] - y[C1,L1,P2,1] + z_input[L1,1] = 0" "eq_z_input[L1,1] : -y[C2,L1,P1,1] - y[C1,L1,P2,1] + z_input[L1,1] = 0"
# Plants: Definition of total processing amount # Plants: Must meet input mix
@test repr(model[:eq_z_process]["L1", 1]) == @test repr(model[:eq_input_mix]["L1", "P1", 1]) ==
"eq_z_process[L1,1] : -z_input[L1,1] + z_storage[L1,P1,1] + z_storage[L1,P2,1] + z_process[L1,1] = 0" "eq_input_mix[L1,P1,1] : y[C2,L1,P1,1] - 0.953 z_input[L1,1] = 0"
@test repr(model[:eq_input_mix]["L1", "P2", 1]) ==
# Plants: Processing mix must have correct proportion "eq_input_mix[L1,P2,1] : y[C1,L1,P2,1] - 0.047 z_input[L1,1] = 0"
@test repr(model[:eq_process_mix]["L1", "P1", 1]) ==
"eq_process_mix[L1,P1,1] : y[C2,L1,P1,1] - z_storage[L1,P1,1] - 0.953 z_process[L1,1] = 0"
@test repr(model[:eq_process_mix]["L1", "P2", 1]) ==
"eq_process_mix[L1,P2,1] : y[C1,L1,P2,1] - z_storage[L1,P2,1] - 0.047 z_process[L1,1] = 0"
# Plants: Calculate amount produced # Plants: Calculate amount produced
@test repr(model[:eq_z_prod]["L1", "P3", 1]) == @test repr(model[:eq_z_prod]["L1", "P3", 1]) ==
"eq_z_prod[L1,P3,1] : z_prod[L1,P3,1] - 0.25 z_process[L1,1] = 0" "eq_z_prod[L1,P3,1] : z_prod[L1,P3,1] - 0.25 z_input[L1,1] = 0"
@test repr(model[:eq_z_prod]["L1", "P4", 1]) == @test repr(model[:eq_z_prod]["L1", "P4", 1]) ==
"eq_z_prod[L1,P4,1] : z_prod[L1,P4,1] - 0.12 z_process[L1,1] = 0" "eq_z_prod[L1,P4,1] : z_prod[L1,P4,1] - 0.12 z_input[L1,1] = 0"
# Plants: Produced material must be sent or disposed # Plants: Produced material must be sent or disposed
@test repr(model[:eq_balance]["L1", "P3", 1]) == @test repr(model[:eq_balance]["L1", "P3", 1]) ==
@ -110,13 +80,9 @@ function model_build_test()
@test repr(model[:eq_balance]["L1", "P4", 1]) == @test repr(model[:eq_balance]["L1", "P4", 1]) ==
"eq_balance[L1,P4,1] : -y[L1,C3,P4,1] + z_prod[L1,P4,1] - z_disp[L1,P4,1] = 0" "eq_balance[L1,P4,1] : -y[L1,C3,P4,1] + z_prod[L1,P4,1] - z_disp[L1,P4,1] = 0"
# Plants: Processing limit (capacity constraint) # Plants: Capacity limit
@test repr(model[:eq_process_limit]["L1", 1]) == @test repr(model[:eq_capacity]["L1", 1]) ==
"eq_process_limit[L1,1] : -100 x[L1,1] - z_exp[L1,1] + z_process[L1,1] ≤ 0" "eq_capacity[L1,1] : -100 x[L1,1] + z_input[L1,1] ≤ 0"
# Plants: Expansion upper bound
@test repr(model[:eq_exp_ub]["L1", 1]) ==
"eq_exp_ub[L1,1] : -400 x[L1,1] + z_exp[L1,1] ≤ 0"
# Plants: Disposal limit # Plants: Disposal limit
@test repr(model[:eq_disposal_limit]["L1", "P4", 1]) == @test repr(model[:eq_disposal_limit]["L1", "P4", 1]) ==
@ -126,7 +92,7 @@ function model_build_test()
# Plants: Plant remains open # Plants: Plant remains open
@test repr(model[:eq_keep_open]["L1", 4]) == @test repr(model[:eq_keep_open]["L1", 4]) ==
"eq_keep_open[L1,4] : -x[L1,3] + x[L1,4] ≥ 0" "eq_keep_open[L1,4] : -x[L1,3] + x[L1,4] ≥ 0"
@test repr(model[:eq_keep_open]["L1", 1]) == "eq_keep_open[L1,1] : x[L1,1] ≥ 1" @test repr(model[:eq_keep_open]["L1", 1]) == "eq_keep_open[L1,1] : x[L1,1] ≥ 0"
# Plants: Building period # Plants: Building period
@test ("L1", 1) keys(model[:eq_building_period]) @test ("L1", 1) keys(model[:eq_building_period])
@ -171,9 +137,9 @@ function model_build_test()
@test repr(model[:eq_emission_tr]["CH4", "L1", "C3", "P4", 1]) == @test repr(model[:eq_emission_tr]["CH4", "L1", "C3", "P4", 1]) ==
"eq_emission_tr[CH4,L1,C3,P4,1] : -0.333354 y[L1,C3,P4,1] + z_em_tr[CH4,L1,C3,P4,1] = 0" "eq_emission_tr[CH4,L1,C3,P4,1] : -0.333354 y[L1,C3,P4,1] + z_em_tr[CH4,L1,C3,P4,1] = 0"
# Plants: Plant emissions (updated to use z_process) # Plants: Plant emissions
@test repr(model[:eq_emission_plant]["CO2", "L1", 1]) == @test repr(model[:eq_emission_plant]["CO2", "L1", 1]) ==
"eq_emission_plant[CO2,L1,1] : -0.1 z_process[L1,1] + z_em_plant[CO2,L1,1] = 0" "eq_emission_plant[CO2,L1,1] : -0.1 y[C2,L1,P1,1] - 0.1 y[C1,L1,P2,1] + z_em_plant[CO2,L1,1] = 0"
# Objective function: Emissions penalty costs # Objective function: Emissions penalty costs
@test obj.terms[z_em_plant["CO2", "L1", 1]] == 50.0 # CO2 penalty at time 1 @test obj.terms[z_em_plant["CO2", "L1", 1]] == 50.0 # CO2 penalty at time 1
@ -187,30 +153,4 @@ function model_build_test()
@test repr(model[:eq_emission_limit]["CO2", 1]) == @test repr(model[:eq_emission_limit]["CO2", 1]) ==
"eq_emission_limit[CO2,1] : z_em_tr[CO2,C2,L1,P1,1] + z_em_tr[CO2,C2,C1,P1,1] + z_em_tr[CO2,C1,L1,P2,1] + z_em_tr[CO2,L1,C3,P4,1] + z_em_plant[CO2,L1,1] ≤ 1000" "eq_emission_limit[CO2,1] : z_em_tr[CO2,C2,L1,P1,1] + z_em_tr[CO2,C2,C1,P1,1] + z_em_tr[CO2,C1,L1,P2,1] + z_em_tr[CO2,L1,C3,P4,1] + z_em_plant[CO2,L1,1] ≤ 1000"
@test ("CH4", 1) keys(model[:eq_emission_limit]) @test ("CH4", 1) keys(model[:eq_emission_limit])
# Test storage variables exist
@test haskey(z_storage, ("L1", "P1", 1))
@test haskey(z_storage, ("L1", "P2", 1))
@test haskey(z_process, ("L1", 1))
@test haskey(z_process, ("L1", 2))
@test haskey(z_process, ("L1", 3))
@test haskey(z_process, ("L1", 4))
# Test initial storage values
@test z_storage["L1", "P1", 0] == 0
@test z_storage["L1", "P2", 0] == 0
# Test storage limit constraints (P1 has limit of 100, P2 has no limit)
@test haskey(model[:eq_storage_limit], ("L1", "P1", 1))
@test repr(model[:eq_storage_limit]["L1", "P1", 1]) ==
"eq_storage_limit[L1,P1,1] : z_storage[L1,P1,1] ≤ 100"
@test ("L1", "P2", 1) keys(model[:eq_storage_limit]) # P2 has no storage limit
# Test final storage constraints exist
@test haskey(model[:eq_storage_final], ("L1", "P1"))
@test haskey(model[:eq_storage_final], ("L1", "P2"))
@test repr(model[:eq_storage_final]["L1", "P1"]) ==
"eq_storage_final[L1,P1] : z_storage[L1,P1,4] = 0"
@test repr(model[:eq_storage_final]["L1", "P2"]) ==
"eq_storage_final[L1,P2] : z_storage[L1,P2,4] = 0"
end end

@ -6,7 +6,6 @@ function report_tests()
mkpath("tmp") mkpath("tmp")
write_to_file(model, "tmp/model.lp") write_to_file(model, "tmp/model.lp")
RELOG.write_plants_report(model, "tmp/plants.csv") RELOG.write_plants_report(model, "tmp/plants.csv")
RELOG.write_plant_inputs_report(model, "tmp/plant_inputs.csv")
RELOG.write_plant_outputs_report(model, "tmp/plant_outputs.csv") RELOG.write_plant_outputs_report(model, "tmp/plant_outputs.csv")
RELOG.write_centers_report(model, "tmp/centers.csv") RELOG.write_centers_report(model, "tmp/centers.csv")
RELOG.write_center_outputs_report(model, "tmp/center_outputs.csv") RELOG.write_center_outputs_report(model, "tmp/center_outputs.csv")

Loading…
Cancel
Save