# JuMP with Ipopt - Error "The equality constraints contain an invalid number"

**URL:** <https://discourse.julialang.org/t/jump-with-ipopt-error-the-equality-constraints-contain-an-invalid-number/31004>\
**Category:** Optimization (Mathematical)\
**Created:** [November 12, 2019, 3:12pm UTC](https://discourse.julialang.org/t/jump-with-ipopt-error-the-equality-constraints-contain-an-invalid-number/31004 "2019-11-12T15:12:30Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![StarecZosima](https://avatars.discourse-cdn.com/v4/letter/s/45deac/32.png) [@StarecZosima](https://discourse.julialang.org/u/StarecZosima)\
**Post date:** [November 12, 2019, 3:12pm UTC](https://discourse.julialang.org/t/jump-with-ipopt-error-the-equality-constraints-contain-an-invalid-number/31004/1 "2019-11-12T15:12:30Z")

</div>

Hi there,

I am trying to solve the following system of nonlinear equations

```
      using JuMP, Ipopt
      c = Model(with_optimizer(Ipopt.Optimizer,max_cpu_time=500.0))
     @variable(c,x)
     @variable(c,y)
     @NLconstraint(c,(1/x)*(2+(0.5)/(x-y)-y^2) == 0) 
     @NLconstraint(c,(1/(x^2))*(-2*y -(0.5)*(y/(x-y))+(1/3)*y^3+0.5*log(x-y)) == 0)
     @NLconstraint(c, x >= y + 0.001) 
     optimize!(c) 

```

but I get an error message, “The equality constraints contain an invalid number”. I cannot understand what is being referred to.

Any hint would be most appreciated, thanks

---

<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:** [November 12, 2019, 3:25pm UTC](https://discourse.julialang.org/t/jump-with-ipopt-error-the-equality-constraints-contain-an-invalid-number/31004/2 "2019-11-12T15:25:59Z")

</div>

x is allowed to be 0, so you have a divide by zero error with 1/x.

Ipopt assumes that your model is differentiable over the domain.

---

<div class="post-metadata">

**Author:** ![StarecZosima](https://avatars.discourse-cdn.com/v4/letter/s/45deac/32.png) [@StarecZosima](https://discourse.julialang.org/u/StarecZosima)\
**Post date:** [November 12, 2019, 3:43pm UTC](https://discourse.julialang.org/t/jump-with-ipopt-error-the-equality-constraints-contain-an-invalid-number/31004/3 "2019-11-12T15:43:59Z")

</div>

Hi there,

thanks for that. I did think about that: in fact, adding one more constraint

```
                    @NLconstraint(c, x >= 0.001) 

```

does not improve things much, what I am missing? Ipopt assumes the model is differentiable everywhere, but can this be relaxed via NL constraints?  
Will read some more documentation.

Thanks again

---

<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:** [November 12, 2019, 4:06pm UTC](https://discourse.julialang.org/t/jump-with-ipopt-error-the-equality-constraints-contain-an-invalid-number/31004/4 "2019-11-12T16:06:28Z")

</div>

See [Some JuMP variables values are out of bounds - #7 by odow](https://discourse.julialang.org/t/some-jump-variables-values-are-out-of-bounds/26008/7)

---

<div class="post-metadata">

**Author:** ![StarecZosima](https://avatars.discourse-cdn.com/v4/letter/s/45deac/32.png) [@StarecZosima](https://discourse.julialang.org/u/StarecZosima)\
**Post date:** [November 12, 2019, 7:08pm UTC](https://discourse.julialang.org/t/jump-with-ipopt-error-the-equality-constraints-contain-an-invalid-number/31004/5 "2019-11-12T19:08:56Z")

</div>

Got it, working beatifully now, thanks a lot.

---

<div class="post-metadata">

**Author:** ![dpo](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dpo/32/3335_2.png) [@dpo](https://discourse.julialang.org/u/dpo)\
**Post date:** [November 12, 2019, 11:20pm UTC](https://discourse.julialang.org/t/jump-with-ipopt-error-the-equality-constraints-contain-an-invalid-number/31004/6 "2019-11-12T23:20:43Z")

</div>

> [@odow](#):
>
> Ipopt assumes that your model is differentiable over the domain.

In fact, IPOPT assumes everything is differentiable everywhere, not just on the feasible set. It’s an infeasible method.
