3
$\begingroup$

In the past I have used the academic versions of Gurobi and Mosek for solving various optimization problems using various Python and Julia libraries that call the solvers.

However, I want to learn how to use freely available good solvers like HiGHS. From the documentation I cannot figure out how exactly one interfaces the solver to Python/Julia and the examples are not quite helpful.

Is there some tutorial on how to write/implement some simple LP problem using HiGHS?

$\endgroup$

2 Answers 2

4
$\begingroup$

On Python side, there are two alternatives beside scipy implementation.

You can use PuLP dev version as explained in question How to call HiGHS solver from python PuLP MIP?

There is also a Python package called highspy on pip but it is currently in pre-release mode so it does not show on google search (unfortunately no conveniently reachable documentation yet). Pip link here

On R side, there is a highs package.

$\endgroup$
6
$\begingroup$

To write and solve a problem in Julia, implement it using JuMP. I assume you already installed the JuMP and HiGHS package as both install like normal Julia packages.

using JuMP
using HiGHS
model = Model(HiGHS.Optimizer)

Now define your variables, constraints and the objective on that model. Then a simple optimize! call should do the rest.

JuMP.optimize!(model)

You might also want to change HiGHS solver options; for that, see the README in HiGHS.jl package.

$\endgroup$
2
  • $\begingroup$ Thanks, no this I know how to do this (although not sure yet how to choose which algoithm to implement e.g. simplex or IPMs etc). However, I am trying to understand what is the process that the documentation of HiGHS refers to: ergo-code.github.io/HiGHS/man/guide.html#Loading-a-model that is what are these (.lp, .mps) files? $\endgroup$
    – Marion
    Sep 28, 2022 at 0:27
  • $\begingroup$ That part of the HiGHS documentation is still under construction and isn't helpful. You don't need to explicitly load the model; JuMP does all of that for you. Take a look at any of the examples in the JuMP documentation that use HiGHS: jump.dev/JuMP.jl/stable/tutorials/linear/diet. You probably also don't need to change the algorithm; just use the default. $\endgroup$ Sep 28, 2022 at 7:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.