Content deleted Content added
→top: Added reference to ability to run first order LP solver on GPUs Tags: Mobile edit Mobile app edit Android app edit App section source |
→Mixed integer programming: Added a link to the branch and cut method Tags: Mobile edit Mobile web edit |
||
(5 intermediate revisions by 2 users not shown) | |||
Line 3:
{{use British English|date=March 2022}}
{{use dmy dates|date=March 2022}}
{{infobox software▼
| title = HiGHS▼
| repo = {{url|https://github.com/ERGO-Code/HiGHS}}▼
| website = {{url|https://ergo-code.github.io/HiGHS}}▼
| programming language = [[C++]]▼
| license = [[MIT License|MIT]]▼
| genre = Optimization solver suite▼
| latest_release_version = 1.10.0▼
}}▼
{{infobox organization
Line 32 ⟶ 22:
* Ivet Galabova
}}
| num_staff =
| budget =
| website = {{url|https://www.highs.dev}}
▲}}
▲{{infobox software
▲ | title = HiGHS
▲ | repo = {{url|https://github.com/ERGO-Code/HiGHS}}
▲ | website = {{url|https://ergo-code.github.io/HiGHS}}
▲ | programming language = [[C++]]
▲ | license = [[MIT License|MIT]]
▲ | genre = Optimization solver suite
▲ | latest_release_version = 1.10.0
}}
'''HiGHS''' is open-source software to solve [[linear programming]] (LP), [[Integer programming|mixed-integer programming]] (MIP), and convex [[quadratic programming]] (QP) models.<ref name="hall-2020"/>
Written in [[C++]] and published under an [[MIT License|MIT]] license, HiGHS provides programming interfaces to [[C (programming language)|C]], [[Python (programming language)|Python]], [[Julia (programming language)|Julia]], [[Rust (programming language)|Rust]], [[R (programming language)|R]], [[JavaScript]], [[Fortran]], and [[C Sharp (programming language)|C#]]. It has no external dependencies. A{{nbsp}}convenient thin wrapper to Python is available via the {{url|https://pypi.org/project/highspy/|highspy}} [[Python Package Index|PyPI]] package. HiGHS is also callable via
{{cite web
| title = Highs.Native
| url = https://nuget.org/packages/Highs.Native/
| access-date = 2025-05-13
}}
</ref>
Although generally single-threaded, some solver components can utilize multi-core architectures and, from {{URL|https://github.com/ERGO-Code/HiGHS/releases/tag/v1.10.0|Version 1.10.0}}, can run its first order LP solver on NVIDIA GPUs. HiGHS is designed to solve large-scale models and exploits [[sparse matrix|problem sparsity]]. Its performance relative to commercial and other open-source software is reviewed periodically using industry-standard [[Benchmark (computing)|benchmarks]].<ref name="mittelmann-benchmarks"/>
Line 47 ⟶ 53:
== History ==
HiGHS is based on solvers written by PhD students from the Optimization and Operational Research Group{{nnbsp}}<ref name="uoe-som-oor"/> 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.<ref
{{ | | title = Presolve, crash and software engineering for HiGHS
| type = PhD
| date = 2022
| publisher = The University of Edinburgh
| ___location = Edinburgh, United Kingdom
| url = https://era.ed.ac.uk/bitstream/handle/1842/39725/GalabovaI_2022.pdf
| access-date = 2025-05-13
}}
</ref> Since then, a C++{{nbsp}}[[application programming interface|API]] and other language interfaces have been developed, and modelling utilities and other categories of solver have been added.
In early{{nbhyph}}2022, the [[open energy system models#GenX|GenX]] and [[open energy system models#PyPSA|PyPSA]] open energy system modelling projects endorsed a funding application for the HiGHS solver in an effort to reduce their [[Open Energy Modelling Initiative|community]] reliance on proprietary libraries.<ref name="parzen-etal-2022"/> That appeal resulted in {{
== Solvers ==
Line 63 ⟶ 80:
=== Mixed integer programming ===
HiGHS has a [[branch and cut|branch-and-cut]] solver for MIP problems. Its performance relative to commercial and other open-source software is regularly reported using industry-standard benchmarks.<ref name="mittelmann-mip"/>
=== Quadratic programming ===
|