Stable release | 1.7.2 |
---|---|
Repository | github |
Written in | C++ |
Type | Optimization solver suite |
License | MIT |
Website | ergo-code |
Headquarters | Edinburgh |
---|---|
Location |
|
Director | Julian Hall |
Key people |
|
Staff | 5 |
Website | www |
HiGHS is open-source software to solve linear programming (LP), mixed-integer programming (MIP), and convex quadratic programming (QP) models. [1]
Written in C++ and published under an MIT license, HiGHS provides programming interfaces to C, Python, Julia, Rust, JavaScript, Fortran, and C#. It has no external dependencies. A convenient thin wrapper to Python is available via the highspy PyPI package.
Although generally single-threaded, some solver components can utilize multi-core architectures. HiGHS is designed to solve large-scale models and exploits problem sparsity. Its performance relative to commercial and other open-source software is reviewed periodically using industry-standard benchmarks. [2]
The term HiGHS may also refer to both the underlying project and the small team leading the software development.
HiGHS is based on solvers written by PhD students from the Optimization and Operational Research Group [3] in the School of Mathematics at the University of Edinburgh. Its origins can be traced back to late 2016, when Ivet Galabova combined her LP presolve with Julian Hall's simplex crash procedure and Huangfu Qi's dual simplex solver to solve a class of industrial LP problems faster than the best open-source solvers at that time. Since then, a C++ API and other language interfaces have been developed, and modelling utilities and other categories of solver have been added.
In early‑2022, the GenX and PyPSA open energy system modelling projects endorsed a funding application for the HiGHS solver in an effort to reduce their community reliance on proprietary libraries. [4] That appeal resulted in CAN$76000 in funding from Invenia Labs, Cambridge, United Kingdom in July 2022. [5]
HiGHS has implementations of the primal and dual revised simplex method for solving LP problems, based on techniques described by Hall and McKinnon (2005), [6] and Huangfu and Hall (2015, 2018). [7] [8] These include the exploitation of hyper-sparsity when solving linear systems in the simplex implementations and, for the dual simplex solver, exploitation of multi-threading. The simplex solver's performance relative to commercial and other open-source software is regularly reported using industry-standard benchmarks. [9]
HiGHS has an interior point method implementation for solving LP problems, based on techniques described by Schork and Gondzio (2020). [10] It is notable for solving the Newton system iteratively by a preconditioned conjugate gradient method, rather than directly, via an LDL* decomposition. The interior point solver's performance relative to commercial and other open-source software is regularly reported using industry-standard benchmarks. [11]
HiGHS has a branch-and-cut solver for MIP problems. Its performance relative to commercial and other open-source software is regularly reported using industry-standard benchmarks. [12]
HiGHS has an active set solver for convex quadratic programming (QP) problems.
HiGHS can be used as a stand‑alone solver library in bespoke applications, but numerical computing environments, optimization programming packages, and domain‑specific numerical analysis projects are starting to incorporate the software into their systems also.
As powerful open‑source software under active development, HiGHS is increasingly being adopted by application software projects that provide support for numerical analysis. The SciPy scientific library, for instance, uses HiGHS as its LP solver [13] from release 1.6.0 [14] and the HiGHS MIP solver for discrete optimization from release 1.9.0. [15] As well as offering an interface to HiGHS, the JuMP modelling language for Julia [16] also describes the specific use of HiGHS in its user documentation. [17] The MIP solver in the NAG library is based on HiGHS , [18] and HiGHS is the default LP and MIP solver in the MathWorks Optimization Toolbox . [19]
HiGHS is now also used by some domain‑specific applications, including one open energy system modeling environment. The web‑based version of the PyPSA European multi‑sector model deploys the HiGHS solver by default from February 2022. [20] [21] The GridCal project developing research‑oriented power systems software added optional support for HiGHS in February 2022. [22]
Linear programming (LP), also called linear optimization, is a method to achieve the best outcome in a mathematical model whose requirements and objective are represented by linear relationships. Linear programming is a special case of mathematical programming.
SciPy is a free and open-source Python library used for scientific computing and technical computing.
The GNU Linear Programming Kit (GLPK) is a software package intended for solving large-scale linear programming (LP), mixed integer programming (MIP), and other related problems. It is a set of routines written in ANSI C and organized in the form of a callable library. The package is part of the GNU Project and is released under the GNU General Public License.
Computational science, also known as scientific computing, technical computing or scientific computation (SC), is a division of science that uses advanced computing capabilities to understand and solve complex physical problems. This includes
IBM ILOG CPLEX Optimization Studio is an optimization software package.
Computational Engineering is an emerging discipline that deals with the development and application of computational models for engineering, known as Computational Engineering Models or CEM. Computational engineering uses computers to solve engineering design problems important to a variety of industries. At this time, various different approaches are summarized under the term Computational Engineering, including using computational geometry and virtual design for engineering tasks, often coupled with a simulation-driven approach In Computational Engineering, algorithms solve mathematical and logical models that describe engineering challenges, sometimes coupled with some aspect of AI, specifically Reinforcement Learning.
Computational Infrastructure for Operations Research (COIN-OR), is a project that aims to "create for mathematical software what the open literature is for mathematical theory." The open literature provides the operations research (OR) community with a peer-review process and an archive. Papers in operations research journals on mathematical theory often contain supporting numerical results from computational studies. The software implementations, models, and data used to produce the numerical results are typically not published. The status quo impeded researchers needing to reproduce computational results, make fair comparisons, and extend the state of the art.
BARON is a computational system for solving non-convex optimization problems to global optimality. Purely continuous, purely integer, and mixed-integer nonlinear problems can be solved by the solver. Linear programming (LP), nonlinear programming (NLP), mixed integer programming (MIP), and mixed integer nonlinear programming (MINLP) are supported. In a comparison of different solvers, BARON solved the most benchmark problems and required the least amount of time per problem.
Open energy system models are energy system models that are open source. However, some of them may use third party proprietary software as part of their workflows to input, process, or output data. Preferably, these models use open data, which facilitates open science.
APOPT is a software package for solving large-scale optimization problems of any of these forms:
SAMPL, which stands for "Stochastic AMPL", is an algebraic modeling language resulting by expanding the well-known language AMPL with extended syntax and keywords. It is designed specifically for representing stochastic programming problems and, through recent extensions, problems with chance constraints, integrated chance constraints and robust optimization problems. It can generate the deterministic equivalent version of the instances, using all the solvers AMPL connects to, or generate an SMPS representation and use specialized decomposition based solvers, like FortSP.
The FICO Xpress optimizer is a commercial optimization solver for linear programming (LP), mixed integer linear programming (MILP), convex quadratic programming (QP), convex quadratically constrained quadratic programming (QCQP), second-order cone programming (SOCP) and their mixed integer counterparts. Xpress includes a general purpose non-linear solver, Xpress NonLinear, including a successive linear programming algorithm, and Artelys Knitro.
Symbolic regression (SR) is a type of regression analysis that searches the space of mathematical expressions to find the model that best fits a given dataset, both in terms of accuracy and simplicity.
Pyomo is a collection of Python software packages for formulating optimization models.
JuMP is an algebraic modeling language and a collection of supporting packages for mathematical optimization embedded in the Julia programming language. JuMP is used by companies, government agencies, academic institutions, software projects, and individuals to formulate and submit optimization problems to third‑party solvers. JuMP has been specifically applied to problems in the field of operations research.
Artelys Knitro is a commercial software package for solving large scale nonlinear mathematical optimization problems.
SolverStudio is a free Excel plug-in developed at the University of Auckland that supports optimization and simulation modelling in a spreadsheet using an algebraic modeling language. It is popular in education, the public sector and industry for optimization users because it uses industry-standard modelling languages and is faster than traditional Excel optimisation approaches.