# JuMP/Ipopt failing on simple problem

**URL:** <https://discourse.julialang.org/t/jump-ipopt-failing-on-simple-problem/13209>\
**Category:** Optimization (Mathematical)\
**Created:** [August 11, 2018, 12:12am UTC](https://discourse.julialang.org/t/jump-ipopt-failing-on-simple-problem/13209 "2018-08-11T00:12:50Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Arrigo\_Benedetti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/arrigo_benedetti/32/25545_2.png) [@Arrigo\_Benedetti](https://discourse.julialang.org/u/Arrigo_Benedetti)\
**Post date:** [August 11, 2018, 12:12am UTC](https://discourse.julialang.org/t/jump-ipopt-failing-on-simple-problem/13209/1 "2018-08-11T00:12:50Z")

</div>

In order to debug the issue that I mentioned in the thread [https://discourse.julialang.org/t/error-in-jump-nlexpression/13147](https://discourse.julialang.org/t/error-in-jump-nlexpression/13147) I decided to write a simple program to solve a constrained nonlinear optimization problem in order to get myself more familar with JuMP. This is the code:

```julia
using JuMP
using Ipopt

function Townsend(args...)
    x = args[1]
    y = args[2]
    
    return - cos((x-0.1)*y)^2 - x*(sin(3x+y))
end

function Constr(args...)
    x = args[1]
    y = args[2]
    
    t = atan2(y, x)
    
    return (2cos(t) - cos(2t) / 2 - cos(3t) / 4 - cos(4t) / 8)^2 + 2sin(t)^2 
end

m = Model(solver=IpoptSolver(print_level=1))
JuMP.register(m, :Townsend, 2, Townsend, autodiff=true)
JuMP.register(m, :Constr, 2, Constr, autodiff=true)

@variable(m, -2.25 <= x <= 2.5)
@variable(m, -2.5 <= y <= 1.75)

@NLconstraint(m, c1, x^2 + y^2 <= Constr(x,y))

@NLobjective(m, Min, Townsend(x,y))

solve(m)
println("x = ", getvalue(x))
println("y = ", getvalue(y))

```

Given all the discussions about the transition of JuMP from 0.18 to 0.19 and Julia from .6 to 0.7/1.0 I decided to stay with Julia 0.6.4 and JuMP 0.18. Under Windows 10 I am getting this error:

```julia
******************************************************************************
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
******************************************************************************

Please submit a bug report with steps to reproduce this fault, and any error messages that follow (in their entirety). Thanks.
Exception: EXCEPTION_ACCESS_VIOLATION at 0x684eb7bc -- dmumps_454_ at C:\Users\arbenede\.julia\v0.6\Ipopt\deps\usr\bin\libcoinmumps-1.dll (unknown line)
while loading C:\Users\arbenede\projects\julia\test_IPopt.jl, in expression starting on line 34
dmumps_454_ at C:\Users\arbenede\.julia\v0.6\Ipopt\deps\usr\bin\libcoinmumps-1.dll (unknown line)
dmumps_559_ at C:\Users\arbenede\.julia\v0.6\Ipopt\deps\usr\bin\libcoinmumps-1.dll (unknown line)
dmumps_203_ at C:\Users\arbenede\.julia\v0.6\Ipopt\deps\usr\bin\libcoinmumps-1.dll (unknown line)
dmumps_26_ at C:\Users\arbenede\.julia\v0.6\Ipopt\deps\usr\bin\libcoinmumps-1.dll (unknown line)
dmumps_ at C:\Users\arbenede\.julia\v0.6\Ipopt\deps\usr\bin\libcoinmumps-1.dll (unknown line)
dmumps_f77_ at C:\Users\arbenede\.julia\v0.6\Ipopt\deps\usr\bin\libcoinmumps-1.dll (unknown line)
dmumps_c at C:\Users\arbenede\.julia\v0.6\Ipopt\deps\usr\bin\libcoinmumps-1.dll (unknown line)
[...]

```

So I decided to run the same code under Ubuntu, with the same version of Julia, and there I am getting a different error:

```julia
******************************************************************************
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
******************************************************************************

  Internal error 2 in QAMD : Schur size expected: 0 Real: 1
 ** MPI_ABORT called
***Error in `/usr/local/julia-9d11f62bcb/bin/julia': free(): invalid next size (fast): 0x0000000004986d90***
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x777e5)[0x7fbe7254f7e5]
/lib/x86_64-linux-gnu/libc.so.6(+0x8037a)[0x7fbe7255837a]
/lib/x86_64-linux-gnu/libc.so.6(cfree+0x4c)[0x7fbe7255c53c]
/usr/local/julia-9d11f62bcb/bin/../lib/julia/libLLVM-3.9.so(_ZN4llvm15LLVMContextImplD1Ev+0x17a2)[0x7fbe70af3da2]
/usr/local/julia-9d11f62bcb/bin/../lib/julia/libLLVM-3.9.so(_ZN4llvm11LLVMContextD2Ev+0x14)[0x7fbe70aec384]
/lib/x86_64-linux-gnu/libc.so.6(__cxa_finalize+0x9a)[0x7fbe7251236a]
/usr/local/julia-9d11f62bcb/bin/../lib/libjulia.so.0.6(+0x2cdb3)[0x7fbe72ef7db3]

```

Should I try a different solver? Is there any combination of versions of Julia/JuMP with a nonlinear solver that is known to work under Windows or Linux?

Thanks much

-Arrigo

---

<div class="post-metadata">

**Author:** ![tkoolen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkoolen/32/1603_2.png) [@tkoolen](https://discourse.julialang.org/u/tkoolen)\
**Post date:** [August 11, 2018, 2:51am UTC](https://discourse.julialang.org/t/jump-ipopt-failing-on-simple-problem/13209/2 "2018-08-11T02:51:05Z")

</div>

I can reproduce this with JuMP version 0.18.2 and Ipopt version 0.4.0 under

```julia
julia> versioninfo()
Julia Version 0.6.4
Commit 9d11f62bcb (2018-07-09 19:09 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
  CPU: Intel(R) Core(TM) i7-6950X CPU @ 3.00GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell MAX_THREADS=16)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, broadwell)

```

OSX seems fine:

```julia
julia> versioninfo()
Julia Version 0.6.4
Commit 9d11f62bcb (2018-07-09 19:09 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin14.5.0)
  CPU: Intel(R) Core(TM) i7-3820QM CPU @ 2.70GHz
  WORD_SIZE: 64
  BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Sandybridge MAX_THREADS=16)
  LAPACK: libopenblas64_
  LIBM: libopenlibm
  LLVM: libLLVM-3.9.1 (ORCJIT, ivybridge)

```

This should work. Please open an issue over at [https://github.com/JuliaOpt/Ipopt.jl](https://github.com/JuliaOpt/Ipopt.jl).

Edit: full error on Linux: [https://gist.github.com/tkoolen/79071106c93e3c974cdb11f5a44269df](https://gist.github.com/tkoolen/79071106c93e3c974cdb11f5a44269df).

---

<div class="post-metadata">

**Author:** ![Arrigo\_Benedetti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/arrigo_benedetti/32/25545_2.png) [@Arrigo\_Benedetti](https://discourse.julialang.org/u/Arrigo_Benedetti)\
**Post date:** [August 14, 2018, 9:43pm UTC](https://discourse.julialang.org/t/jump-ipopt-failing-on-simple-problem/13209/3 "2018-08-14T21:43:25Z")

</div>

@tkoolen thanks for posting the Linux error log. I just created an Issue for the Windows error at [https://github.com/JuliaOpt/Ipopt.jl/issues/132](https://github.com/JuliaOpt/Ipopt.jl/issues/132)  
I am going to try to solve the same problem with Optim.jl and will report back

---

<div class="post-metadata">

**Author:** ![tkoolen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tkoolen/32/1603_2.png) [@tkoolen](https://discourse.julialang.org/u/tkoolen)\
**Post date:** [August 14, 2018, 9:57pm UTC](https://discourse.julialang.org/t/jump-ipopt-failing-on-simple-problem/13209/4 "2018-08-14T21:57:41Z")

</div>

So I just found that Ipopt is actually able to solve the problem in the issue description without segfaulting on Linux if you use

```julia
@variable(m, -2.25 <= x <= 2.5, start=1.0)
@variable(m, -2.5 <= y <= 1.75, start=1.0)

```

Edit: of course this is not a solution to the problem (it shouldn’t ever segfault), but maybe this will help solve the problem.

---

<div class="post-metadata">

**Author:** ![Arrigo\_Benedetti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/arrigo_benedetti/32/25545_2.png) [@Arrigo\_Benedetti](https://discourse.julialang.org/u/Arrigo_Benedetti)\
**Post date:** [August 14, 2018, 10:44pm UTC](https://discourse.julialang.org/t/jump-ipopt-failing-on-simple-problem/13209/5 "2018-08-14T22:44:38Z")

</div>

The same fix works for Windows. I will update the Ipopt issue.
