mirror of https://github.com/ANL-CEEESA/RELOG.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.5 KiB
61 lines
1.5 KiB
# 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 DataStructures
|
|
using JSON
|
|
using JSONSchema
|
|
using Printf
|
|
using Statistics
|
|
|
|
mutable struct Product
|
|
name::String
|
|
transportation_cost::Vector{Float64}
|
|
transportation_energy::Vector{Float64}
|
|
transportation_emissions::Dict{String,Vector{Float64}}
|
|
disposal_limit::Vector{Float64}
|
|
disposal_cost::Vector{Float64}
|
|
collection_centers::Vector
|
|
end
|
|
|
|
mutable struct CollectionCenter
|
|
index::Int64
|
|
name::String
|
|
latitude::Float64
|
|
longitude::Float64
|
|
product::Product
|
|
amount::Vector{Float64}
|
|
end
|
|
|
|
mutable struct PlantSize
|
|
capacity::Float64
|
|
variable_operating_cost::Vector{Float64}
|
|
fixed_operating_cost::Vector{Float64}
|
|
opening_cost::Vector{Float64}
|
|
end
|
|
|
|
mutable struct Plant
|
|
index::Int64
|
|
plant_name::String
|
|
location_name::String
|
|
input::Product
|
|
output::Dict{Product,Float64}
|
|
latitude::Float64
|
|
longitude::Float64
|
|
disposal_limit::Dict{Product,Vector{Float64}}
|
|
disposal_cost::Dict{Product,Vector{Float64}}
|
|
sizes::Vector{PlantSize}
|
|
energy::Vector{Float64}
|
|
emissions::Dict{String,Vector{Float64}}
|
|
storage_limit::Float64
|
|
storage_cost::Vector{Float64}
|
|
end
|
|
|
|
mutable struct Instance
|
|
time::Int64
|
|
products::Vector{Product}
|
|
collection_centers::Vector{CollectionCenter}
|
|
plants::Vector{Plant}
|
|
building_period::Vector{Int64}
|
|
end
|