# Issue with lazy constraints on Xpress

**URL:** <https://discourse.julialang.org/t/issue-with-lazy-constraints-on-xpress/95463>\
**Category:** Optimization (Mathematical)\
**Tags:** question, jump\
**Created:** [March 2, 2023, 7:03pm UTC](https://discourse.julialang.org/t/issue-with-lazy-constraints-on-xpress/95463 "2023-03-02T19:03:18Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Diego](https://avatars.discourse-cdn.com/v4/letter/d/f04885/32.png) [@Diego](https://discourse.julialang.org/u/Diego)\
**Post date:** [March 2, 2023, 7:03pm UTC](https://discourse.julialang.org/t/issue-with-lazy-constraints-on-xpress/95463/1 "2023-03-02T19:03:18Z")

</div>

Dear community,

I am giving a try to Lazy Constraints and can make a very simple case run with Xpress, however, there is not an issue at all with GLPK.

Can you please have a look and let us know where the problem is?

Thanks

* * *

using JuMP  
using Xpress, GLPK  
using MathOptInterface

model = Model(()-\>Xpress.Optimizer(THREADS = 2))  
#model = Model(GLPK.Optimizer)

@variable(model, x \>= 0, Int)  
@variable(model, y \>= 0, Int)  
@variable(model, FO \>= 0)

@constraint(model, FO == x + y )  
@constraint(model, x + y \<= 220 )

@objective(model, Max, FO)

function lazy\_flow\_constraints(cb\_data)  
x\_val = callback\_value(cb\_data,x)  
y\_val = callback\_value(cb\_data,y)  
if x\_val + y\_val \> 10  
con = @build\_constraint( x + y \<= 10 )  
MOI.submit(model, MOI.LazyConstraint(cb\_data), con)  
end  
end

MOI.set(model, MOI.LazyConstraintCallback(), lazy\_flow\_constraints)

set\_optimizer\_attributes(model, “HEURSTRATEGY” =\> 0)

optimize!(model)

@info(" Execution is " \* string(termination\_status(model)))

println(“x=”,JuMP.value(x))  
println(“y=”,JuMP.value(y))

---

<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:** [March 2, 2023, 7:05pm UTC](https://discourse.julialang.org/t/issue-with-lazy-constraints-on-xpress/95463/2 "2023-03-02T19:05:07Z")

</div>

I dont have an xpress license, so could you post what happens when you run the code?

---

<div class="post-metadata">

**Author:** ![Diego](https://avatars.discourse-cdn.com/v4/letter/d/f04885/32.png) [@Diego](https://discourse.julialang.org/u/Diego)\
**Post date:** [March 3, 2023, 10:29am UTC](https://discourse.julialang.org/t/issue-with-lazy-constraints-on-xpress/95463/3 "2023-03-03T10:29:29Z")

</div>

> [@Diego](#):
>
> Can you please have a look and let us know where the problem is?

julia\> optimize!(model)  
FICO Xpress v8.8.0, Hyper, solve started 10:28:18, Mar 3, 2023  
Heap usage: 84KB (peak 84KB, 834KB system)  
Maximizing MILP  
Original problem has:  
2 rows 3 cols 5 elements 2 globals  
Presolved problem has:  
0 rows 0 cols 0 elements 0 globals  
LP relaxation tightened  
Presolve finished in 0 seconds  
Heap usage: 86KB (peak 105KB, 836KB system)  
Will try to keep branch and bound tree memory usage below 21.7GB  
Starting concurrent solve with dual

Concurrent-Solve, 0s  
Dual  
objective dual inf  
D 220.00000 .0000000  
------- optimal --------  
Concurrent statistics:  
Dual: 0 simplex iterations, 0.00s  
Optimal solution found

Its Obj Value S Ninf Nneg Sum Dual Inf Time  
0 220.000000 D 0 0 .000000 0  
Dual solved problem  
0 simplex iterations in 0s

Final objective : 2.200000000000000e+02  
Max primal violation (abs/rel) : 0.0 / 0.0  
Max dual violation (abs/rel) : 0.0 / 0.0  
Max complementarity viol. (abs/rel) : 0.0 / 0.0  
All values within tolerances

Starting root cutting & heuristics

Its Type BestSoln BestBound Sols Add Del Gap GInf Time  
ERROR: XpressError(32): Subroutine not completed successfully, possibly due to invalid argument. Unable to call `Xpress.storecuts`:

405 Error: Invalid column number passed to XPRSstorecuts.  
Column number 0 is invalid.

Stacktrace:  
[1] macro expansion  
@ ~/.julia/packages/Xpress/I3tPu/src/utils.jl:137 [inlined]  
[2] storecuts(prob::Xpress.XpressProblem, ncuts::Int32, nodupl::Int32, mtype::Vector{Int32}, qrtype::Vector{Int8}, drhs::Vector{Float64}, mstart::Vector{Int32}, mindex::Vector{Ptr{Nothing}}, mcols::Vector{Int32}, dmatval::Vector{Float64})  
@ Xpress ~/.julia/packages/Xpress/I3tPu/src/api.jl:2638  
[3] submit(model::Xpress.Optimizer, cb::MathOptInterface.LazyConstraint{CallbackData}, f::MathOptInterface.ScalarAffineFunction{Float64}, s::MathOptInterface.LessThan{Float64})  
@ Xpress ~/.julia/packages/Xpress/I3tPu/src/MOI/MOI\_callbacks.jl:191  
[4] submit  
@ ~/.julia/packages/MathOptInterface/GIbN0/src/Bridges/bridge\_optimizer.jl:1918 [inlined]  
[5] submit(::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.Bridges.LazyBridgeOptimizer{Xpress.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptInterface.LazyConstraint{CallbackData}, ::MathOptInterface.ScalarAffineFunction{Float64}, ::MathOptInterface.LessThan{Float64})  
@ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/GIbN0/src/Utilities/cachingoptimizer.jl:1268  
[6] submit(model::Model, cb::MathOptInterface.LazyConstraint{CallbackData}, con::ScalarConstraint{AffExpr, MathOptInterface.LessThan{Float64}})  
@ JuMP ~/.julia/packages/JuMP/yYfHy/src/callbacks.jl:71  
[7] lazy\_flow\_constraints(cb\_data::CallbackData)  
@ Main ./REPL[13]:7  
[8] (::Xpress.var"#51#52"{Xpress.Optimizer})(cb\_data::CallbackData)  
@ Xpress ~/.julia/packages/Xpress/I3tPu/src/MOI/MOI\_callbacks.jl:100  
[9] (::Xpress.var"#49#50"{Xpress.Optimizer, Xpress.var"#51#52"{Xpress.Optimizer}})(cb\_data::CallbackData)  
@ Xpress ~/.julia/packages/Xpress/I3tPu/src/MOI/MOI\_callbacks.jl:27  
[10] setcboptnode\_wrapper(ptr\_model::Ptr{Nothing}, my\_object::Ptr{Nothing}, feas::Ptr{Int32})  
@ Xpress ~/.julia/packages/Xpress/I3tPu/src/xprs\_callbacks.jl:26  
[11] XPRSmipoptimize(prob::Xpress.XpressProblem, \_sflags::String)  
@ Xpress.Lib ~/.julia/packages/Xpress/I3tPu/src/lib.jl:322  
[12] macro expansion  
@ ~/.julia/packages/Xpress/I3tPu/src/utils.jl:133 [inlined]  
[13] mipoptimize  
@ ~/.julia/packages/Xpress/I3tPu/src/api.jl:1019 [inlined]  
[14] optimize!(model::Xpress.Optimizer)  
@ Xpress ~/.julia/packages/Xpress/I3tPu/src/MOI/MOI\_wrapper.jl:2622  
[15] optimize!  
@ ~/.julia/packages/MathOptInterface/GIbN0/src/Bridges/bridge\_optimizer.jl:376 [inlined]  
[16] optimize!(m::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.Bridges.LazyBridgeOptimizer{Xpress.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}})  
@ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/GIbN0/src/Utilities/cachingoptimizer.jl:325  
[17] optimize!(m::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.Bridges.LazyBridgeOptimizer{Xpress.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}})  
@ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/GIbN0/src/Utilities/cachingoptimizer.jl:313  
[18] optimize!(model::Model; ignore\_optimize\_hook::Bool, \_differentiation\_backend::MathOptInterface.Nonlinear.SparseReverseMode, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})  
@ JuMP ~/.julia/packages/JuMP/yYfHy/src/optimizer\_interface.jl:480  
[19] optimize!(model::Model)  
@ JuMP ~/.julia/packages/JuMP/yYfHy/src/optimizer\_interface.jl:450  
[20] top-level scope  
@ REPL[16]:1

---

<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:** [March 3, 2023, 7:11pm UTC](https://discourse.julialang.org/t/issue-with-lazy-constraints-on-xpress/95463/4 "2023-03-03T19:11:17Z")

</div>

That looks like a bug: [Possible bug in lazy constraints · Issue #191 · jump-dev/Xpress.jl · GitHub](https://github.com/jump-dev/Xpress.jl/issues/191). @joaquimg might be able to take a look

---

<div class="post-metadata">

**Author:** ![Diego](https://avatars.discourse-cdn.com/v4/letter/d/f04885/32.png) [@Diego](https://discourse.julialang.org/u/Diego)\
**Post date:** [March 3, 2023, 8:56pm UTC](https://discourse.julialang.org/t/issue-with-lazy-constraints-on-xpress/95463/5 "2023-03-03T20:56:05Z")

</div>

Thanks
