# Error with SCIP when reoptimize after adding a constraint

**URL:** <https://discourse.julialang.org/t/error-with-scip-when-reoptimize-after-adding-a-constraint/43112>\
**Category:** Optimization (Mathematical)\
**Tags:** question, jump\
**Created:** [July 15, 2020, 9:22am UTC](https://discourse.julialang.org/t/error-with-scip-when-reoptimize-after-adding-a-constraint/43112 "2020-07-15T09:22:31Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![remi-garcia](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/remi-garcia/32/7125_2.png) [@remi-garcia](https://discourse.julialang.org/u/remi-garcia)\
**Post date:** [July 15, 2020, 9:22am UTC](https://discourse.julialang.org/t/error-with-scip-when-reoptimize-after-adding-a-constraint/43112/1 "2020-07-15T09:22:32Z")

</div>

Hi,  
I don’t understand why SCIP throws an error when I reoptimize a model after adding a constraint.  
Error:

```nohighlight
"""
using JuMP; using SCIP;
model = Model(SCIP.Optimizer);
@variable(model, x);@variable(model, y);@variable(model, z);
@NLconstraint(model, x*y*z <= 5);
@objective(model, Max, 0);
optimize!(model)
@NLconstraint(model, x*y*z >= 3);
optimize!(model)
"""
julia> using JuMP; using SCIP;

julia> model = Model(SCIP.Optimizer);

julia> @variable(model, x);@variable(model, y);@variable(model, z);

julia> @NLconstraint(model, x*y*z <= 5);

julia> @objective(model, Max, 0);

julia> println(model)
Max 0
Subject to
 x * y * z - 5.0 ≤ 0

julia> optimize!(model)
feasible solution found by trivial heuristic after 0.0 seconds, objective value 0.000000e+00
presolving:
presolving (1 rounds: 1 fast, 0 medium, 0 exhaustive):
 0 deleted vars, 0 deleted constraints, 0 added constraints, 0 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
 0 implications, 0 cliques
transformed 2/2 original solutions to the transformed problem space
Presolving Time: 0.00

SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 0.00
Solving Nodes : 0
Primal Bound : +0.00000000000000e+00 (2 solutions)
Dual Bound : +0.00000000000000e+00
Gap : 0.00 %

julia> @NLconstraint(model, x*y*z >= 3)
x * y * z - 3.0 ≥ 0

julia> println(model)
Max 0
Subject to
 x * y * z - 5.0 ≤ 0
 x * y * z - 3.0 ≥ 0

julia> optimize!(model)
[/nfs/OPTI/jenkins/workspace/SCIPOptSuite_linux_release/scipoptsuite-6.0.2/scip/src/scip/scip_cons.c:991] ERROR: invalid SCIP stage <10>
[/nfs/OPTI/jenkins/workspace/SCIPOptSuite_linux_release/scipoptsuite-6.0.2/scip/src/scip/cons_nonlinear.c:9424] ERROR: Error <-8> in function call
[/nfs/OPTI/jenkins/workspace/SCIPOptSuite_linux_release/scipoptsuite-6.0.2/scip/src/scip/cons_nonlinear.c:9473] ERROR: Error <-8> in function call
ERROR: AssertionError: $(Expr(:escape, :(SCIPcreateConsBasicNonlinear(mscip, cons __, "", 0, C_NULL, C_NULL, 1, tree__ , C_NULL, lhs, rhs)))) == SCIP_OKAY
Stacktrace:
 [1] add_nonlinear_constraint(::SCIP.ManagedSCIP, ::Expr, ::Float64, ::Float64) at /home/remi/.julia/packages/SCIP/lx725/src/nonlinear.jl:190
 [2] set(::SCIP.Optimizer, ::MathOptInterface.NLPBlock, ::MathOptInterface.NLPBlockData) at /home/remi/.julia/packages/SCIP/lx725/src/MOI_wrapper/nonlinear_constraints.jl:17
 [3] set(::MathOptInterface.Bridges.LazyBridgeOptimizer{SCIP.Optimizer}, ::MathOptInterface.NLPBlock, ::MathOptInterface.NLPBlockData) at /home/remi/.julia/packages/MathOptInterface/bygN7/src/Bridges/bridge_optimizer.jl:593
 [4] set(::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.AbstractOptimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptInterface.NLPBlock, ::MathOptInterface.NLPBlockData) at /home/remi/.julia/packages/MathOptInterface/bygN7/src/Utilities/cachingoptimizer.jl:485
 [5] set(::Model, ::MathOptInterface.NLPBlock, ::MathOptInterface.NLPBlockData) at /home/remi/.julia/packages/JuMP/YXK4e/src/JuMP.jl:893
 [6] #optimize!#97(::Bool, ::Bool, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Model, ::Nothing) at /home/remi/.julia/packages/JuMP/YXK4e/src/optimizer_interface.jl:108
 [7] optimize! at /home/remi/.julia/packages/JuMP/YXK4e/src/optimizer_interface.jl:107 [inlined] (repeats 2 times)
 [8] top-level scope at none:0

```

Same model but no error:

```nohighlight
"""
using JuMP; using SCIP;
model = Model(SCIP.Optimizer);
@variable(model, x);@variable(model, y);@variable(model, z);
@NLconstraint(model, x*y*z <= 5);
@NLconstraint(model, x*y*z >= 3);
@objective(model, Max, 0);
optimize!(model)
"""
julia> using JuMP; using SCIP;

julia> model = Model(SCIP.Optimizer);

julia> @variable(model, x);@variable(model, y);@variable(model, z);

julia> @NLconstraint(model, x*y*z <= 5);

julia> @NLconstraint(model, x*y*z >= 3);

julia> @objective(model, Max, 0);

julia> println(model)
Max 0
Subject to
 x * y * z - 5.0 ≤ 0
 x * y * z - 3.0 ≥ 0

julia> optimize!(model)
presolving:
(round 1, fast) 0 del vars, 0 del conss, 2 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 0 upgd conss, 0 impls, 0 clqs
(round 2, fast) 0 del vars, 0 del conss, 2 add conss, 0 chg bounds, 0 chg sides, 0 chg coeffs, 4 upgd conss, 0 impls, 0 clqs
presolving (3 rounds: 3 fast, 1 medium, 1 exhaustive):
 0 deleted vars, 0 deleted constraints, 2 added constraints, 0 tightened bounds, 0 added holes, 0 changed sides, 0 changed coefficients
 0 implications, 0 cliques
presolved problem has 5 variables (0 bin, 0 int, 0 impl, 5 cont) and 4 constraints
      4 constraints of type <quadratic>
transformed objective value is always integral (scale: 1)
Presolving Time: 0.00

 time | node | left |LP iter|LP it/n| mem |mdpt |frac |vars |cons |cols |rows |cuts |confs|strbr| dualbound | primalbound | gap   
  0.0s| 1 | 0 | 0 | - | 574k| 0 | 0 | 5 | 4 | 5 | 0 | 0 | 0 | 0 | 0.000000e+00 | -- | Inf 

******************************************************************************
This program contains Ipopt, a library for large-scale nonlinear optimization.
 Ipopt is released as open source code under the Eclipse Public License (EPL).
         For more information visit http://projects.coin-or.org/Ipopt
******************************************************************************

m 0.1s| 1 | 0 | 0 | - | 623k| 0 | - | 5 | 4 | 5 | 0 | 0 | 0 | 0 | 0.000000e+00 | 0.000000e+00 | 0.00%
  0.1s| 1 | 0 | 0 | - | 623k| 0 | - | 5 | 4 | 5 | 0 | 0 | 0 | 0 | 0.000000e+00 | 0.000000e+00 | 0.00%

SCIP Status : problem is solved [optimal solution found]
Solving Time (sec) : 0.09
Solving Nodes : 1
Primal Bound : +0.00000000000000e+00 (1 solutions)
Dual Bound : +0.00000000000000e+00
Gap : 0.00 %

```

Thank you,  
Rémi

---

<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:** [July 15, 2020, 1:32pm UTC](https://discourse.julialang.org/t/error-with-scip-when-reoptimize-after-adding-a-constraint/43112/2 "2020-07-15T13:32:41Z")

</div>

You should probably open an issue in SCIP.jl for this.

---

<div class="post-metadata">

**Author:** ![remi-garcia](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/remi-garcia/32/7125_2.png) [@remi-garcia](https://discourse.julialang.org/u/remi-garcia)\
**Post date:** [July 15, 2020, 6:20pm UTC](https://discourse.julialang.org/t/error-with-scip-when-reoptimize-after-adding-a-constraint/43112/3 "2020-07-15T18:20:32Z")

</div>

Ok, I though that I was doing something wrong.
