# Adding a SOS2 constraint for a variable which is defined over a DenseAxisArray?

**URL:** <https://discourse.julialang.org/t/adding-a-sos2-constraint-for-a-variable-which-is-defined-over-a-denseaxisarray/59637>\
**Category:** Optimization (Mathematical)\
**Tags:** jump\
**Created:** [April 20, 2021, 5:35am UTC](https://discourse.julialang.org/t/adding-a-sos2-constraint-for-a-variable-which-is-defined-over-a-denseaxisarray/59637 "2021-04-20T05:35:09Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mastomaki](https://avatars.discourse-cdn.com/v4/letter/m/779978/32.png) [@Mastomaki](https://discourse.julialang.org/u/Mastomaki)\
**Post date:** [April 20, 2021, 5:35am UTC](https://discourse.julialang.org/t/adding-a-sos2-constraint-for-a-variable-which-is-defined-over-a-denseaxisarray/59637/1 "2021-04-20T05:35:09Z")

</div>

Hello!

I wonder how to add a SOS2 constraint with JuMP for a variable which is defined over a DenseAxisArray or SparseAxisArray? For example:

```
using JuMP

mymod = Model();

#sets
node = ["n1", "n2", "n3"]

#declare variables
@variable(mymod, r[node], lower_bound = 0)

print(r)

#add sos2 constraint
@constraint(mymod, q_1, r in SOS2([1.0, 2.0, 3.0]) )

```

The error I get is:

ERROR: LoadError: At /home/user/data/julia/testsos.jl:15: `@constraint(mymod, q_1, r[:] in SOS2([1.0, 2.0, 3.0]))`: unable to add the constraint because we don’t recognize 1-dimensional DenseAxisArray{VariableRef,1,…} with index sets:  
Dimension 1, [“n1”, “n2”, “n3”]  
And data, a 3-element Array{VariableRef,1}:  
r[n1]  
r[n2]  
r[n3] as a valid JuMP function.

---

<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:** [April 20, 2021, 5:17pm UTC](https://discourse.julialang.org/t/adding-a-sos2-constraint-for-a-variable-which-is-defined-over-a-denseaxisarray/59637/2 "2021-04-20T17:17:19Z")

</div>

Turn it into a vector first:

```julia
@constraint(mymod, q_1, [r[n] for n in node] in SOS2())

```

Although JuMP could add a new method for this to make it easier.

Edit: [Support Containers in `VectorConstraints` · Issue #2563 · jump-dev/JuMP.jl · GitHub](https://github.com/jump-dev/JuMP.jl/issues/2563) if anyone is interested, it’s a good first-issue to contribute to JuMP.

---

<div class="post-metadata">

**Author:** ![Mastomaki](https://avatars.discourse-cdn.com/v4/letter/m/779978/32.png) [@Mastomaki](https://discourse.julialang.org/u/Mastomaki)\
**Post date:** [April 21, 2021, 8:21am UTC](https://discourse.julialang.org/t/adding-a-sos2-constraint-for-a-variable-which-is-defined-over-a-denseaxisarray/59637/3 "2021-04-21T08:21:48Z")

</div>

Thanks! It seems to work.
