# Issue with Interior point method for HiGHS

**URL:** <https://discourse.julialang.org/t/issue-with-interior-point-method-for-highs/88814>\
**Category:** Optimization (Mathematical)\
**Tags:** jump\
**Created:** [October 16, 2022, 9:24pm UTC](https://discourse.julialang.org/t/issue-with-interior-point-method-for-highs/88814 "2022-10-16T21:24:20Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![adow031](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/adow031/32/16403_2.png) [@adow031](https://discourse.julialang.org/u/adow031)\
**Post date:** [October 16, 2022, 9:24pm UTC](https://discourse.julialang.org/t/issue-with-interior-point-method-for-highs/88814/1 "2022-10-16T21:24:20Z")

</div>

I’m using JuMP, and have just started testing out the HiGHS optimizer, and I’ve encounted a strange issue with the interior point method.

For a small model, the HiGHS optimizer toggles between returning the optimal solution and returning ‘infeasible’. This appears to be related to whether presolve is used (if presolve is forced to be ‘off’, the result is always infeasible). Is the interior point method in HiGHS still under development, and not ready for general use?

```julia
model = read_from_file("fail.mps")
set_optimizer(model,optimizer_with_attributes(HiGHS.Optimizer,
    "solver" => "ipm", "output_flag" => true))

for i in 1:4
    @info("Attempt $i")
    optimize!(model)
    println(termination_status(model))
end

```

```julia
[ Info: Attempt 1
Presolving model
0 rows, 0 cols, 0 nonzeros
0 rows, 0 cols, 0 nonzeros
Presolve : Reductions: rows 0(-38); columns 0(-38); elements 0(-70) - Reduced to empty
Solving the original LP from the solution after postsolve
Model status : Optimal
Objective value : 6.2875000000e+01
HiGHS run time : 0.01
OPTIMAL
[ Info: Attempt 2
Solving LP without presolve or with basis
IPX model has 38 rows, 38 columns and 70 nonzeros
Input
    Number of variables: 38
    Number of free variables: 8
    Number of constraints: 38
    Number of equality constraints: 38
    Number of matrix entries: 70
    Matrix range: [2e-01, 1e+02]
    RHS range: [1e+00, 2e+00]
    Objective range: [1e-01, 1e-01]
    Bounds range: [1e+00, 2e+00]
Preprocessing
    Dualized model: no
    Number of dense columns: 0
    Range of scaling factors: [2.50e-01, 2.00e+00]
IPX version 1.0
Interior Point Solve
 Iter P.res D.res P.obj D.obj mu Time
   0 6.09e+00 2.49e-01 1.18016444e-01 -4.22655591e+01 9.89e+00 0s
   1 2.07e+00 1.83e-01 2.47301107e-02 -3.16192108e+00 3.35e+00 0s
   2 2.00e+00 2.09e+00 1.34352352e+00 5.28801748e+02 3.54e+00 0s
 Constructing starting basis...
Summary
    Runtime: 0.01s
    Status interior point solve: primal infeas
    Status crossover: not run
WARNING: Ipx: IPM primal infeasible
WARNING: Ipx: Crossover not run
Model status : Infeasible
IPM iterations: 2
Objective value : 1.3435235189e+00
HiGHS run time : 0.04
INFEASIBLE
[ Info: Attempt 3
Presolving model
0 rows, 0 cols, 0 nonzeros
0 rows, 0 cols, 0 nonzeros
Presolve : Reductions: rows 0(-38); columns 0(-38); elements 0(-70) - Reduced to empty
Solving the original LP from the solution after postsolve
Model status : Optimal
Objective value : 6.2875000000e+01
HiGHS run time : 0.05
OPTIMAL
[ Info: Attempt 4
Solving LP without presolve or with basis
IPX model has 38 rows, 38 columns and 70 nonzeros
Input
    Number of variables: 38
    Number of free variables: 8
    Number of constraints: 38
    Number of equality constraints: 38
    Number of matrix entries: 70
    Matrix range: [2e-01, 1e+02]
    RHS range: [1e+00, 2e+00]
    Objective range: [1e-01, 1e-01]
    Bounds range: [1e+00, 2e+00]
Preprocessing
    Dualized model: no
    Number of dense columns: 0
    Range of scaling factors: [2.50e-01, 2.00e+00]
IPX version 1.0
Interior Point Solve
 Iter P.res D.res P.obj D.obj mu Time
   0 6.09e+00 2.49e-01 1.18016444e-01 -4.22655591e+01 9.89e+00 0s
   1 2.07e+00 1.83e-01 2.47301107e-02 -3.16192108e+00 3.35e+00 0s
   2 2.00e+00 2.09e+00 1.34352352e+00 5.28801748e+02 3.54e+00 0s
 Constructing starting basis...
Summary
    Runtime: 0.01s
    Status interior point solve: primal infeas
    Status crossover: not run
WARNING: Ipx: IPM primal infeasible
WARNING: Ipx: Crossover not run
Model status : Infeasible
IPM iterations: 2
Objective value : 1.3435235189e+00
HiGHS run time : 0.07
INFEASIBLE

```

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:** [October 16, 2022, 9:56pm UTC](https://discourse.julialang.org/t/issue-with-interior-point-method-for-highs/88814/2 "2022-10-16T21:56:45Z")

</div>

I reported a number of bugs like this. They should be fixed in the next release.

But also, yes, the IPM is less mature. Julian is getting some funding to improve it.

---

<div class="post-metadata">

**Author:** ![WalterMadelim](https://avatars.discourse-cdn.com/v4/letter/w/3e96dc/32.png) [@WalterMadelim](https://discourse.julialang.org/u/WalterMadelim)\
**Post date:** [April 16, 2025, 2:03am UTC](https://discourse.julialang.org/t/issue-with-interior-point-method-for-highs/88814/3 "2025-04-16T02:03:55Z")

</div>

is there an improvement now? about IPM of HiGHS.

---

<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:** [April 16, 2025, 3:08am UTC](https://discourse.julialang.org/t/issue-with-interior-point-method-for-highs/88814/4 "2025-04-16T03:08:32Z")

</div>

There have been a large number of improvements to HiGHS in the last 2.5 years: [Comparing v1.3.0...v1.10.0 · ERGO-Code/HiGHS · GitHub](https://github.com/ERGO-Code/HiGHS/compare/v1.3.0...v1.10.0)

If you have a reproducible example of a bug in the latest release, please open an issue.
