Incorrect objective type when using MA57 with Ipopt in JuMP

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

******************************************************************************
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:

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:

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).

2 Likes