# Avoiding a nonlinear expression in JuMP

**URL:** <https://discourse.julialang.org/t/avoiding-a-nonlinear-expression-in-jump/2190>\
**Category:** Optimization (Mathematical)\
**Tags:** jump\
**Created:** [February 20, 2017, 4:47pm UTC](https://discourse.julialang.org/t/avoiding-a-nonlinear-expression-in-jump/2190 "2017-02-20T16:47:46Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![varun7rs](https://avatars.discourse-cdn.com/v4/letter/v/c2a13f/32.png) [@varun7rs](https://discourse.julialang.org/u/varun7rs)\
**Post date:** [February 20, 2017, 4:47pm UTC](https://discourse.julialang.org/t/avoiding-a-nonlinear-expression-in-jump/2190/1 "2017-02-20T16:47:46Z")

</div>

Hello,  
I have formulated a flow conservation constraint in JuMP for a linear model.

```julia
  @constraint(SPF_IM, cons5[t in aggList, c in t.VNFChains, n in subGraph.nodes],
              sum((fI[t.ID,c.ID,e.ID] - fO[t.ID,c.ID,e.ID]) for e in n.outEdges)
              - sum((fI[t.ID,c.ID,e.ID] - fO[t.ID,c.ID,e.ID]) for e in n.inEdges)
              == ((z[t.ID] ^ (c.tailID == 1)) * (x[t.ID,c.tailID,n.ID] ^ (c.tailID != 1))
              - x[t.ID,c.headID,n.ID]))

```

On the RHS, If the tailID = 1, then I want to retain the variable z[t.ID] and if not, the variable x[t.ID,c.tailID,n.ID]. Constraint seems linear to me under these conditions but JuMP throws up an error saying its nonlinear. I understand the reason why its doing so but is there a way to express it without losing the linear property?

---

<div class="post-metadata">

**Author:** ![joaquimg](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/joaquimg/32/223_2.png) [@joaquimg](https://discourse.julialang.org/u/joaquimg)\
**Post date:** [February 20, 2017, 5:23pm UTC](https://discourse.julialang.org/t/avoiding-a-nonlinear-expression-in-jump/2190/2 "2017-02-20T17:23:34Z")

</div>

you can use: `c.tailID == 1 ? z[t.ID] : x[t.ID,c.tailID,n.ID] `

---

<div class="post-metadata">

**Author:** ![varun7rs](https://avatars.discourse-cdn.com/v4/letter/v/c2a13f/32.png) [@varun7rs](https://discourse.julialang.org/u/varun7rs)\
**Post date:** [February 20, 2017, 5:26pm UTC](https://discourse.julialang.org/t/avoiding-a-nonlinear-expression-in-jump/2190/3 "2017-02-20T17:26:47Z")

</div>

It worked like a charm 🙂 Thanks Joaquim, you saved my day!
