MathOptIIS.jl
MathOptIIS.jl is a basic IIS solver for MathOptInterface.jl.
License
MathOptIIS.jl is licensed under the MIT License.
Getting help
If you need help, please ask a question on the JuMP community forum.
If you have a reproducible example of a bug, please open a GitHub issue.
Installation
Install MathOptIIS using Pkg.add:
import PkgPkg.add("MathOptIIS")Usage
MathOptIIS is not intended to be called directly from user-code. Instead, it should be added as a dependency to solver wrappers that want to provide an IIS.
To add to an existing wrapper, add a new field:
conflict_solver::Union{Nothing,MathOptIIS.Optimizer}Then, add the following methods:
function MOI.compute_conflict!(model::Optimizer) solver = MathOptIIS.Optimizer() MOI.set(solver, MathOptIIS.InfeasibleModel(), model) MOI.set(solver, MathOptIIS.InnerOptimizer(), Optimizer) # Optional: set the solver's silent to true or false. In this example, # follow the outer attribute. MOI.set(solver, MOI.Silent(), MOI.get(model, MOI.Silent())) # Optional: set a time limit. In this case, 60 seconds. MOI.set(solver, MOI.TimeLimitSec(), 60.0) MOI.compute_conflict!(solver) model.conflict_solver = solver returnendfunction MOI.get(optimizer::Optimizer, attr::MOI.ConflictStatus) if optimizer.conflict_solver === nothing return MOI.COMPUTE_CONFLICT_NOT_CALLED end return MOI.get(optimizer.conflict_solver, attr)endfunction MOI.get(optimizer::Optimizer, attr::MOI.ConflictCount) if optimizer.conflict_solver === nothing return 0 end return MOI.get(optimizer.conflict_solver, attr)endfunction MOI.get( optimizer::Optimizer, attr::MOI.ConstraintConflictStatus, con::MOI.ConstraintIndex,) return MOI.get(optimizer.conflict_solver, attr, con)endThe name
The optimization community consistently uses "IIS", but they have not standardized on what the acronym stands for. We have seen:
- Irreducible Infeasible Set
- Irreducibly Inconsistent Set
- Irreducible Infeasible Subsystem
- Infeasible Irreducible System
- Irreducible Inconsistent Subsystem
- Irreducibly Inconsistent System
So we choose the name MathOptIIS, and you can decide what the acronym stands for.