diff --git a/src/model/solve.jl b/src/model/solve.jl index d517c12..fb92e23 100644 --- a/src/model/solve.jl +++ b/src/model/solve.jl @@ -28,23 +28,34 @@ end function solve( instance::Instance; optimizer = nothing, + lp_optimizer = nothing, output = nothing, marginal_costs = true, return_model = false, ) - milp_optimizer = lp_optimizer = optimizer + if lp_optimizer == nothing + if optimizer == nothing + # If neither is provided, use default LP optimizer. + lp_optimizer = _get_default_lp_optimizer() + else + # If only MIP optimizer is provided, use it as + # LP solver too. + lp_optimizer = optimizer + end + end + if optimizer == nothing - milp_optimizer = _get_default_milp_optimizer() - lp_optimizer = _get_default_lp_optimizer() + optimizer = _get_default_milp_optimizer() end + @info "Building graph..." graph = RELOG.build_graph(instance) _print_graph_stats(instance, graph) @info "Building optimization model..." - model = RELOG.build_model(instance, graph, milp_optimizer) + model = RELOG.build_model(instance, graph, optimizer) @info "Optimizing MILP..." JuMP.optimize!(model) diff --git a/src/web/run.jl b/src/web/run.jl index e490c59..cd1a23e 100644 --- a/src/web/run.jl +++ b/src/web/run.jl @@ -2,6 +2,7 @@ println("Initializing...") using Logging using Cbc +using Clp using JSON using JuMP using RELOG @@ -15,8 +16,9 @@ function solve(root, filename) ref_solution, ref_model = RELOG.solve( ref_file, optimizer=optimizer, + lp_optimizer=Clp.Optimizer, return_model=true, - marginal_costs=false, + marginal_costs=true, ) Libc.flush_cstdio() flush(stdout) @@ -59,6 +61,7 @@ function solve(root, filename) ref_model, scenario, optimizer=optimizer, + lp_optimizer=Clp.Optimizer, ) if length(sc_solution) == 0 return