lanl-ansi / Alpine.jl

A Julia/JuMP-based Global Optimization Solver for Non-convex Programs
https://lanl-ansi.github.io/Alpine.jl/latest/
Other
244 stars 39 forks source link

LoadError: `MOI.ScalarQuadraticFunction{Float64}`-in-`MOI.GreaterThan{Float64}` constraints are not supported and cannot be bridged into supported constrained variables and constraints #164

Closed manojcen closed 3 years ago

manojcen commented 3 years ago

i I am getting the below error while solving MINLP with juniper and alpine. with using config XX = GLPK.Optimizer test_sol = optimizer_with_attributes(Alpine.Optimizer, "nlp_solver" => IPOPT, "minlp_solver" =>JUNIPER, "mip_solver" => XX, "presolve_time_limit" => 900, "presolve_max_iter" => 100)

ERROR: LoadError: MOI.ScalarQuadraticFunction{Float64}-in-MOI.GreaterThan{Float64} constraints are not supported and cannot be bridged into supported constrained variables and constraints. See details below: [1] constrained variables in MOI.RotatedSecondOrderCone are not supported because: Cannot use MOIB.Variable.RSOCtoSOCBridge{Float64} because: [2] constrained variables in MOI.SecondOrderCone are not supported Cannot use MOIB.Variable.RSOCtoPSDBridge{Float64} because: [5] constrained variables in MOI.PositiveSemidefiniteConeTriangle are not supported Cannot add free variables and then constrain them because: (9) MOI.VectorOfVariables-in-MOI.RotatedSecondOrderCone constraints are not supported [2] constrained variables in MOI.SecondOrderCone are not supported because: Cannot use MOIB.Variable.SOCtoRSOCBridge{Float64} because: [1] constrained variables in MOI.RotatedSecondOrderCone are not supported Cannot add free variables and then constrain them because: (11) MOI.VectorOfVariables-in-MOI.SecondOrderCone constraints are not supported [5] constrained variables in MOI.PositiveSemidefiniteConeTriangle are not supported because no added bridge supports bridging it. Cannot add free variables and then constrain them because: (18) MOI.VectorOfVariables-in-MOI.PositiveSemidefiniteConeTriangle constraints are not supported (1) MOI.ScalarQuadraticFunction{Float64}-in-MOI.GreaterThan{Float64} constraints are not supported because: Cannot use MOIB.Constraint.GreaterToIntervalBridge{Float64,MOI.ScalarQuadraticFunction{Float64}} because: (2) MOI.ScalarQuadraticFunction{Float64}-in-MOI.Interval{Float64} constraints are not supported Cannot use MOIB.Constraint.GreaterToLessBridge{Float64,MOI.ScalarQuadraticFunction{Float64},MOI.ScalarQuadraticFunction{Float64}} because: (7) MOI.ScalarQuadraticFunction{Float64}-in-MOI.LessThan{Float64} constraints are not supported Cannot use MOIB.Constraint.VectorizeBridge{Float64,MOI.VectorQuadraticFunction{Float64},MOI.Nonnegatives,MOI.ScalarQuadraticFunction{Float64}} because: (5) MOI.VectorQuadraticFunction{Float64}-in-MOI.Nonnegatives constraints are not supported Cannot use MOIB.Constraint.ScalarSlackBridge{Float64,MOI.ScalarQuadraticFunction{Float64},MOI.GreaterThan{Float64}} because: (3) MOI.ScalarQuadraticFunction{Float64}-in-MOI.EqualTo{Float64} constraints are not supported Cannot use MOIB.Constraint.QuadtoSOCBridge{Float64} because: (8) MOI.VectorAffineFunction{Float64}-in-MOI.RotatedSecondOrderCone constraints are not supported (2) MOI.ScalarQuadraticFunction{Float64}-in-MOI.Interval{Float64} constraints are not supported because: Cannot use MOIB.Constraint.ScalarSlackBridge{Float64,MOI.ScalarQuadraticFunction{Float64},MOI.Interval{Float64}} because: (3) MOI.ScalarQuadraticFunction{Float64}-in-MOI.EqualTo{Float64} constraints are not supported Cannot use MOIB.Constraint.SplitIntervalBridge{Float64,MOI.ScalarQuadraticFunction{Float64},MOI.Interval{Float64},MOI.GreaterThan{Float64},MOI.LessThan{Float64}} because: (1) MOI.ScalarQuadraticFunction{Float64}-in-MOI.GreaterThan{Float64} constraints are not supported (7) MOI.ScalarQuadraticFunction{Float64}-in-MOI.LessThan{Float64} constraints are not supported (3) MOI.ScalarQuadraticFunction{Float64}-in-MOI.EqualTo{Float64} constraints are not supported because: Cannot use MOIB.Constraint.VectorizeBridge{Float64,MOI.VectorQuadraticFunction{Float64},MOI.Zeros,MOI.ScalarQuadraticFunction{Float64}} because: (4) MOI.VectorQuadraticFunction{Float64}-in-MOI.Zeros constraints are not supported Cannot use MOIB.Constraint.SplitIntervalBridge{Float64,MOI.ScalarQuadraticFunction{Float64},MOI.EqualTo{Float64},MOI.GreaterThan{Float64},MOI.LessThan{Float64}} because: (1) MOI.ScalarQuadraticFunction{Float64}-in-MOI.GreaterThan{Float64} constraints are not supported (7) MOI.ScalarQuadraticFunction{Float64}-in-MOI.LessThan{Float64} constraints are not supported (4) MOI.VectorQuadraticFunction{Float64}-in-MOI.Zeros constraints are not supported because: Cannot use MOIB.Constraint.ScalarizeBridge{Float64,MOI.ScalarQuadraticFunction{Float64},MOI.EqualTo{Float64}} because: (3) MOI.ScalarQuadraticFunction{Float64}-in-MOI.EqualTo{Float64} constraints are not supported Cannot use MOIB.Constraint.SplitIntervalBridge{Float64,MOI.VectorQuadraticFunction{Float64},MOI.Zeros,MOI.Nonnegatives,MOI.Nonpositives} because: (5) MOI.VectorQuadraticFunction{Float64}-in-MOI.Nonnegatives constraints are not supported (6) MOI.VectorQuadraticFunction{Float64}-in-MOI.Nonpositives constraints are not supported (5) MOI.VectorQuadraticFunction{Float64}-in-MOI.Nonnegatives constraints are not supported because: Cannot use MOIB.Constraint.NonnegToNonposBridge{Float64,MOI.VectorQuadraticFunction{Float64},MOI.VectorQuadraticFunction{Float64}} because: (6) MOI.VectorQuadraticFunction{Float64}-in-MOI.Nonpositives constraints are not supported Cannot use MOIB.Constraint.ScalarizeBridge{Float64,MOI.ScalarQuadraticFunction{Float64},MOI.GreaterThan{Float64}} because: (1) MOI.ScalarQuadraticFunction{Float64}-in-MOI.GreaterThan{Float64} constraints are not supported Cannot use MOIB.Constraint.VectorSlackBridge{Float64,MOI.VectorQuadraticFunction{Float64},MOI.Nonnegatives} because:
(4) MOI.VectorQuadraticFunction{Float64}-in-MOI.Zeros constraints are not supported (6) MOI.VectorQuadraticFunction{Float64}-in-MOI.Nonpositives constraints are not supported because: Cannot use MOIB.Constraint.NonposToNonnegBridge{Float64,MOI.VectorQuadraticFunction{Float64},MOI.VectorQuadraticFunction{Float64}} because: (5) MOI.VectorQuadraticFunction{Float64}-in-MOI.Nonnegatives constraints are not supported Cannot use MOIB.Constraint.ScalarizeBridge{Float64,MOI.ScalarQuadraticFunction{Float64},MOI.LessThan{Float64}} because: (7) MOI.ScalarQuadraticFunction{Float64}-in-MOI.LessThan{Float64} constraints are not supported Cannot use MOIB.Constraint.VectorSlackBridge{Float64,MOI.VectorQuadraticFunction{Float64},MOI.Nonpositives} because:
(4) MOI.VectorQuadraticFunction{Float64}-in-MOI.Zeros constraints are not supported (7) MOI.ScalarQuadraticFunction{Float64}-in-MOI.LessThan{Float64} constraints are not supported because: Cannot use MOIB.Constraint.LessToIntervalBridge{Float64,MOI.ScalarQuadraticFunction{Float64}} because: (2) MOI.ScalarQuadraticFunction{Float64}-in-MOI.Interval{Float64} constraints are not supported Cannot use MOIB.Constraint.LessToGreaterBridge{Float64,MOI.ScalarQuadraticFunction{Float64},MOI.ScalarQuadraticFunction{Float64}} because: (1) MOI.ScalarQuadraticFunction{Float64}-in-MOI.GreaterThan{Float64} constraints are not supported Cannot use MOIB.Constraint.VectorizeBridge{Float64,MOI.VectorQuadraticFunction{Float64},MOI.Nonpositives,MOI.ScalarQuadraticFunction{Float64}} because: (6) MOI.VectorQuadraticFunction{Float64}-in-MOI.Nonpositives constraints are not supported Cannot use MOIB.Constraint.ScalarSlackBridge{Float64,MOI.ScalarQuadraticFunction{Float64},MOI.LessThan{Float64}} because: (3) MOI.ScalarQuadraticFunction{Float64}-in-MOI.EqualTo{Float64} constraints are not supported Cannot use MOIB.Constraint.QuadtoSOCBridge{Float64} because: (8) MOI.VectorAffineFunction{Float64}-in-MOI.RotatedSecondOrderCone constraints are not supported (8) MOI.VectorAffineFunction{Float64}-in-MOI.RotatedSecondOrderCone constraints are not supported because: Cannot use MOIB.Constraint.VectorSlackBridge{Float64,MOI.VectorAffineFunction{Float64},MOI.RotatedSecondOrderCone} because: [1] constrained variables in MOI.RotatedSecondOrderCone are not supported Cannot use MOIB.Constraint.RSOCBridge{Float64,MOI.VectorAffineFunction{Float64},MOI.VectorAffineFunction{Float64}} because: (10) MOI.VectorAffineFunction{Float64}-in-MOI.SecondOrderCone constraints are not supported Cannot use MOIB.Constraint.RSOCtoPSDBridge{Float64,MOI.VectorAffineFunction{Float64},MOI.VectorAffineFunction{Float64}} because: (17) MOI.VectorAffineFunction{Float64}-in-MOI.PositiveSemidefiniteConeTriangle constraints are not supported
(9) MOI.VectorOfVariables-in-MOI.RotatedSecondOrderCone constraints are not supported because: Cannot use MOIB.Constraint.VectorFunctionizeBridge{Float64,MOI.RotatedSecondOrderCone} because: (8) MOI.VectorAffineFunction{Float64}-in-MOI.RotatedSecondOrderCone constraints are not supported Cannot use MOIB.Constraint.RSOCBridge{Float64,MOI.VectorAffineFunction{Float64},MOI.VectorOfVariables} because:
(10) MOI.VectorAffineFunction{Float64}-in-MOI.SecondOrderCone constraints are not supported Cannot use MOIB.Constraint.RSOCtoPSDBridge{Float64,MOI.VectorAffineFunction{Float64},MOI.VectorOfVariables} because:
(17) MOI.VectorAffineFunction{Float64}-in-MOI.PositiveSemidefiniteConeTriangle constraints are not supported
(10) MOI.VectorAffineFunction{Float64}-in-MOI.SecondOrderCone constraints are not supported because: Cannot use MOIB.Constraint.VectorSlackBridge{Float64,MOI.VectorAffineFunction{Float64},MOI.SecondOrderCone} because: [2] constrained variables in MOI.SecondOrderCone are not supported Cannot use MOIB.Constraint.SOCRBridge{Float64,MOI.VectorAffineFunction{Float64},MOI.VectorAffineFunction{Float64}} because: (8) MOI.VectorAffineFunction{Float64}-in-MOI.RotatedSecondOrderCone constraints are not supported (11) MOI.VectorOfVariables-in-MOI.SecondOrderCone constraints are not supported because: Cannot use MOIB.Constraint.VectorFunctionizeBridge{Float64,MOI.SecondOrderCone} because: (10) MOI.VectorAffineFunction{Float64}-in-MOI.SecondOrderCone constraints are not supported Cannot use MOIB.Constraint.SOCRBridge{Float64,MOI.VectorAffineFunction{Float64},MOI.VectorOfVariables} because:
(8) MOI.VectorAffineFunction{Float64}-in-MOI.RotatedSecondOrderCone constraints are not supported (17) MOI.VectorAffineFunction{Float64}-in-MOI.PositiveSemidefiniteConeTriangle constraints are not supported because: Cannot use MOIB.Constraint.VectorSlackBridge{Float64,MOI.VectorAffineFunction{Float64},MOI.PositiveSemidefiniteConeTriangle} because: [5] constrained variables in MOI.PositiveSemidefiniteConeTriangle are not supported (18) MOI.VectorOfVariables-in-MOI.PositiveSemidefiniteConeTriangle constraints are not supported because: Cannot use MOIB.Constraint.VectorFunctionizeBridge{Float64,MOI.PositiveSemidefiniteConeTriangle} because: (17) MOI.VectorAffineFunction{Float64}-in-MOI.PositiveSemidefiniteConeTriangle constraints are not supported

Stacktrace: [1] moi_add_constraint(::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.AbstractOptimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptInterface.ScalarQuadraticFunction{Float64}, ::MathOptInterface.GreaterThan{Float64}) at C:\Users\manojkumar.ram.julia\packages\JuMP\y5vgk\src\constraints.jl:455
[2] add_constraint(::Model, ::ScalarConstraint{GenericQuadExpr{Float64,VariableRef},MathOptInterface.GreaterThan{Float64}}, ::String) at C:\Users\manojkumar.ram.julia\packages\JuMP\y5vgk\src\constraints.jl:473 [3] macro expansion at C:\Users\manojkumar.ram.julia\packages\JuMP\y5vgk\src\macros.jl:448 [inlined] [4] amp_post_convhull_constrs(::Alpine.Optimizer, ::Dict{Any,Any}, ::Dict{Any,Any}, ::Int64, ::Tuple{Int64}, ::Dict{Any,Any}) at C:\Users\manojkumar.ram.julia\packages\Alpine\Z4PGO\src\multi.jl:323 [5] amp_convexify_monomial(::Alpine.Optimizer, ::Array{Expr,1}, ::Dict{Any,Any}, ::Dict{Any,Any}, ::Dict{Any,Any}) at C:\Users\manojkumar.ram.julia\packages\Alpine\Z4PGO\src\multi.jl:60 [6] #amp_post_convhull#194(::Base.Iterators.Pairs{Symbol,Dict{Any,Any},Tuple{Symbol},NamedTuple{(:use_disc,),Tuple{Dict{Any,Any}}}}, ::typeof(Alpine.amp_post_convhull), ::Alpine.Optimizer) at C:\Users\manojkumar.ram.julia\packages\Alpine\Z4PGO\src\multi.jl:17 [7] #amp_post_convhull at .\none:0 [inlined] [8] #amp_post_convexification#151(::Dict{Any,Any}, ::typeof(Alpine.amp_post_convexification), ::Alpine.Optimizer) at C:\Users\manojkumar.ram.julia\packages\Alpine\Z4PGO\src\amp.jl:71 [9] #amp_post_convexification at .\none:0 [inlined] [10] #create_bound_tightening_model#147(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Alpine.create_bound_tightening_model), ::Alpine.Optimizer, ::Dict{Any,Any}, ::Float64) at C:\Users\manojkumar.ram.julia\packages\Alpine\Z4PGO\src\presolve.jl:189 [11] create_bound_tightening_model(::Alpine.Optimizer, ::Dict{Any,Any}, ::Float64) at C:\Users\manojkumar.ram.julia\packages\Alpine\Z4PGO\src\presolve.jl:183 [12] #minmax_bound_tightening#146(::Bool, ::Float64, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Alpine.minmax_bound_tightening), ::Alpine.Optimizer) at C:\Users\manojkumar.ram.julia\packages\Alpine\Z4PGO\src\presolve.jl:97 [13] #minmax_bound_tightening at .\none:0 [inlined] [14] #bound_tightening#145(::Bool, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(Alpine.bound_tightening), ::Alpine.Optimizer) at C:\Users\manojkumar.ram.julia\packages\Alpine\Z4PGO\src\presolve.jl:18 [15] #bound_tightening at .\none:0 [inlined] [16] presolve(::Alpine.Optimizer) at C:\Users\manojkumar.ram.julia\packages\Alpine\Z4PGO\src\algorithm.jl:95 [17] optimize!(::Alpine.Optimizer) at C:\Users\manojkumar.ram.julia\packages\Alpine\Z4PGO\src\algorithm.jl:22 [18] optimize!(::MathOptInterface.Bridges.LazyBridgeOptimizer{Alpine.Optimizer}) at C:\Users\manojkumar.ram.julia\packages\MathOptInterface\ZJFKw\src\Bridges\bridge_optimizer.jl:264 [19] optimize!(::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.AbstractOptimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}) at C:\Users\manojkumar.ram.julia\packages\MathOptInterface\ZJFKw\src\Utilities\cachingoptimizer.jl:215 [20] #optimize!#106(::Bool, ::Bool, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(optimize!), ::Model, ::Nothing) at C:\Users\manojkumar.ram.julia\packages\JuMP\y5vgk\src\optimizer_interface.jl:139 [21] optimize! at C:\Users\manojkumar.ram.julia\packages\JuMP\y5vgk\src\optimizer_interface.jl:115 [inlined] (repeats 2 times) [22] solveSchedullingModel(::Model, ::Array{Float64,3}, ::Array{Any,1}) at C:\Users\manojkumar.ram\Dev julia project\Dev julia project\old\working_version_7.jl:812 [23] maincalc() at C:\Users\manojkumar.ram\Dev julia project\Dev julia project\old\working_version_7.jl:961 [24] top-level scope at C:\Users\manojkumar.ram\Dev julia project\Dev julia project\old\working_version_7.jl:1013 in expression starting at C:\Users\manojkumar.ram\Dev julia project\Dev julia project\old\working_version_7.jl:1013

julia>

harshangrjn commented 3 years ago

@manojcen I am not able to reproduce this error. On the most recent versions of Juniper and Alpine, solving MINLP doesn't look like an issue. I also tested with both CPLEX and CBC as the underlying MIP solver. So, feel free to re-open this issue by posting an example of the problem you are trying to solve.