Geometric programming
A geometric program (GP) is an optimization problem of the form
- [math]\displaystyle{ \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} }[/math]
where [math]\displaystyle{ f_0,\dots,f_m }[/math] are posynomials and [math]\displaystyle{ g_1,\dots,g_p }[/math] are monomials. In the context of geometric programming (unlike standard mathematics), a monomial is a function from [math]\displaystyle{ \mathbb{R}_{++}^n }[/math] to [math]\displaystyle{ \mathbb{R} }[/math] defined as
- [math]\displaystyle{ x \mapsto c x_1^{a_1} x_2^{a_2} \cdots x_n^{a_n} }[/math]
where [math]\displaystyle{ c \gt 0 \ }[/math] and [math]\displaystyle{ a_i \in \mathbb{R} }[/math]. 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]
Convex 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 [math]\displaystyle{ y_i = \log(x_i) }[/math] and taking the log of the objective and constraint functions, the functions [math]\displaystyle{ f_i }[/math], i.e., the posynomials, are transformed into log-sum-exp functions, which are convex, and the functions [math]\displaystyle{ g_i }[/math], 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]
Software
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. [7]
See also
References
- ↑ Richard J. Duffin; Elmor L. Peterson; Clarence Zener (1967). Geometric Programming. John Wiley and Sons. pp. 278. ISBN 0-471-22370-0.
- ↑ 2.0 2.1 2.2 S. Boyd, S. J. Kim, L. Vandenberghe, and A. Hassibi. A Tutorial on Geometric Programming. Retrieved 20 October 2019.
- ↑ M. Hershenson, S. Boyd, and T. Lee. Optimal Design of a CMOS Op-amp via Geometric Programming. Retrieved 8 January 2019.
- ↑ S. Boyd, S. J. Kim, D. Patil, and M. Horowitz. Digital Circuit Optimization via Geometric Programming. Retrieved 20 October 2019.
- ↑ W. Hoburg and P. Abbeel. Geometric programming for aircraft design optimization. AIAA Journal 52.11 (2014): 2414-2426.
- ↑ Ogura, Masaki; Kishida, Masako; Lam, James (2020). "Geometric Programming for Optimal Positive Linear Systems". IEEE Transactions on Automatic Control 65 (11): 4648–4663. doi:10.1109/TAC.2019.2960697. ISSN 0018-9286. https://ieeexplore.ieee.org/document/8936427.
- ↑ 7.0 7.1 A. Agrawal, S. Diamond, and S. Boyd. Disciplined Geometric Programming. Retrieved 8 January 2019.
Original source: https://en.wikipedia.org/wiki/Geometric programming.
Read more |