# Nonlinear callback cplex

**URL:** <https://discourse.julialang.org/t/nonlinear-callback-cplex/65660>\
**Category:** Optimization (Mathematical)\
**Tags:** jump\
**Created:** [August 2, 2021, 7:10am UTC](https://discourse.julialang.org/t/nonlinear-callback-cplex/65660 "2021-08-02T07:10:13Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Luca](https://avatars.discourse-cdn.com/v4/letter/l/51bf81/32.png) [@Luca](https://discourse.julialang.org/u/Luca)\
**Post date:** [August 2, 2021, 7:10am UTC](https://discourse.julialang.org/t/nonlinear-callback-cplex/65660/1 "2021-08-02T07:10:13Z")

</div>

Dear all,

I would like to implement non linear lazy constraint for a cplex model. For instance I would like to implement the following code:

```julia
using CPLEX, JuMP
model = Model(CPLEX.Optimizer)
@variable(model, x <= 10, Int)
@objective(model, Max, x)
function my_callback_function(cb_data)
    x_val = callback_value(cb_data, x)
    if x_val > 2 + 1e-6
        con = @build_constraint(x^2 <= 2)
        MOI.submit(model, MOI.LazyConstraint(cb_data), con)
    end
end
MOI.set(model, MOI.LazyConstraintCallback(), my_callback_function)
optimize!(model)

```

But @build\_constraint(x^2 \<= 2) returns me the following error:

```julia
ArgumentError: Submitting (MathOptInterface.ScalarQuadraticFunction{Float64}, MathOptInterface.LessThan{Float64}) for MathOptInterface.LazyConstraint{CPLEX.CallbackContext} is not valid.

```

Thanks, Luca

---

<div class="post-metadata">

**Author:** ![odow](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/odow/32/28685_2.png) [@odow](https://discourse.julialang.org/u/odow)\
**Post date:** [August 2, 2021, 8:41am UTC](https://discourse.julialang.org/t/nonlinear-callback-cplex/65660/2 "2021-08-02T08:41:13Z")

</div>

CPLEX does not support quadratic lazy constraints, only linear.
