# How to test a Solver functionality availability

**URL:** <https://discourse.julialang.org/t/how-to-test-a-solver-functionality-availability/117266>\
**Category:** Optimization (Mathematical)\
**Tags:** question, jump, solver\
**Created:** [July 20, 2024, 7:45am UTC](https://discourse.julialang.org/t/how-to-test-a-solver-functionality-availability/117266 "2024-07-20T07:45:52Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![K5Julien](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/k5julien/32/210626_2.png) [@K5Julien](https://discourse.julialang.org/u/K5Julien)\
**Post date:** [July 20, 2024, 7:45am UTC](https://discourse.julialang.org/t/how-to-test-a-solver-functionality-availability/117266/1 "2024-07-20T07:45:52Z")

</div>

In JuMP, depending on the solver, there are some functionalities that are available, and some which are not, see for [instance here](https://discourse.julialang.org/t/lazy-constraints-are-not-supported-by-scip-jl-while-jump-doesnt-mention-it/117110/2).

How should I test that before creating a `Model(optimizer)` ?

As an example:

```julia
if optimizer == Lazy Constraints Callbacks are available # How to test a Solver functionnality availability
### do some stuff like Model(Optimizer) and call Lazy Constraints Callbakcs
else
    @info "The optimiser you selected does not support Lazy Constraints Callbacks"
    return
end

```

Wishing you a happy weekend 😃

---

<div class="post-metadata">

**Author:** ![mtanneau](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mtanneau/32/17787_2.png) [@mtanneau](https://discourse.julialang.org/u/mtanneau)\
**Post date:** [July 20, 2024, 2:25pm UTC](https://discourse.julialang.org/t/how-to-test-a-solver-functionality-availability/117266/2 "2024-07-20T14:25:16Z")

</div>

You can use the [`supports`](https://jump.dev/JuMP.jl/stable/moi/reference/models/#MathOptInterface.supports) function.

In the context of lazy callbacks, it would look something like

```julia
if MOI.supports(model, MOI.LazyConstraintCallback())
    # do something
else
    error(…)
end

```

---

<div class="post-metadata">

**Author:** ![K5Julien](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/k5julien/32/210626_2.png) [@K5Julien](https://discourse.julialang.org/u/K5Julien)\
**Post date:** [July 24, 2024, 9:41pm UTC](https://discourse.julialang.org/t/how-to-test-a-solver-functionality-availability/117266/3 "2024-07-24T21:41:46Z")

</div>

Thank you very much for your reply!

I believe `try-catch` will also work in some use cases:

```julia
    try
        set_attribute(m, MOI.LazyConstraintCallback(), call_back_ilp_lazy)
    catch
        error("Your solver doesn't support Lazy Constraints Callback")
    end

```

😃
