# Incorrect objective type when using MA57 with Ipopt in JuMP

**URL:** <https://discourse.julialang.org/t/incorrect-objective-type-when-using-ma57-with-ipopt-in-jump/90578>\
**Category:** Optimization (Mathematical)\
**Tags:** jump\
**Created:** [November 21, 2022, 8:09am UTC](https://discourse.julialang.org/t/incorrect-objective-type-when-using-ma57-with-ipopt-in-jump/90578 "2022-11-21T08:09:28Z")\
**Posts on this page:** 1\
**Showing post:** 8

<div class="post-metadata">

**Author:** ![amontoison](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/amontoison/32/218741_2.png) [@amontoison](https://discourse.julialang.org/u/amontoison)\
**Post date:** [November 23, 2022, 3:35am UTC](https://discourse.julialang.org/t/incorrect-objective-type-when-using-ma57-with-ipopt-in-jump/90578/8 "2022-11-23T03:35:01Z")

</div>

@this_josh  
`HSL_MA57` v"5.2.0" and v"5.3.2" work fine on my computer.

```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 https://github.com/coin-or/Ipopt
******************************************************************************

This is Ipopt version 3.14.4, running with linear solver ma57.

Number of nonzeros in equality constraint Jacobian...: 0
Number of nonzeros in inequality constraint Jacobian.: 0
Number of nonzeros in Lagrangian Hessian.............: 0

Total number of variables............................: 1608
                     variables with only lower bounds: 0
                variables with lower and upper bounds: 1608
                     variables with only upper bounds: 0
Total number of equality constraints.................: 0
Total number of inequality constraints...............: 0
        inequality constraints with only lower bounds: 0
   inequality constraints with lower and upper bounds: 0
        inequality constraints with only upper bounds: 0

iter objective inf_pr inf_du lg(mu) ||d|| lg(rg) alpha_du alpha_pr ls
   0 1.6079984e+01 0.00e+00 1.00e+00 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0
   1 1.5984682e+02 0.00e+00 1.11e-16 -1.0 8.98e-02 - 1.00e+00 1.00e+00f 1
   2 1.3153805e+01 0.00e+00 1.11e-16 -2.5 9.50e-02 - 9.31e-01 1.00e+00f 1
   3 2.6857598e-01 0.00e+00 7.16e-17 -3.8 1.90e-02 - 1.00e+00 1.00e+00f 1
   4 2.9613712e-03 0.00e+00 9.62e-17 -5.7 1.91e-04 - 1.00e+00 1.00e+00f 1
   5 -1.2048804e-05 0.00e+00 1.11e-16 -8.6 1.86e-06 - 1.00e+00 1.00e+00f 1

Number of Iterations....: 5

                                   (scaled) (unscaled)
Objective...............: -1.2048804298021919e-05 -1.2048804298021919e-05
Dual infeasibility......: 1.1065617247106498e-16 1.1065617247106498e-16
Constraint violation....: 0.0000000000000000e+00 0.0000000000000000e+00
Variable bound violation: 7.4937192784312844e-09 7.4937192784312844e-09
Complementarity.........: 2.5092975443155260e-09 2.5092975443155260e-09
Overall NLP error.......: 2.5092975443155260e-09 2.5092975443155260e-09

Number of objective function evaluations = 6
Number of objective gradient evaluations = 6
Number of equality constraint evaluations = 0
Number of inequality constraint evaluations = 0
Number of equality constraint Jacobian evaluations = 0
Number of inequality constraint Jacobian evaluations = 0
Number of Lagrangian Hessian evaluations = 1
Total seconds in IPOPT = 0.250

EXIT: Optimal Solution Found.

```

I tried `coinhsl` and Ipopt was not happy at runtime:

```julia
Exception of type: DYNAMIC_LIBRARY_FAILURE in file "Common/IpLibraryLoader.cpp" at line 67
Exception message: /home/alexis/Bureau/git/HSL.jl/deps/usr/lib/libcoinhsl.so: undefined symbol: dtrmm_

EXIT: Library loading failure.

```

I tested with the following code:

```julia
using HSL, Ipopt, JuMP

UB= rand(1:9, (67,24)) # not really necessary 
model = Model()
@variable(model, 0 ≤ x[i= 1:67, j=1:24] ≤ UB[i,j])
@objective(model, Min, sum(x[ii, jj] for ii in 1:67 for jj in 1:24))

opt = optimizer_with_attributes(Ipopt.Optimizer, "linear_solver" => "ma57", "hsllib" => HSL.libhsl_ma57)
# opt = optimizer_with_attributes(Ipopt.Optimizer, "linear_solver" => "ma57", "hsllib" => HSL.libcoinhsl)
set_optimizer(model, opt)
optimize!(model)

```

I checked what is inside the `coinhsl` archive and it’s an old version of MA57 (`v3.11.0`).

---

_[View the full topic](https://discourse.julialang.org/t/incorrect-objective-type-when-using-ma57-with-ipopt-in-jump/90578)._
