Closed freemin7 closed 1 year ago
ERROR: MathOptInterface.UpperBoundAlreadySet{MathOptInterface.Interval{Float64}, MathOptInterface.LessThan{Float64}}: Cannot add `VariableIndex`-in-`MathOptInterface.LessThan{Float64}` constraint for variable MathOptInterface.VariableIndex(15) as a `VariableIndex`-in-`MathOptInterface.Interval{Float64}` constraint was already set for this variable and both constraints set an upper bound. Stacktrace: [1] _throw_if_upper_bound_set_inner(variable::MathOptInterface.VariableIndex, S2::Type, mask::UInt16, T::Type) @ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/Ohzb2/src/Utilities/variables_container.jl:126 [2] _throw_if_upper_bound_set @ ~/.julia/packages/MathOptInterface/Ohzb2/src/Utilities/variables_container.jl:137 [inlined] [3] add_constraint @ ~/.julia/packages/MathOptInterface/Ohzb2/src/Utilities/variables_container.jl:256 [inlined] [4] add_constraint @ ~/.julia/packages/MathOptInterface/Ohzb2/src/Utilities/model.jl:371 [inlined] [5] add_constraint(m::MathOptInterface.Utilities.CachingOptimizer{Cbc.Optimizer, MathOptInterface.Utilities.Model{Float64}}, func::MathOptInterface.VariableIndex, set::MathOptInterface.LessThan{Float64}) @ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/Ohzb2/src/Utilities/cachingoptimizer.jl:546 [6] add_constraint(b::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Cbc.Optimizer, MathOptInterface.Utilities.Model{Float64}}}, f::MathOptInterface.VariableIndex, s::MathOptInterface.LessThan{Float64}) @ MathOptInterface.Bridges ~/.julia/packages/MathOptInterface/Ohzb2/src/Bridges/bridge_optimizer.jl:1666 [7] add_constraint @ ~/.julia/packages/EAGO/XpIwc/src/eago_optimizer/types/incremental.jl:84 [inlined] [8] update_relaxed_problem_box!(m::EAGO.GlobalOptimizer{EAGO.Incremental{Cbc.Optimizer}, EAGO.Incremental{Ipopt.Optimizer}, EAGO.DefaultExt}) @ EAGO ~/.julia/packages/EAGO/XpIwc/src/eago_optimizer/optimize/nonconvex/lower_problem.jl:89 [9] relax_problem!(m::EAGO.GlobalOptimizer{EAGO.Incremental{Cbc.Optimizer}, EAGO.Incremental{Ipopt.Optimizer}, EAGO.DefaultExt}) @ EAGO ~/.julia/packages/EAGO/XpIwc/src/eago_optimizer/optimize/nonconvex/lower_problem.jl:215 [10] obbt!(m::EAGO.GlobalOptimizer{EAGO.Incremental{Cbc.Optimizer}, EAGO.Incremental{Ipopt.Optimizer}, EAGO.DefaultExt}) @ EAGO ~/.julia/packages/EAGO/XpIwc/src/eago_optimizer/domain_reduction.jl:253 [11] preprocess!(t::EAGO.DefaultExt, m::EAGO.GlobalOptimizer{EAGO.Incremental{Cbc.Optimizer}, EAGO.Incremental{Ipopt.Optimizer}, EAGO.DefaultExt}) @ EAGO ~/.julia/packages/EAGO/XpIwc/src/eago_optimizer/optimize/nonconvex/lower_problem.jl:321 [12] preprocess! @ ~/.julia/packages/EAGO/XpIwc/src/eago_optimizer/optimize/nonconvex/lower_problem.jl:330 [inlined] [13] macro expansion @ ./timing.jl:299 [inlined] [14] global_solve!(m::EAGO.GlobalOptimizer{EAGO.Incremental{Cbc.Optimizer}, EAGO.Incremental{Ipopt.Optimizer}, EAGO.DefaultExt}) @ EAGO ~/.julia/packages/EAGO/XpIwc/src/eago_optimizer/optimize/optimize_nonconvex.jl:285 [15] optimize! @ ~/.julia/packages/EAGO/XpIwc/src/eago_optimizer/optimize/optimize_nonconvex.jl:354 [inlined] [16] optimize!(m::Optimizer{EAGO.Incremental{Cbc.Optimizer}, EAGO.Incremental{Ipopt.Optimizer}, EAGO.DefaultExt}) @ EAGO ~/.julia/packages/EAGO/XpIwc/src/eago_optimizer/optimize/optimize.jl:39 [17] optimize! @ ~/.julia/packages/MathOptInterface/Ohzb2/src/Bridges/bridge_optimizer.jl:376 [inlined] [18] optimize! @ ~/.julia/packages/MathOptInterface/Ohzb2/src/MathOptInterface.jl:87 [inlined] [19] optimize!(m::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.Bridges.LazyBridgeOptimizer{Optimizer{EAGO.Incremental{Cbc.Optimizer}, EAGO.Incremental{Ipopt.Optimizer}, EAGO.DefaultExt}}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}) @ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/Ohzb2/src/Utilities/cachingoptimizer.jl:316 [20] optimize!(model::Model; ignore_optimize_hook::Bool, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}) @ JuMP ~/.julia/packages/JuMP/Y4piv/src/optimizer_interface.jl:161 [21] optimize!(model::Model) @ JuMP ~/.julia/packages/JuMP/Y4piv/src/optimizer_interface.jl:143 [22] top-level scope @ REPL[59]:1
Package environment:
Status `~/privatepath/model/Project.toml` [07493b3f] Alpine v0.5.1 [bb8be931] EAGO v0.7.1 [87dc4568] HiGHS v1.1.4 [b99e6be6] Hypatia v0.7.0 [b6b21f68] Ipopt v1.1.0 [4076af6c] JuMP v1.1.1 [2ddba703] Juniper v0.9.1 [2f354839] Pajarito v0.8.0 [2f01184e] SparseArrays
Offending code: Offending code:
using Ipopt, Alpine, LinearAlgebra, Juniper, EAGO, SparseArrays, JuMP nn = 4 np = 5 n0 = 1 Qmax = 500 Pmin = 5 Pmax = 45 Aqp = sparse([1,2,2,3,3,4,4,5,5],[1,1,2,1,3,2,4,3,4],[1.,1.,-1.,-1.,1.,1.,-1.,1.,-1.],5,4) Aq0 = sparse([1],[1],[-1.],5,1) Demands = fill(25.,(4)) Elevation = [90.,90.,88.,88.] WaterHeight = [100.;] nv = 4 ## MINLP mip = optimizer_with_attributes(HiGHS.Optimizer, MOI.Silent() => true, "presolve" => "on") # NLP optimizer ipopt = optimizer_with_attributes(Ipopt.Optimizer, MOI.Silent() => true, "sb" => "yes", "max_iter" => 9999) # Local MINLP feasibility pump juniper = optimizer_with_attributes( Juniper.Optimizer, # MOI.Silent() => true, "mip_solver" => mip, "nl_solver" => ipopt, ) # Global optimizer alpine = optimizer_with_attributes(Alpine.Optimizer, "nlp_solver" => ipopt, "mip_solver" => mip, "minlp_solver" => juniper) mnl = Model(EAGO) @variable(mnl, Pmin <= p[1:nn] <= Pmax) @variable(mnl, 0 <= q[1:(2*np)] <= Qmax) @variable(mnl, z[1:(2*np)], Bin) @variable(mnl, hfq[1:(2*np)]) @constraint(mnl, transpose(Aqp)*(q[1:np] - q[(np+1):(2np)]) - Demands .== 0) @variable(mnl, b[1:(2*np)]) @constraint(mnl, b[1:np] .== -Aqp*p -Aqp*Demands -Aq0*WaterHeight -hfq[1:np] ) @constraint(mnl, b[(np+1):(2np)] .== +Aqp*p +Aqp*Demands +Aq0*WaterHeight -hfq[(np+1):(2np)]) for i in 1:(2*np) @NLconstraint(mnl, 0 <= q[i]*b[i] ) end @constraint(mnl, -Aqp*p -Aqp*Demands -Aq0*WaterHeight -hfq[1:np] -100*z[1:np] .<= 0) @constraint(mnl, +Aqp*p +Aqp*Demands +Aq0*WaterHeight -hfq[(np+1):(2np)] -100*z[(1+np):(2*np)] .<= 0) @constraint(mnl, z[1:np] + z[(np+1):(2np)] .<= 1) @constraint(mnl, sum(z) == nv) for i in 1:(2*np) @NLconstraint(mnl, hfq[i] == q[i]^1.852) end @objective(mnl,Min,sum(p)) optimize!(mnl)
Related issue: https://github.com/lanl-ansi/Alpine.jl/issues/223
I will narrow down the issue a bit more in the coming days.
I'm having the same error. How did you solve it?
Package environment:
Offending code: Offending code:
Related issue: https://github.com/lanl-ansi/Alpine.jl/issues/223
I will narrow down the issue a bit more in the coming days.