Skip to content

IIS: MethodError: no method matching _verbose_summarize(::Base.TTY, ::Type{ModelAnalyzer.Infeasibility.InfeasibleConstraintRange}) #33

@datejada

Description

@datejada

The attached LP file comes from a large case, we also know why it is infeasible. The model analyser throws an error, but I can get the IIS from Gurobi. This is the code:

link to download file: https://filesender.surf.nl/?s=download&token=9c1947ed-5539-4591-b2e6-25d750dd1f89

using JuMP
using ModelAnalyzer
using HiGHS

# Create a JuMP model from lp file from OBZ case study
model = read_from_file("model_benchmark_rerun-infeasible.mps")
set_optimizer(model, HiGHS.Optimizer)
optimize!(model)

# Infeasibility analysis (if the model was infeasible)
data = ModelAnalyzer.analyze(
    ModelAnalyzer.Infeasibility.Analyzer(),
    model,
    optimizer=HiGHS.Optimizer,
)

# print report to the screen
ModelAnalyzer.summarize(data)

This is the error:

        
Running HiGHS 1.10.0 (git hash: fd8665394e): Copyright (c) 2025 HiGHS under MIT licence terms
LP   has 7253280 rows; 5842920 cols; 14944513 nonzeros
Coefficient ranges:
  Matrix [9e-01, 2e+00]
  Cost   [1e-02, 1e+00]
  Bound  [4e-04, 1e+05]
  RHS    [6e-05, 1e+09]
Presolving model
Problem status detected on presolve: Infeasible
Model status        : Infeasible
Objective value     :  0.0000000000e+00
HiGHS run time      :         25.84
Solving LP to try to compute dual ray
LP   has 7253280 rows; 5842920 cols; 14944513 nonzeros
Coefficient ranges:
  Matrix [9e-01, 2e+00]
  Cost   [0e+00, 0e+00]
  Bound  [4e-04, 1e+05]
  RHS    [6e-05, 1e+09]
Solving LP without presolve, or with basis, or unconstrained
Using EKK dual simplex solver - serial
  Iteration        Objective     Infeasibilities num(sum)
          0     7.7431120628e-02 Pr: 849144(5.35559e+11); Du: 0(3.39972e-07) 59s
        161     7.6204395780e+03 Pr: 848983(5.26441e+11); Du: 0(3.39972e-07) 65s
        161     7.6204395780e+03 65s
Model status        : Infeasible
Simplex   iterations: 161
Objective value     :  0.0000000000e+00
Relative P-D gap    :  7.6204395780e+03
HiGHS run time      :         66.03
Solving linear system to compute dual ray

Infeasibility analysis found 2189 issues

## Infeasibility Analysis



ERROR: MethodError: no method matching _verbose_summarize(::Base.TTY, ::Type{ModelAnalyzer.Infeasibility.InfeasibleConstraintRange})
The function `_verbose_summarize` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  _verbose_summarize(::IO, ::Type{ModelAnalyzer.Numerical.NonconvexQuadraticObjective})
   @ ModelAnalyzer C:\Users\tejadaarangoda\.julia\packages\ModelAnalyzer\Sta4E\src\numerical.jl:1750
  _verbose_summarize(::IO, ::Type{ModelAnalyzer.Numerical.VariableNotInConstraints})
   @ ModelAnalyzer C:\Users\tejadaarangoda\.julia\packages\ModelAnalyzer\Sta4E\src\numerical.jl:1274
  _verbose_summarize(::IO, ::Type{ModelAnalyzer.Numerical.VariableBoundAsConstraint})
   @ ModelAnalyzer C:\Users\tejadaarangoda\.julia\packages\ModelAnalyzer\Sta4E\src\numerical.jl:1337
  ...

Stacktrace:
 [1] summarize(io::Base.TTY, ::Type{ModelAnalyzer.Infeasibility.InfeasibleConstraintRange}; verbose::Bool)
   @ ModelAnalyzer C:\Users\tejadaarangoda\.julia\packages\ModelAnalyzer\Sta4E\src\ModelAnalyzer.jl:75
 [2] summarize(io::Base.TTY, issues::Vector{…}; model::Nothing, verbose::Bool, max_issues::Int64)
   @ ModelAnalyzer C:\Users\tejadaarangoda\.julia\packages\ModelAnalyzer\Sta4E\src\ModelAnalyzer.jl:111
 [3] summarize(io::Base.TTY, data::ModelAnalyzer.Infeasibility.Data; model::Nothing, verbose::Bool, max_issues::Int64)
   @ ModelAnalyzer.Infeasibility C:\Users\tejadaarangoda\.julia\packages\ModelAnalyzer\Sta4E\src\infeasibility.jl:862
 [4] summarize(io::Base.TTY, data::ModelAnalyzer.Infeasibility.Data)
   @ ModelAnalyzer.Infeasibility C:\Users\tejadaarangoda\.julia\packages\ModelAnalyzer\Sta4E\src\infeasibility.jl:850
 [5] summarize(data::ModelAnalyzer.Infeasibility.Data; kwargs::@Kwargs{})
   @ ModelAnalyzer C:\Users\tejadaarangoda\.julia\packages\ModelAnalyzer\Sta4E\src\ModelAnalyzer.jl:136
 [6] summarize(data::ModelAnalyzer.Infeasibility.Data)
   @ ModelAnalyzer C:\Users\tejadaarangoda\.julia\packages\ModelAnalyzer\Sta4E\src\ModelAnalyzer.jl:135
 [7] top-level scope
   @ c:\Users\tejadaarangoda\OneDrive - TNO\00_Sandbox\TestModelAnalyzer\test-infesiable-model.jl:20
Some type information was truncated. Use `show(err)` to see complete types.

This is code when using Gurobi:

using Gurobi
set_optimizer(model, Gurobi.Optimizer)
optimize!(model)
compute_conflict!(model)
if get_attribute(model, MOI.ConflictStatus()) == MOI.CONFLICT_FOUND
    iis_model, reference_map = copy_conflict(model)
    print(iis_model)
end

This is the output:

Gurobi Optimizer version 12.0.2 build v12.0.2rc0 (win64 - Windows 11.0 (26100.2))

CPU model: 12th Gen Intel(R) Core(TM) i7-1255U, instruction set [SSE2|AVX|AVX2]
Thread count: 10 physical cores, 12 logical processors, using up to 12 threads

Optimize a model with 7253280 rows, 5842920 columns and 14944513 nonzeros
Model fingerprint: 0xd2486961
Coefficient statistics:
  Matrix range     [9e-01, 2e+00]
  Objective range  [1e-02, 1e+00]
  Bounds range     [4e-04, 1e+05]
  RHS range        [6e-05, 1e+09]
Presolve removed 5504565 rows and 25915 columns
Presolve time: 1.91s

Solved in 0 iterations and 1.91 seconds (1.13 work units)
Infeasible model

User-callback calls 19, time in user-callback 0.00 sec

Gurobi Optimizer version 12.0.2 build v12.0.2rc0 (win64 - Windows 11.0 (26100.2))

CPU model: 12th Gen Intel(R) Core(TM) i7-1255U, instruction set [SSE2|AVX|AVX2]
Thread count: 10 physical cores, 12 logical processors, using up to 12 threads


IIS computed: 1 constraints and 1 bounds
IIS runtime: 0.36 seconds (0.00 work units)

Min flow[(NL_E_ENS,NL_E_Demand),2050,1,1:1] + flow[(NL_E_ENS,NL_E_Demand),2050,1,2:2] + flow[(NL_E_ENS,NL_E_Demand),2050,1,3:3] + flow[(NL_E_ENS,NL_E_Demand),2050,1,4:4] + flow[(NL_E_ENS,NL_E_Demand),2050,1,5:5] + flow[(NL_E_ENS,NL_E_Demand),2050,1,6:6] + flow[(NL_E_ENS,NL_E_Demand),2050,1,7:7] + flow[(NL_E_ENS,NL_E_Demand),2050,1,8:8] + flow[(NL_E_ENS,NL_E_Demand),2050,1,9:9] + flow[(NL_E_ENS,NL_E_Demand),2050,1,10:10] + flow[(NL_E_ENS,NL_E_Demand),2050,1,11:11] + flow[(NL_E_ENS,NL_E_Demand),2050,1,12:12] + flow[(NL_E_ENS,NL_E_Demand),2050,1,13:13] + flow[(NL_E_ENS,NL_E_Demand),2050,1,14:14] + flow[(NL_E_ENS,NL_E_Demand),2050,1,15:15] + flow[(NL_E_ENS,NL_E_Demand),2050,1,16:16] + flow[(NL_E_ENS,NL_E_Demand),2050,1,17:17] + flow[(NL_E_ENS,NL_E_Demand),2050,1,18:18] + flow[(NL_E_ENS,NL_E_Demand),2050,1,19:19] + flow[(NL_E_ENS,NL_E_Demand),2050,1,20:20] + flow[(NL_E_ENS,NL_E_Demand),2050,1,21:21] + flow[(NL_E_ENS,NL_E_Demand),2050,1,22:22] + flow[(NL_E_ENS,NL_E_Demand),2050,1,23:23] + flow[(NL_E_ENS,NL_E_Demand),2050,1,24:24] + flow[(NL_E_ENS,NL_E_Demand),2050,1,25:25] + flow[(NL_E_ENS,NL_E_Demand),2050,1,26:26] + flow[(NL_E_ENS,NL_E_Demand),2050,1,27:27] + flow[(NL_E_ENS,NL_E_Demand),2050,1,28:28] + flow[(NL_E_ENS,NL_E_Demand),2050,1,29:29] + flow[(NL_E_ENS,NL_E_Demand),2050,1,30:30] + [[...1892100 terms omitted...]] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8731:8731] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8732:8732] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8733:8733] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8734:8734] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8735:8735] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8736:8736] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8737:8737] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8738:8738] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8739:8739] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8740:8740] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8741:8741] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8742:8742] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8743:8743] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8744:8744] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8745:8745] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8746:8746] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8747:8747] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8748:8748] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8749:8749] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8750:8750] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8751:8751] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8752:8752] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8753:8753] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8754:8754] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8755:8755] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8756:8756] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8757:8757] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8758:8758] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8759:8759] + flow[(BORROW_WATER,CZ_Hydro_Reservoir),2050,1,8760:8760]
Subject to
 min_storage_level_rep_period_limit[CH_Pump_Hydro_Open,2050,1,24:24] : storage_level_rep_period[CH_Pump_Hydro_Open,2050,1,24:24] >= 4.49598226e6
 storage_level_rep_period[CH_Pump_Hydro_Open,2050,1,24:24] == 5275.651480144636

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions