diff --git a/src/base/solver.jl b/src/base/solver.jl index 56d67f7b353a811ec4490781de7ca356c0856611..3cb5c5bd4487c2d35a007c9b9f59a9bd7bd780ba 100644 --- a/src/base/solver.jl +++ b/src/base/solver.jl @@ -20,23 +20,10 @@ function make_optimization_model(model::MetabolicModel, optimizer; sense = MOI.M @constraint(optimization_model, lbs, xl .<= x) # lower bounds @constraint(optimization_model, ubs, x .<= xu) # upper bounds - return optimization_model -end - -function make_optimization_model(model::CoreModelCoupled, optimizer; sense = MOI.MAX_SENSE) - # coupled models have specific structure - m, n = size(stoichiometry(model)) - xl, xu = bounds(model) + C = coupling(model) # empty if no coupling cl, cu = coupling_bounds(model) - - optimization_model = COBREXA.JuMP.Model(optimizer) - @variable(optimization_model, x[i = 1:n]) - @objective(optimization_model, sense, objective(model)' * x) - @constraint(optimization_model, mb, stoichiometry(model) * x .== balance(model)) # mass balance - @constraint(optimization_model, lbs, xl .<= x) # lower bounds - @constraint(optimization_model, ubs, x .<= xu) # upper bounds - @constraint(optimization_model, c_lbs, cl .<= coupling(model) * x) # coupling lower bounds - @constraint(optimization_model, c_ubs, coupling(model) * x .<= cu) # coupling upper bounds + isempty(C) || @constraint(optimization_model, c_lbs, cl.<= coupling(model)*x) # coupling lower bounds + isempty(C) || @constraint(optimization_model, c_ubs, coupling(model)*x .<= cu) # coupling upper bounds return optimization_model end