Un programa geométrico ( PG ) es un problema de optimización de la forma
dóndeson sinónimos yson monomios. En el contexto de la programación geométrica (a diferencia de las matemáticas estándar), un monomio es una función deadefinido como
dóndeyUn posinomio es cualquier suma de monomios. [ 1 ] [ 2 ]
La programación geométrica está estrechamente relacionada con la optimización convexa : cualquier GP puede hacerse convexa mediante un cambio de variables. [ 2 ] Los GP tienen numerosas aplicaciones, incluyendo el dimensionamiento de componentes en el diseño de circuitos integrados , [ 3 ] [ 4 ] el diseño de aeronaves, [ 5 ] la estimación de máxima verosimilitud para la regresión logística en estadística y el ajuste de parámetros de sistemas lineales positivos en la teoría de control . [ 6 ]
Forma convexa
Los programas geométricos no son en general problemas de optimización convexa, pero pueden transformarse en problemas convexos mediante un cambio de variables y una transformación de las funciones objetivo y de restricción. En particular, después de realizar el cambio de variablesy tomando el logaritmo de las funciones objetivo y de restricción, las funciones, es decir, los posinomios, se transforman en funciones log-sum-exp , que son convexas, y las funciones, es decir, los monomios, se vuelven afines . Por lo tanto, esta transformación transforma cada GP en un programa convexo equivalente. [ 2 ] De hecho, esta transformación log-log puede usarse para convertir una clase más amplia de problemas, conocida como programación convexa log-log (LLCP), en una forma convexa equivalente. [ 7 ]
Software
Existen varios paquetes de software que ayudan a formular y resolver problemas geométricos.
- MOSEK es un solucionador comercial capaz de resolver programas geométricos, así como otros problemas de optimización no lineal.
- CVXOPT es un solucionador de código abierto para problemas de optimización convexa.
- GPkit es un paquete de Python para definir y manipular de forma limpia modelos de programación geométrica. Aquí encontrará varios ejemplos de modelos GP escritos con este paquete .
- GGPLAB es una caja de herramientas de MATLAB para especificar y resolver programas geométricos (GP) y programas geométricos generalizados (GGP).
- CVXPY es un lenguaje de modelado integrado en Python para especificar y resolver problemas de optimización convexa, incluidos GP, GGP y LLCP. [ 7 ]
Véase también
Referencias
- ↑ Richard J. Duffin; Elmor L. Peterson; Clarence Zener (1967). Programación geométrica . John Wiley and Sons. pág. 278. ISBN 0-471-22370-0.
- 1 2 3 S. Boyd, SJ Kim, L. Vandenberghe y A. Hassibi. Un tutorial sobre programación geométrica . Consultado el 20 de octubre de 2019.
- ↑ M. Hershenson, S. Boyd y T. Lee. Diseño óptimo de un amplificador operacional CMOS mediante programación geométrica . Consultado el 8 de enero de 2019.
- ↑ S. Boyd, SJ Kim, D. Patil y M. Horowitz. Optimización de circuitos digitales mediante programación geométrica . Consultado el 20 de octubre de 2019.
- ↑ W. Hoburg y P. Abbeel. Programación geométrica para la optimización del diseño de aeronaves . AIAA Journal 52.11 (2014): 2414-2426.
- ↑ Ogura, Masaki; Kishida, Masako; Lam, James (2020). "Programación geométrica para sistemas lineales positivos óptimos". IEEE Transactions on Automatic Control . 65 (11): 4648– 4663. arXiv : 1904.12976 . Bibcode : 2020ITAC...65.4648O . doi : 10.1109/TAC.2019.2960697 . ISSN 0018-9286 . S2CID 140222942 .
- 1 2 A. Agrawal, S. Diamond y S. Boyd. Programación geométrica disciplinada. Consultado el 8 de enero de 2019.
- Optimización convexa