QuadraticModels.jl icon indicating copy to clipboard operation
QuadraticModels.jl copied to clipboard

Error during presolve

Open amontoison opened this issue 6 months ago • 1 comments

[ Info: Test3.mps.gz
[ Info: Using 'Test3' as NAME (l. 1)
[ Info: Using 'R0000000' as objective (l. 8)
[ Info: Using 'RHS' as RHS (l. 668600)
[ Info: Using 'BOUND' as BOUNDS (l. 680403)
┌ Warning: implied bounds for row 4642 lead to a primal infeasible constraint
└ @ QuadraticModels ~/.julia/x86_64/packages/QuadraticModels/iOuVm/src/presolve/primal_constraints.jl:24
ERROR: LoadError: type Nothing has no field meta
Stacktrace:
 [1] getproperty(x::Nothing, f::Symbol)
   @ Base ./Base.jl:49
 [2] presolve_qp(qp::QuadraticModel{Float64, Vector{Float64}, SparseMatrixCOO{Float64, Int64}, SparseMatrixCOO{Float64, Int64}})
   @ Main ~/Argonne/MadQP.jl/scripts/common.jl:100
 [3] run_benchmark(src::String, probs::Vector{String})
   @ Main ~/Argonne/MadQP.jl/scripts/CUDA/benchmark_miplib.jl:25
 [4] top-level scope
   @ ~/Argonne/MadQP.jl/scripts/CUDA/benchmark_miplib.jl:65
 [5] include(fname::String)
   @ Main ./sysimg.jl:38
 [6] top-level scope
   @ REPL[10]:[ Info: Test3.mps.gz
[ Info: Using 'Test3' as NAME (l. 1)
[ Info: Using 'R0000000' as objective (l. 8)
[ Info: Using 'RHS' as RHS (l. 668600)
[ Info: Using 'BOUND' as BOUNDS (l. 680403)
┌ Warning: implied bounds for row 4642 lead to a primal infeasible constraint
└ @ QuadraticModels ~/.julia/x86_64/packages/QuadraticModels/iOuVm/src/presolve/primal_constraints.jl:24
ERROR: LoadError: type Nothing has no field meta
Stacktrace:
 [1] getproperty(x::Nothing, f::Symbol)
   @ Base ./Base.jl:49
 [2] presolve_qp(qp::QuadraticModel{Float64, Vector{Float64}, SparseMatrixCOO{Float64, Int64}, SparseMatrixCOO{Float64, Int64}})
   @ Main ~/Argonne/MadQP.jl/scripts/common.jl:100
 [3] run_benchmark(src::String, probs::Vector{String})
   @ Main ~/Argonne/MadQP.jl/scripts/CUDA/benchmark_miplib.jl:25
 [4] top-level scope
   @ ~/Argonne/MadQP.jl/scripts/CUDA/benchmark_miplib.jl:65
 [5] include(fname::String)
   @ Main ./sysimg.jl:38
 [6] top-level scope
   @ REPL[10]:1
1
EXIT: Optimal Solution Found (tol = 1.0e-07).
[ Info: gasprod1-1.mps.gz
[ Info: Using 'gasprod1-1' as NAME (l. 1)
[ Info: Using 'OBJROW' as objective (l. 3)
[ Info: Using 'RHS' as RHS (l. 134045)
[ Info: Using 'BOUND' as BOUNDS (l. 139747)
┌ Warning: col 12 primal infeasible
└ @ QuadraticModels ~/.julia/x86_64/packages/QuadraticModels/iOuVm/src/presolve/presolve.jl:159
ERROR: LoadError: type Nothing has no field meta
Stacktrace:
 [1] getproperty(x::Nothing, f::Symbol)
   @ Base ./Base.jl:49
 [2] presolve_qp(qp::QuadraticModel{Float64, Vector{Float64}, SparseMatrixCOO{Float64, Int64}, SparseMatrixCOO{Float64, Int64}})
   @ Main ~/Argonne/MadQP.jl/scripts/common.jl:100
 [3] run_benchmark(src::String, probs::Vector{String})
   @ Main ~/Argonne/MadQP.jl/scripts/CUDA/benchmark_miplib.jl:25
 [4] top-level scope
   @ ~/Argonne/MadQP.jl/scripts/CUDA/benchmark_miplib.jl:65
 [5] include(fname::String)
   @ Main ./sysimg.jl:38
 [6] top-level scope
   @ REPL[12]:1
in expression starting at /home/amontoison/Argonne/MadQP.jl/scripts/CUDA/benchmark_miplib.jl:65
[ Info: Test3.mps.gz -- 14 / 600
[ Info: Using 'Test3' as NAME (l. 1)
[ Info: Using 'R0000000' as objective (l. 8)
[ Info: Using 'RHS' as RHS (l. 668600)
[ Info: Using 'BOUND' as BOUNDS (l. 680403)
[ Info: The problem Test3.mps.gz was imported.
┌ Warning: implied bounds for row 4642 lead to a primal infeasible constraint
└ @ QuadraticModels ~/.julia/x86_64/packages/QuadraticModels/iOuVm/src/presolve/primal_constraints.jl:24
ERROR: LoadError: type Nothing has no field meta
Stacktrace:
 [1] getproperty(x::Nothing, f::Symbol)
   @ Base ./Base.jl:49
 [2] presolve_qp(qp::QuadraticModel{Float64, Vector{…}, SparseMatrixCOO{…}, SparseMatrixCOO{…}})
   @ Main ~/Argonne/MadQP.jl/scripts/common.jl:114
 [3] run_benchmark(src::String, probs::Vector{String}; reformulate::Bool, test_reader::Bool)
   @ Main ~/Argonne/MadQP.jl/scripts/benchmarks_gpu.jl:28
 [4] top-level scope
   @ ~/Argonne/MadQP.jl/scripts/benchmarks_gpu.jl:89
 [5] include(fname::String)
   @ Main ./sysimg.jl:38
 [6] top-level scope
   @ REPL[4]:1

amontoison avatar May 22 '25 02:05 amontoison

I checked the source code and presolve stores nothing as presolved qp if the passed QP is unbounded or infeasible. I will update the docstring to explain that. I was always expecting a QuadraticModel as output.

amontoison avatar May 22 '25 06:05 amontoison