JuliaPolyhedra / Polyhedra.jl

Polyhedral Computation Interface
Other
172 stars 27 forks source link

NUMERICAL_ERROR with GLPK for detecting lineartiy #257

Open blegat opened 3 years ago

blegat commented 3 years ago
julia> h = hrep([HalfSpace([-0.3241379310344826, -0.32413793103448274], 0.0), HalfSpace([0.11428571428571432, 0.6857142857142857], 0.0), HalfSpace([0.3241379310344826, 0.32413793103448274], 0.0)])
H-representation Polyhedra.Intersection{Float64, Vector{Float64}, Int64}:
3-element iterator of HalfSpace{Float64, Vector{Float64}}:
 HalfSpace([-0.3241379310344826, -0.32413793103448274], 0.0)
 HalfSpace([0.11428571428571432, 0.6857142857142857], 0.0)
 HalfSpace([0.3241379310344826, 0.32413793103448274], 0.0)

julia> detecthlinearity(h, GLPK.Optimizer)
glp_simplex: initial basis is singular
ERROR: Solver returned NUMERICAL_ERROR when detecting new linearity (you may need to activate presolve for some solvers, e.g. by replacing `GLPK.Optimizer` with `optimizer_with_attributes(GLPK.Optimizer, "presolve" => GLPK.GLP_ON)`). Solver specific status: Unable to start the search, because the basis matrix corresponding to the initial basis is singular within the working precision.
Stacktrace:
 [1] error(::String, ::MathOptInterface.TerminationStatusCode, ::String, ::String, ::String, ::String)
   @ Base ./error.jl:42
 [2] _unknown_status(model::MathOptInterface.Bridges.LazyBridgeOptimizer{GLPK.Optimizer}, status::MathOptInterface.TerminationStatusCode, message::String)
   @ Polyhedra ~/.julia/packages/Polyhedra/heXmQ/src/opt.jl:159
 [3] is_feasible(model::MathOptInterface.Bridges.LazyBridgeOptimizer{GLPK.Optimizer}, message::String)
   @ Polyhedra ~/.julia/packages/Polyhedra/heXmQ/src/opt.jl:173
 [4] detect_new_linearities(rep::Polyhedra.Intersection{Float64, Vector{Float64}, Int64}, solver::Type; verbose::Int64)
   @ Polyhedra ~/.julia/packages/Polyhedra/heXmQ/src/linearity.jl:171
 [5] _detect_linearity(rep::Polyhedra.Intersection{Float64, Vector{Float64}, Int64}, solver::Type; verbose::Int64)
   @ Polyhedra ~/.julia/packages/Polyhedra/heXmQ/src/linearity.jl:237
 [6] #detecthlinearity#83
   @ ~/.julia/packages/Polyhedra/heXmQ/src/linearity.jl:257 [inlined]
 [7] detecthlinearity(hr::Polyhedra.Intersection{Float64, Vector{Float64}, Int64}, solver::Type)
   @ Polyhedra ~/.julia/packages/Polyhedra/heXmQ/src/linearity.jl:257
 [8] top-level scope
   @ REPL[62]:1