Un programa geométrico ( GP ) es un problema de optimización de la forma
dónde son posinomios 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 de a definido como
dónde y . Un 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 convexo mediante un cambio de variables. [2] Los GP tienen numerosas aplicaciones, incluido el dimensionamiento de componentes en el diseño de circuitos integrados , [3] [4] el diseño de aeronaves, [5] estimación de máxima verosimilitud para regresión logística en estadística y ajuste de parámetros de sistemas lineales positivos en 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 variables y 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 se puede utilizar para convertir una clase más grande de problemas, conocidos como programación log-log convexa (LLCP), en una forma convexa equivalente. [7]
Software
Existen varios paquetes de software para ayudar a formular y resolver programas 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 claramente modelos de programación geométricos. Hay varios modelos de GP de ejemplo escritos con este paquete aquí .
- 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]
Ver también
Referencias
- ^ Richard J. Duffin; Elmor L. Peterson; Clarence Zener (1967). Programación geométrica . John Wiley e hijos. pag. 278. ISBN 0-471-22370-0.
- ^ a b c 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 . Revista AIAA 52.11 (2014): 2414-2426.
- ^ Ogura, Masaki; Kishida, Masako; Lam, James (2020). "Programación geométrica para sistemas lineales positivos óptimos" . Transacciones IEEE sobre control automático . 65 (11): 4648–4663. arXiv : 1904.12976 . doi : 10.1109 / TAC.2019.2960697 . ISSN 0018-9286 .
- ^ a b A. Agrawal, S. Diamond y S. Boyd. Programación geométrica disciplinada. Consultado el 8 de enero de 2019.