The GNU Linear Programming Kit (GLPK) is a
software package
Software package may refer to:
* Package (package management system), in which individual files or resources are packed together as a software collection that provides certain functionality as part of a larger system
* Software suite, which provid ...
intended for solving large-scale
linear programming
Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear function#As a polynomial function, li ...
(LP),
mixed integer programming
Linear programming (LP), also called linear optimization, is a method to achieve the best outcome (such as maximum profit or lowest cost) in a mathematical model whose requirements are represented by linear relationships. Linear programming is ...
(MIP), and other related problems. It is a set of routines written in
ANSI C
ANSI C, ISO C, and Standard C are successive standards for the C programming language published by the American National Standards Institute (ANSI) and ISO/IEC JTC 1/SC 22/WG 14 of the International Organization for Standardization (ISO) and the ...
and organized in the form of a callable
library
A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
. The package is part of the
GNU Project
The GNU Project () is a free software, mass collaboration project announced by Richard Stallman on September 27, 1983. Its goal is to give computer users freedom and control in their use of their computers and computing devices by collaborati ...
and is released under the
GNU General Public License
The GNU General Public License (GNU GPL or simply GPL) is a series of widely used free software licenses that guarantee end users the Four Freedoms (Free software), four freedoms to run, study, share, and modify the software. The license was th ...
.
Problems can be modeled in the language GNU MathProg (previously known as GMPL) which shares many parts of the syntax with
AMPL
AMPL (A Mathematical Programming Language) is an algebraic modeling language to describe and solve high-complexity problems for large-scale mathematical computing (i.e., large-scale optimization and scheduling-type problems).
It was developed b ...
and solved with standalone solver GLPSOL.
GLPK can also be used as a
C library
A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
.
GLPK uses the
revised simplex method and the primal-dual
interior point method
Interior-point methods (also referred to as barrier methods or IPMs) are a certain class of algorithms that solve linear and nonlinear convex optimization problems.
An interior point method was discovered by Soviet mathematician I. I. Dikin in 1 ...
for non-integer problems and the
branch-and-bound
Branch and bound (BB, B&B, or BnB) is an algorithm design paradigm for discrete and combinatorial optimization problems, as well as mathematical optimization. A branch-and-bound algorithm consists of a systematic enumeration of candidate solutio ...
algorithm together with
Gomory's mixed integer cuts for (mixed) integer problems.
GLPK is supported in the free edition of the
OptimJ
OptimJ is an extension for Java with language support for writing optimization models and abstractions for bulk data processing. The extensions and the proprietary product implementing the extensions were developed by Ateji which went out of busine ...
modeling system
An independent project provides a
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
-based interface to GLPK (via JNI).
This allows Java applications to call out to GLPK in a relatively transparent manner.
History
GLPK was developed by Andrew O. Makhorin (Андрей Олегович Махорин) of the
Moscow Aviation Institute
Moscow Aviation Institute (National Research University) (MAI; russian: Московский авиационный институт, МАИ) is one of the major engineering institutes in Moscow, Russia. Since its inception MAI has been spearhe ...
. The first public release was in October 2000.
* Version 1.1.1 contained a library for a revised primal and dual simplex algorithm.
* Version 2.0 introduced an implementation of the primal-dual interior point method.
* Version 2.2 added branch and bound solving of mixed integer problems.
* Version 2.4 added a first implementation of the GLPK/L modeling language.
* Version 4.0 replaced GLPK/L by the GNU MathProg modeling language, which is a subset of the
AMPL
AMPL (A Mathematical Programming Language) is an algebraic modeling language to describe and solve high-complexity problems for large-scale mathematical computing (i.e., large-scale optimization and scheduling-type problems).
It was developed b ...
modeling language.
References
Further reading
* The book uses GLPK exclusively and contains numerous examples.
External links
GLPK official site*
GLPK Wikibook
{{Mathematical optimization software
Linear Programming Kit
Mathematical optimization software
Free mathematics software
Free software programmed in C
Mathematics software for Linux