Fix transportation cost and energy

gh-actions
Alinson S. Xavier 5 years ago
parent 237275fc2b
commit 232784d215

@ -27,38 +27,29 @@ end
function create_vars!(model::ManufacturingModel) function create_vars!(model::ManufacturingModel)
mip, vars, graph, T = model.mip, model.vars, model.graph, model.instance.time mip, vars, graph, T = model.mip, model.vars, model.graph, model.instance.time
vars.flow = Dict((a, t) => @variable(mip, vars.flow = Dict((a, t) => @variable(mip, lower_bound=0)
lower_bound=0,
base_name="flow($(a.source.location.index),$(a.dest.location.index),$t)")
for a in graph.arcs, t in 1:T) for a in graph.arcs, t in 1:T)
vars.dispose = Dict((n, t) => @variable(mip, vars.dispose = Dict((n, t) => @variable(mip,
lower_bound=0, lower_bound=0,
upper_bound=n.location.disposal_limit[n.product][t], upper_bound=n.location.disposal_limit[n.product][t])
base_name="dispose($(n.location.index),$(n.product.name),$t)")
for n in values(graph.plant_shipping_nodes), t in 1:T) for n in values(graph.plant_shipping_nodes), t in 1:T)
vars.open_plant = Dict((n, t) => @variable(mip, vars.open_plant = Dict((n, t) => @variable(mip, binary=true)
binary=true,
base_name="open_plant($(n.location.index),$t)")
for n in values(graph.process_nodes), t in 1:T) for n in values(graph.process_nodes), t in 1:T)
vars.is_open = Dict((n, t) => @variable(mip, vars.is_open = Dict((n, t) => @variable(mip, binary=true)
binary=true,
base_name="is_open($(n.location.index),$t)")
for n in values(graph.process_nodes), t in 1:T) for n in values(graph.process_nodes), t in 1:T)
vars.capacity = Dict((n, t) => @variable(mip, vars.capacity = Dict((n, t) => @variable(mip,
lower_bound = 0, lower_bound = 0,
upper_bound = n.location.sizes[2].capacity, upper_bound = n.location.sizes[2].capacity)
base_name="capacity($(n.location.index),$t)")
for n in values(graph.process_nodes), t in 1:T) for n in values(graph.process_nodes), t in 1:T)
vars.expansion = Dict((n, t) => @variable(mip, vars.expansion = Dict((n, t) => @variable(mip,
lower_bound = 0, lower_bound = 0,
upper_bound = n.location.sizes[2].capacity - upper_bound = n.location.sizes[2].capacity -
n.location.sizes[1].capacity, n.location.sizes[1].capacity)
base_name="expansion($(n.location.index),$t)")
for n in values(graph.process_nodes), t in 1:T) for n in values(graph.process_nodes), t in 1:T)
end end
@ -337,7 +328,7 @@ function get_solution(model::ManufacturingModel)
) )
emissions_dict = output["Emissions"]["Transportation (tonne)"] emissions_dict = output["Emissions"]["Transportation (tonne)"]
for (em_name, em_values) in a.source.product.transportation_emissions for (em_name, em_values) in a.source.product.transportation_emissions
dict["Emissions (tonne)"][em_name] = em_values .* dict["Amount (tonne)"] dict["Emissions (tonne)"][em_name] = em_values .* dict["Amount (tonne)"] .* a.values["distance"]
if em_name keys(emissions_dict) if em_name keys(emissions_dict)
emissions_dict[em_name] = zeros(T) emissions_dict[em_name] = zeros(T)
end end
@ -358,7 +349,7 @@ function get_solution(model::ManufacturingModel)
plant_dict["Total input (tonne)"] += vals plant_dict["Total input (tonne)"] += vals
output["Costs"]["Transportation (\$)"] += dict["Transportation cost (\$)"] output["Costs"]["Transportation (\$)"] += dict["Transportation cost (\$)"]
output["Costs"]["Variable operating (\$)"] += dict["Variable operating cost (\$)"] output["Costs"]["Variable operating (\$)"] += dict["Variable operating cost (\$)"]
output["Energy"]["Transportation (GJ)"] += dict["Transportation energy (J)"] / 1e6 output["Energy"]["Transportation (GJ)"] += dict["Transportation energy (J)"] / 1e9
end end
plant_dict["Energy (GJ)"] = plant_dict["Total input (tonne)"] .* plant.energy plant_dict["Energy (GJ)"] = plant_dict["Total input (tonne)"] .* plant.energy

Loading…
Cancel
Save