A geometric program (GP) is an optimization problem of the form
where f 0 , … , f m {\displaystyle f_{0},\dots ,f_{m}} are posynomials and g 1 , … , g p {\displaystyle g_{1},\dots ,g_{p}} are monomials. In the context of geometric programming (unlike standard mathematics), a monomial is a function from R + + n {\displaystyle \mathbb {R} _{++}^{n}} to R {\displaystyle \mathbb {R} } defined as
where c > 0 {\displaystyle c>0\ } and a i ∈ R {\displaystyle a_{i}\in \mathbb {R} } . A posynomial is any sum of monomials.[1][2]
Geometric programming is closely related to convex optimization: any GP can be made convex by means of a change of variables.[2] GPs have numerous applications, including component sizing in IC design,[3][4] aircraft design,[5] maximum likelihood estimation for logistic regression in statistics, and parameter tuning of positive linear systems in control theory.[6]
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 ) {\displaystyle y_{i}=\log(x_{i})} and taking the log of the objective and constraint functions, the functions f i {\displaystyle f_{i}} , i.e., the posynomials, are transformed into log-sum-exp functions, which are convex, and the functions g i {\displaystyle g_{i}} , i.e., the monomials, become affine. Hence, this transformation transforms every GP into an equivalent convex program.[2] 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.[7]
Several software packages exist to assist with formulating and solving geometric programs.