# ExaModels optimizer API for JuMP has convergence issue

**URL:** https://discourse.julialang.org/t/examodels-optimizer-api-for-jump-has-convergence-issue/126032
**Category:** Optimization (Mathematical)
**Tags:** ad
**Created:** [February 18, 2025, 3:06pm UTC](https://discourse.julialang.org/t/examodels-optimizer-api-for-jump-has-convergence-issue/126032 "2025-02-18T15:06:54Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![KSepetanc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ksepetanc/32/10841_2.png) [@KSepetanc](https://discourse.julialang.org/u/KSepetanc)
#### Post date: [February 18, 2025, 3:06pm UTC](https://discourse.julialang.org/t/examodels-optimizer-api-for-jump-has-convergence-issue/126032/1 "2025-02-18T15:06:54Z")

</div>

It is my understanding that convergence should not depend on selection of AD package. I have tested many AD options on the same model and only one option has different convergence (number of iterations and reported values of each iteration) different from the others. That is Examodels’s experimental JuMP API: `set_optimizer(pol, () -> ExaModels.IpoptOptimizer())`.

I tested:

1. 

> default JuMP

2. 

> JuMP with symbolic AD

3. 

> JuMP to ASL via AmplNLWriter

4. 

> ExaModel(JuMP.Model())

5. 

> set\_optimizer(pol, () → ExaModels.IpoptOptimizer())

6. 

> coding directly to ExaModels API

As said from above only option 5 differs from the others in terms of convergence. All option were run using Ipopt.jl, Ipopt\_jll.jl or NLPModelsIpopt.jl .

I think this issue should be posted on ExaModels github, but it is possible that the error is somewhere else.

I attach the sample code. To run it download `pglib_opf_case118_ieee.m` from [pglibopf](https://github.com/power-grid-lib/pglib-opf) and [mwe.jl](https://discourse.julialang.org/uploads/short-url/7OHcNtefEsmnCjFoAqvdqa2jwS1.jl) (4.5 KB)

The mwe implements options 1, 4 and 5. It uses JuMP, PowerModels, ExaModels, Ipopt, NLPModelsIpopt packages.

@sshin23 , @amontoison

---

<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: [February 18, 2025, 9:30pm UTC](https://discourse.julialang.org/t/examodels-optimizer-api-for-jump-has-convergence-issue/126032/2 "2025-02-18T21:30:50Z")

</div>

Do you have the log of the solve (5)?

Does it find the same optimal solution? If so, this might be expected behavior, not a bug. You’re using a different optimizer, so the order of variables/constraints might be different.

---

<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: [February 18, 2025, 9:31pm UTC](https://discourse.julialang.org/t/examodels-optimizer-api-for-jump-has-convergence-issue/126032/3 "2025-02-18T21:31:56Z")

</div>

> [@KSepetanc](#):
>
> It is my understanding that convergence should not depend on selection of AD package

Only 1 and 2 change the AD backend. 3, 4, 5, and 6 may have different orders for the variables and constraints. There is no strong guarantee that their iterates are identical.

---

<div class="post-metadata">

### Author: ![KSepetanc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ksepetanc/32/10841_2.png) [@KSepetanc](https://discourse.julialang.org/u/KSepetanc)
#### Post date: [February 18, 2025, 9:49pm UTC](https://discourse.julialang.org/t/examodels-optimizer-api-for-jump-has-convergence-issue/126032/4 "2025-02-18T21:49:56Z")

</div>

Sure I have logs.

Log of solve (5).

> This is Ipopt version 3.14.17, running with linear solver MUMPS 5.7.3.
> 
> Number of nonzeros in equality constraint Jacobian…: 6801  
> Number of nonzeros in inequality constraint Jacobian.: 1196  
> Number of nonzeros in Lagrangian Hessian…: 17108
> 
> Total number of variables…: 1088  
> variables with only lower bounds: 0  
> variables with lower and upper bounds: 0  
> variables with only upper bounds: 0  
> Total number of equality constraints…: 981  
> Total number of inequality constraints…: 824  
> inequality constraints with only lower bounds: 226  
> inequality constraints with lower and upper bounds: 0  
> inequality constraints with only upper bounds: 598
> 
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 0 0.0000000e+00 2.77e+00 2.31e+01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0  
> 1 8.1207678e+02 2.73e+00 2.27e+01 -1.0 1.32e+00 - 8.35e-03 1.45e-02h 1  
> 2 2.7966034e+03 2.66e+00 2.27e+01 -1.0 1.04e+01 - 5.46e-03 2.39e-02h 1  
> 3 1.0527326e+04 2.41e+00 2.36e+01 -1.0 9.64e+00 - 3.42e-02 9.43e-02h 1  
> 4 1.4982943e+04 2.27e+00 1.89e+01 -1.0 7.99e+00 - 2.93e-01 6.13e-02h 1  
> 5 3.2199961e+04 1.73e+00 1.44e+01 -1.0 7.68e+00 - 2.12e-01 2.36e-01h 1  
> 6 4.5447086e+04 1.35e+00 1.12e+01 -1.0 6.56e+00 - 4.84e-01 2.22e-01h 1  
> 7 6.0689844e+04 9.42e-01 2.25e+01 -1.0 6.81e+00 - 9.82e-01 3.00e-01h 1  
> 8 7.9915948e+04 4.44e-01 9.92e+00 -1.0 7.98e+00 - 5.05e-01 5.29e-01h 1  
> 9 8.6777586e+04 2.56e-01 8.24e+00 -1.0 1.44e+01 - 4.66e-01 4.23e-01h 1  
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 10 8.7677775e+04 2.30e-01 9.82e+01 -1.0 1.86e+01 - 9.39e-01 1.01e-01h 1  
> 11 9.3342442e+04 9.30e-02 5.33e+00 -1.0 1.52e+01 - 2.41e-01 5.96e-01h 1  
> 12 9.4261345e+04 7.27e-02 9.42e+01 -1.0 4.32e+00 - 5.41e-01 2.18e-01h 1  
> 13 9.7578950e+04 2.39e-02 1.34e+01 -1.0 2.07e+00 - 1.00e+00 9.72e-01h 1  
> 14 9.7587577e+04 2.18e-02 1.19e+04 -1.0 6.89e+00 - 1.00e+00 1.23e-01h 1  
> 15 9.7636335e+04 1.93e-02 9.58e+03 -1.0 6.14e+00 - 1.00e+00 6.48e-01h 1  
> 16 9.7655154e+04 9.00e-03 2.23e+04 -1.0 3.94e+00 - 1.00e+00 5.80e-01h 1  
> 17 9.7663706e+04 3.82e-03 5.09e+04 -1.0 1.78e+00 - 1.00e+00 5.90e-01h 1  
> 18 9.7667276e+04 1.57e-03 1.19e+05 -1.0 7.56e-01 - 1.00e+00 5.95e-01h 1  
> 19 9.7668765e+04 6.20e-04 2.68e+05 -1.0 3.12e-01 - 1.00e+00 6.08e-01h 1  
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 20 9.7669379e+04 2.24e-04 5.43e+05 -1.0 1.23e-01 - 1.00e+00 6.40e-01h 1  
> 21 9.7669630e+04 6.20e-05 8.11e+05 -1.0 4.46e-02 - 1.00e+00 7.24e-01h 1  
> 22 9.7669721e+04 2.91e-06 1.93e+05 -1.0 1.23e-02 - 1.00e+00 9.53e-01h 1  
> 23 9.7669725e+04 3.45e-11 1.00e-06 -1.0 5.78e-04 - 1.00e+00 1.00e+00f 1  
> 24 9.7482887e+04 3.59e-03 3.17e+01 -8.6 5.07e+00 - 7.78e-01 5.55e-01f 1  
> 25 9.7307258e+04 2.77e-03 2.74e+00 -8.6 2.45e+00 - 6.70e-01 7.24e-01f 1  
> 26 9.7247210e+04 1.94e-03 1.25e+01 -8.6 3.12e+00 - 6.94e-01 6.12e-01h 1  
> 27 9.7223396e+04 1.91e-03 7.70e+00 -8.6 1.75e+00 - 6.40e-01 6.18e-01h 1  
> 28 9.7216576e+04 1.03e-03 3.14e+01 -8.6 6.01e-01 - 7.66e-01 5.56e-01h 1  
> 29 9.7214726e+04 4.78e-04 3.02e+01 -8.6 1.93e-01 - 6.82e-01 5.39e-01h 1  
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 30 9.7213811e+04 1.38e-04 3.14e+01 -8.6 8.08e-02 - 9.17e-01 7.13e-01h 1  
> 31 9.7213603e+04 1.06e-05 1.30e+00 -8.6 1.80e-02 - 9.17e-01 9.45e-01h 1  
> 32 9.7213603e+04 4.08e+02 3.37e+11 -8.6 1.50e+58 - 3.10e-62 1.36e-57f 1  
> 33 9.7177579e+04 4.08e+02 3.37e+11 -8.6 5.16e+19 - 1.93e-10 4.49e-04F 1  
> 34 9.6551411e+04 4.02e+02 3.34e+11 -8.6 2.44e+02 - 4.49e-04 7.81e-03f 1  
> 35 9.6183976e+04 3.99e+02 3.33e+11 -8.6 2.39e+02 - 7.56e-03 4.77e-03f 1  
> 36 9.6183967e+04 3.99e+02 3.33e+11 -8.6 1.00e+21 - 6.64e-05 1.11e-07F 1  
> 37 9.5530590e+04 3.94e+02 3.30e+11 -8.6 2.37e+02 - 1.68e-02 8.68e-03f 1  
> 38 9.5530586e+04 3.94e+02 3.30e+11 -8.6 4.72e+02 - 2.03e-04 4.82e-08h 1  
> 39 9.5343252e+04 3.92e+02 3.29e+11 -8.6 4.50e+02 - 5.77e-06 2.59e-03f 1  
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 40 9.5307681e+04 3.92e+02 3.29e+11 -8.6 4.09e+02 - 9.67e-04 5.02e-04f 1  
> In iteration 40, 1 Slack too small, adjusting variable bound  
> 41 9.5307676e+04 3.92e+02 3.29e+11 -8.6 2.90e+02 - 6.15e-05 6.38e-08h 1  
> In iteration 41, 1 Slack too small, adjusting variable bound  
> 42 9.5278536e+04 3.92e+02 3.29e+11 -8.6 3.27e+02 -4.0 3.11e-07 4.15e-04f 1  
> 43r 9.5278536e+04 3.92e+02 1.00e+03 2.6 0.00e+00 - 0.00e+00 7.74e-60R 2  
> 44r 9.5282579e+04 3.91e+02 1.00e+03 2.6 3.84e+05 - 2.53e-06 4.99e-06f 1  
> 45r 9.5282214e+04 3.90e+02 9.99e+02 1.2 3.96e+05 - 6.48e-04 2.16e-05f 1  
> 46r 9.5243262e+04 3.33e+02 9.99e+02 1.2 1.88e+05 - 4.15e-04 3.15e-04f 1  
> 47 9.5242755e+04 3.33e+02 1.00e+02 -8.6 2.27e+02 - 1.21e-04 5.16e-05h 1  
> 48 9.5246426e+04 3.33e+02 1.00e+02 -8.6 5.78e+02 - 3.81e-05 1.74e-04h 1  
> In iteration 48, 1 Slack too small, adjusting variable bound  
> 49 9.5251586e+04 3.33e+02 1.00e+02 -8.6 6.90e+02 - 6.22e-04 2.04e-04h 1  
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 50 9.5533309e+04 3.31e+02 9.95e+01 -8.6 1.33e+02 - 4.38e-05 4.29e-03h 1  
> 51 9.5583356e+04 3.29e+02 9.91e+01 -8.6 3.05e+02 - 2.29e-03 4.11e-03h 1  
> 52 9.5676837e+04 2.91e+02 9.34e+01 -8.6 3.34e+02 - 6.01e-03 5.81e-02h 1  
> 53 9.5694217e+04 2.83e+02 9.21e+01 -8.6 2.78e+02 - 1.51e-01 1.35e-02h 1  
> 54 9.5434752e+04 2.63e+02 8.89e+01 -8.6 2.91e+02 - 1.46e-02 3.49e-02h 1  
> 55r 9.5434752e+04 2.63e+02 9.99e+02 2.5 0.00e+00 - 0.00e+00 1.81e-10R 2  
> 56r 9.4430375e+04 2.61e+02 9.99e+02 2.5 2.99e+10 - 1.52e-11 5.59e-11f 1  
> 57r 9.4369664e+04 2.58e+02 9.97e+02 1.1 2.98e+05 - 2.12e-03 1.34e-04f 1  
> 58 9.4368984e+04 2.58e+02 1.00e+02 -8.6 2.98e+02 - 2.62e-03 3.47e-06h 1  
> 59 9.4332710e+04 2.54e+02 9.94e+01 -8.6 2.88e+02 - 4.71e-02 6.33e-03h 1  
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 60 9.4444081e+04 2.31e+02 9.48e+01 -8.6 2.61e+02 - 8.60e-03 4.58e-02h 1  
> 61 9.4461441e+04 2.27e+02 9.40e+01 -8.6 2.26e+02 - 2.96e-01 8.97e-03h 1  
> 62 9.4666496e+04 1.88e+02 8.57e+01 -8.6 2.19e+02 - 8.61e-02 8.81e-02h 1  
> 63 9.5222408e+04 1.02e+02 6.37e+01 -8.6 1.61e+02 - 2.63e-01 2.57e-01h 1  
> 64 9.5225101e+04 1.02e+02 6.36e+01 -8.6 3.19e+01 - 6.98e-01 1.56e-03h 1  
> 65 9.5332684e+04 9.00e+01 5.99e+01 -8.6 3.15e+01 - 2.19e-01 5.77e-02h 1  
> 66 9.5968091e+04 3.63e+01 3.90e+01 -8.6 1.79e+01 - 2.21e-01 3.49e-01h 1  
> 67 9.6200485e+04 2.27e+01 3.16e+01 -8.6 4.23e+01 - 3.35e-01 1.91e-01h 1  
> 68 9.6664112e+04 4.35e+00 1.69e+01 -8.6 4.79e+01 - 7.93e-01 4.65e-01h 1  
> 69 9.7057474e+04 7.52e-01 4.69e+00 -8.6 4.42e+01 - 7.82e-01 7.22e-01h 1  
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 70 9.7200005e+04 6.41e-02 4.00e-01 -8.6 1.91e+01 - 8.71e-01 9.15e-01h 1  
> 71 9.7213190e+04 2.00e-03 1.25e-02 -8.6 2.20e+00 - 9.76e-01 9.69e-01h 1  
> 72 9.7213606e+04 1.75e-07 1.70e-04 -8.6 7.28e-02 - 9.96e-01 1.00e+00h 1  
> 73 9.7213606e+04 1.09e-08 4.94e-07 -8.6 9.86e-04 - 1.00e+00 1.00e+00h 1  
> 74 9.7213606e+04 1.97e-09 8.93e-08 -8.6 4.20e-04 - 1.00e+00 1.00e+00h 1  
> 75 9.7213606e+04 1.57e-10 7.11e-09 -8.6 1.19e-04 - 1.00e+00 1.00e+00h 1
> 
> Number of Iterations…: 75
> 
> ```
> (scaled) (unscaled)
> 
> ```
> 
> Objective…: 7.8032096224085831e+02 9.7213605897951071e+04  
> Dual infeasibility…: 7.1127946117074342e-09 8.8612307713728492e-07  
> Constraint violation…: 1.5679235340626541e-10 1.5679235340626541e-10  
> Variable bound violation: 0.0000000000000000e+00 0.0000000000000000e+00  
> Complementarity…: 6.2446510802511211e-09 7.7796839821197416e-07  
> Overall NLP error…: 7.1127946117074342e-09 8.8612307713728492e-07
> 
> Number of objective function evaluations = 83  
> Number of objective gradient evaluations = 73  
> Number of equality constraint evaluations = 83  
> Number of inequality constraint evaluations = 83  
> Number of equality constraint Jacobian evaluations = 78  
> Number of inequality constraint Jacobian evaluations = 78  
> Number of Lagrangian Hessian evaluations = 75  
> Total seconds in IPOPT = 0.223
> 
> EXIT: Optimal Solution Found.

Log of solve (1) and de-facto any other option.

> This is Ipopt version 3.14.17, running with linear solver MUMPS 5.7.3.
> 
> Number of nonzeros in equality constraint Jacobian…: 4622  
> Number of nonzeros in inequality constraint Jacobian.: 935  
> Number of nonzeros in Lagrangian Hessian…: 8198
> 
> Total number of variables…: 1088  
> variables with only lower bounds: 0  
> variables with lower and upper bounds: 0  
> variables with only upper bounds: 0  
> Total number of equality constraints…: 1016  
> Total number of inequality constraints…: 563  
> inequality constraints with only lower bounds: 0  
> inequality constraints with lower and upper bounds: 191  
> inequality constraints with only upper bounds: 372
> 
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 0 0.0000000e+00 2.77e+00 1.67e+01 -1.0 0.00e+00 - 0.00e+00 0.00e+00 0  
> 1 3.4102196e+04 2.01e+00 7.75e+01 -1.0 2.85e+00 - 3.60e-03 2.75e-01h 1  
> 2 3.4396654e+04 1.89e+00 7.28e+01 -1.0 7.59e+00 - 6.40e-02 5.97e-02h 1  
> 3 3.4273181e+04 1.83e+00 7.00e+01 -1.0 1.18e+01 - 2.65e-01 3.21e-02f 1  
> 4 4.7923352e+04 1.37e+00 5.26e+01 -1.0 6.87e+00 - 3.42e-01 2.48e-01h 1  
> 5 5.5468818e+04 1.14e+00 4.33e+01 -1.0 7.00e+00 - 4.36e-01 1.70e-01h 1  
> 6 6.8686236e+04 7.62e-01 3.63e+01 -1.0 7.75e+00 - 6.89e-01 3.32e-01h 1  
> 7 7.7086089e+04 5.31e-01 3.40e+01 -1.0 9.74e+00 - 9.91e-01 3.03e-01h 1  
> 8 8.9595963e+04 1.99e-01 1.38e+01 -1.0 1.16e+01 - 1.00e+00 6.25e-01h 1  
> 9 9.1042151e+04 1.49e-01 1.10e+01 -1.0 2.17e+01 - 5.17e-01 2.54e-01h 1  
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 10 9.3827870e+04 8.27e-02 6.96e+00 -1.0 1.10e+01 - 1.00e+00 4.44e-01h 1  
> 11 9.4967929e+04 5.76e-02 4.51e+00 -1.0 3.85e+00 - 6.22e-01 3.04e-01h 1  
> 12 9.7658526e+04 2.88e-02 8.41e-01 -1.0 1.91e+00 - 1.00e+00 1.00e+00h 1  
> 13 9.7652394e+04 3.39e-02 2.99e-01 -1.0 7.50e+00 - 1.00e+00 1.00e+00h 1  
> 14 9.7670711e+04 2.37e-03 3.64e-03 -1.0 5.10e-01 - 1.00e+00 1.00e+00h 1  
> 15 9.7484729e+04 4.77e-03 1.37e+00 -2.5 5.14e+00 - 8.01e-01 5.67e-01f 1  
> 16 9.7309501e+04 2.78e-03 3.29e-01 -2.5 2.42e+00 - 7.58e-01 7.59e-01f 1  
> 17 9.7248434e+04 1.93e-03 1.42e+00 -2.5 2.53e+00 - 1.00e+00 7.56e-01h 1  
> 18 9.7231030e+04 9.94e-04 1.18e-02 -2.5 8.76e-01 - 1.00e+00 1.00e+00h 1  
> 19 9.7232807e+04 2.71e-06 9.05e-05 -2.5 5.49e-02 - 1.00e+00 1.00e+00h 1  
> iter objective inf\_pr inf\_du lg(mu) ||d|| lg(rg) alpha\_du alpha\_pr ls  
> 20 9.7219146e+04 2.35e-04 1.79e-01 -3.8 6.17e-01 - 8.60e-01 7.15e-01f 1  
> 21 9.7214360e+04 6.77e-05 1.46e-01 -3.8 1.63e-01 - 8.71e-01 1.00e+00h 1  
> 22 9.7214570e+04 4.67e-06 6.00e-05 -3.8 2.48e-02 - 1.00e+00 1.00e+00h 1  
> 23 9.7213706e+04 6.33e-06 3.50e-03 -5.7 2.92e-02 - 9.21e-01 9.08e-01h 1  
> 24 9.7213619e+04 7.26e-07 2.56e-05 -5.7 7.28e-03 - 1.00e+00 1.00e+00h 1  
> 25 9.7213619e+04 1.13e-07 5.11e-06 -5.7 3.18e-03 - 1.00e+00 1.00e+00h 1  
> 26 9.7213607e+04 4.77e-08 3.77e-05 -8.6 2.04e-03 - 9.88e-01 1.00e+00h 1  
> 27 9.7213607e+04 1.05e-08 4.77e-07 -8.6 9.71e-04 - 1.00e+00 1.00e+00h 1  
> 28 9.7213607e+04 1.93e-09 8.77e-08 -8.6 4.16e-04 - 1.00e+00 1.00e+00h 1  
> 29 9.7213607e+04 1.52e-10 6.90e-09 -8.6 1.17e-04 - 1.00e+00 1.00e+00h 1
> 
> Number of Iterations…: 29
> 
> ```
> (scaled) (unscaled)
> 
> ```
> 
> Objective…: 7.8032097059690670e+02 9.7213606938960656e+04  
> Dual infeasibility…: 6.9015999706667952e-09 8.5981211844802349e-07  
> Constraint violation…: 1.5211886958410581e-10 1.5211886958410581e-10  
> Variable bound violation: 0.0000000000000000e+00 0.0000000000000000e+00  
> Complementarity…: 6.1335000046158638e-09 7.6412102336905156e-07  
> Overall NLP error…: 6.9015999706667952e-09 8.5981211844802349e-07
> 
> Number of objective function evaluations = 30  
> Number of objective gradient evaluations = 30  
> Number of equality constraint evaluations = 30  
> Number of inequality constraint evaluations = 30  
> Number of equality constraint Jacobian evaluations = 30  
> Number of inequality constraint Jacobian evaluations = 30  
> Number of Lagrangian Hessian evaluations = 29  
> Total seconds in IPOPT = 1.311
> 
> EXIT: Optimal Solution Found.

Solve (5) does have the same solution but takes much more iterations to solve and runs into convergence issues (small slacks). Considering that all other options have basically identical iterates (not only the number of iterations, but also in every iteration the same numbers) for any power network I tested, I am convinced something is wrong here.

---

<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: [February 18, 2025, 11:38pm UTC](https://discourse.julialang.org/t/examodels-optimizer-api-for-jump-has-convergence-issue/126032/5 "2025-02-18T23:38:15Z")

</div>

(5) has

```julia
Total number of variables…: 1088
variables with only lower bounds: 0
variables with lower and upper bounds: 0
variables with only upper bounds: 0
Total number of equality constraints…: 981
Total number of inequality constraints…: 824
inequality constraints with only lower bounds: 226
inequality constraints with lower and upper bounds: 0
inequality constraints with only upper bounds: 598

```

(1) has

```julia
Total number of variables…: 1088
variables with only lower bounds: 0
variables with lower and upper bounds: 0
variables with only upper bounds: 0
Total number of equality constraints…: 1016
Total number of inequality constraints…: 563
inequality constraints with only lower bounds: 0
inequality constraints with lower and upper bounds: 191
inequality constraints with only upper bounds: 372

```

They don’t appear to be solving the same model.

> That is Examodels’s experimental JuMP AP

Open a bug report in ExaModels.jl. It looks like the “experimental” part is true.

---

<div class="post-metadata">

### Author: ![KSepetanc](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ksepetanc/32/10841_2.png) [@KSepetanc](https://discourse.julialang.org/u/KSepetanc)
#### Post date: [February 19, 2025, 12:30am UTC](https://discourse.julialang.org/t/examodels-optimizer-api-for-jump-has-convergence-issue/126032/6 "2025-02-19T00:30:18Z")

</div>

Opened bug report [#130](https://github.com/exanauts/ExaModels.jl/issues/130).
