Geometric programming

Geometric programming
Taking products of variables leads in general to nonconvex functions. However, a special case leads to convex functions. In fact, in this special case, even taking positive/negative/fractional exponents of the variables in the product is allowed.

Monomials and posynomials
A function $$f:\mathbb R^n \to \mathbb R$$ with $$\textbf{dom} f = \mathbb R ^n_{++}$$, defined as

$$f(x) = c x_1^{a_1} \dots x_n^{a_n}$$

with $$c>0$$ is called a monomial function. The exponents $$a_i$$ can be positive, negative or fractional. A posynomial is a sum of monomials:

$$f(x) = \sum_{k=1} c_k x_1^{a_1k} \dots x_n^{a_nk}$$.

Geometric program
An optimization problem in the form $$\text{minimize } f_0(x)$$ $$\begin{matrix}\text{subject to} & f_i(x) \le 1, \,\,\,\, i=1,\dots,m \\ & h_i(x) = 1, \,\,\,\, i=1,\dots,p\end{matrix}$$ is called a geometric program if all the functions $$f_0, f_i, h_i$$ are posynomials. (Note that the RHS is 1 instead of the typical 0).

Geometric programs can be converted to convex optimization problems through standard transformations (see Section 4.5.3 ).