Reference articles on history, science, culture and more
Encyclopedia

Geometric programming

Optimization problem

A geometric program (GP) is an optimization problem of the form

{\begin{array}{ll}{\mbox{minimize}}&f_{0}(x)\\{\mbox{subject to}}&f_{i}(x)\leq 1,\quad i=1,\ldots ,m\\&g_{i}(x)=1,\quad i=1,\ldots ,p,\end{array}}

where f_{0},\dots ,f_{m} are posynomials and g_{1},\dots ,g_{p} are monomials. In the context of geometric programming (unlike standard mathematics), a monomial is a function from \mathbb {R} _{++}^{n} to \mathbb {R} defined as

x\mapsto cx_{1}^{a_{1}}x_{2}^{a_{2}}\cdots x_{n}^{a_{n}}

where c>0\ and a_{i}\in \mathbb {R}. A posynomial is any sum of monomials.

Geometric programming is closely related to convex optimization: any GP can be made convex by means of a change of variables. GPs have numerous applications, including component sizing in IC design, aircraft design, maximum likelihood estimation for logistic regression in statistics, and parameter tuning of positive linear systems in control theory.

01Convex form

Geometric programs are not in general convex optimization problems, but they can be transformed to convex problems by a change of variables and a transformation of the objective and constraint functions. In particular, after performing the change of variables y_{i}=\log(x_{i}) and taking the log of the objective and constraint functions, the functions f_{i}, i.e., the posynomials, are transformed into log-sum-exp functions, which are convex, and the functions g_{i}, i.e., the monomials, become affine. Hence, this transformation transforms every GP into an equivalent convex program. In fact, this log-log transformation can be used to convert a larger class of problems, known as log-log convex programming (LLCP), into an equivalent convex form.

02Software

Several software packages exist to assist with formulating and solving geometric programs.

  • MOSEK is a commercial solver capable of solving geometric programs as well as other non-linear optimization problems.
  • CVXOPT is an open-source solver for convex optimization problems.
  • GPkit is a Python package for cleanly defining and manipulating geometric programming models. There are a number of example GP models written with this package here.
  • GGPLAB is a MATLAB toolbox for specifying and solving geometric programs (GPs) and generalized geometric programs (GGPs).
  • CVXPY is a Python-embedded modeling language for specifying and solving convex optimization problems, including GPs, GGPs, and LLCPs.
Watch videos about Geometric programmingExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Geometric programming, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.