HiGHS - High Performance Optimization Software

Build Status

This HiGHS documentation is work in progress

HiGHS is software for the definition, modification and solution of large scale sparse linear optimization models. It is freely available from GitHub under the MIT licence, and has no third-party dependencies.

Specification

HiGHS can solve linear programming (LP) models of the form

\[\textrm{minimize} \qquad c^Tx \qquad \textrm{subject to} \qquad L \le Ax \le U; \qquad l \le x \le u.\]

and mixed integer programming (MIP) models of the same form, for which some of the variables must take integer values. HiGHS also solves quadratic programming (QP) models, with (additional) objective term $(1/2)x^TQx$, where the Hessian matrix $Q$ is positive semi-definite. It cannot solve QP models where some of the variables must take integer values.

More on the Terminology of optimization is available.

Using HiGHS

HiGHS can be used as a standalone executable on Windows, Linux and MacOS. There is also a C++11 library that can be used within a C++ project or, via its C, C#, FORTRAN, Julia and Python interfaces.

The executable and libraries can be built from source code, or downloaded as precompiled [Binaries]@ref).

Building HiGHS from source code requires a C++ compiler and CMake, but no other third-party utilities.

Overview

The standalone Executable allows models to be solved from MPS files or (CPLEX) LP files, with full control of- the HiGHS run-time options, and the solution can be written to files in human and computer-readable formats.

The HiGHS library allows models to be loaded, built and modified. It can also be used to extract solution data and perform other operations relating to the incumbent model. The full functionality is introduced via a Guide, with links to examples of its use in Python. This makes use of the C++ structures and enums, and is as close as possible to the native C++ library calls. These can be studied via the C++ header file. The C interface cannot make use of the C++ structures and enums, and can be studied via the C header file.

Solvers

For LPs, HiGHS has implementations of both the revised simplex and interior point methods. MIPs are solved by branch-and-price, and QPs by active set.

Reference

If you use HiGHS in an academic context, please acknowledge this and cite the following article.

Parallelizing the dual revised simplex method, Q. Huangfu and J. A. J. Hall, Mathematical Programming Computation, 10 (1), 119-142, 2018. DOI: 10.1007/s12532-017-0130-5

Performance

The performance of HiGHS relative to some commercial and open-source simplex solvers may be assessed via the Mittelmann benchmarks.

Feedback

Your comments or specific questions on HiGHS would be greatly appreciated, so please send an email to highsopt@gmail.com to get in touch with the team.