YeeKal
optimization

geometric programming

YeeKal
"#optimization"

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:

floor_planning.png

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.