geometric programming
what is
- geometric programming: 几何规划
- polynomials: [数]多项式(polynomial 的复数形式)
- monomials: 单项式
In the context of geometric programming a monomial is a function from $\mathbb{R}^n_{++}\rightarrow \mathbb{R}$ defined as:
where $c>0, a_i\in \mathbb{R}$. Such as :
Building on this, a posynomial is defined as a sum of monomials:
Such as:
A geometric program (GP) is an optimization problem of the form
where $f_0, \ldots, f_m$ are posynomials and $g_1, \ldots, g_p$ are monomials. Some GP programming example:
Another example, floor planning:
Convex form
Any GP can be made convex by means of a change of variables. Given $g(x) = c x_1^{a_1} x_2^{a_2} ... x_n^{a_n}$, let $y_i = \log x_i$, and rewrite this as:
Also, a polynominal can be written as $\sum^p_{k=1} e^{a_k^Ty + b_k}$. With this variable substitution, and after taking logs, a geometric program is equivalent to
This is convex, recalling the convexity of soft max functions. 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.
special character:
- Unlike most non-linear optimization problems, large GPs can be solved extremely quickly. If there exists an optimal solution to a GP, it is guaranteed to be globally optimal. Modern GP solvers require no initial guesses or tuning of solver parameters.