# Add a constraint to a model iteratively

**URL:** <https://discourse.julialang.org/t/add-a-constraint-to-a-model-iteratively/96558>\
**Category:** Optimization (Mathematical)\
**Tags:** jump\
**Created:** [March 24, 2023, 12:18pm UTC](https://discourse.julialang.org/t/add-a-constraint-to-a-model-iteratively/96558 "2023-03-24T12:18:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![ahmad88](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ahmad88/32/32437_2.png) [@ahmad88](https://discourse.julialang.org/u/ahmad88)\
**Post date:** [March 24, 2023, 12:18pm UTC](https://discourse.julialang.org/t/add-a-constraint-to-a-model-iteratively/96558/1 "2023-03-24T12:18:46Z")

</div>

I have a model as follows

```julia
VC_model2 = direct_model(Gurobi.Optimizer())
@variable(VC_model2, y[i=initial:n], binary=true)
@variable(VC_model2, x[i=initial:n], binary=true)
	################################################
@constraint(VC_model2, sum(x[j] for j in initial:n) == k_val)
for j=initial:n
	@constraint(VC_model2,y[j] <= sum(x[i] for (j,i) in E))
end
@objective(VC_model2, Max, sum(y[j] for j in initial:n))
optimize!(VC_model2)

```

for some reason, I have to solve the model multiple times and in each iteration, I have to add a constraint, what I did is the following  
`add_constraint(VC_model2,sum(x[i] for i in sol) <= k_val-1)`  
but it gives an error message

```julia
LoadError: MethodError: no method matching isless(::AffExpr, ::Int64)
Closest candidates are:
  isless(::Union{StatsBase.PValue, StatsBase.TestStat}, ::Real) at C:\Users\Ahmad Anaqreh\.julia\packages\StatsBase\XgjIN\src\statmodels.jl:90

```

---

<div class="post-metadata">

**Author:** ![mike\_k](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mike_k/32/211864_2.png) [@mike\_k](https://discourse.julialang.org/u/mike_k)\
**Post date:** [March 24, 2023, 12:35pm UTC](https://discourse.julialang.org/t/add-a-constraint-to-a-model-iteratively/96558/2 "2023-03-24T12:35:13Z")

</div>

Function `add_constraint` needs as argument an `con::AbstractConstraint`. Probably you need to build it before. You could try:

```julia
con = @build_constraint( y[j] <= sum(x[i] for (j,i) in E) )
add_constraint(VC_model2, con)

```

(At least I do it always like that)

---

<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 24, 2023, 9:28pm UTC](https://discourse.julialang.org/t/add-a-constraint-to-a-model-iteratively/96558/3 "2023-03-24T21:28:32Z")

</div>

Why use `add_constraint`? You can use `@constraint` iteratively…

```julia
@constraint(VC_model2, sum(x[i] for i in sol) <= k_val-1)

```

Here are some related tutorials:

- [Traveling Salesperson Problem · JuMP](https://jump.dev/JuMP.jl/stable/tutorials/algorithms/tsp_lazy_constraints/#Iterative-method)
- [Benders decomposition · JuMP](https://jump.dev/JuMP.jl/stable/tutorials/algorithms/benders_decomposition/#benders_iterative)
