Estoy buscando resolver un problema de optimización restringida donde conozco los límites de algunas de las variables (específicamente una restricción en recuadro).
sujeto a
a ≤ d ( u , x ) ≤ b
donde es un vector de variables de diseño, es un vector de variables de estado, y es una restricción de igualdad (generalmente un PDE). Las limitaciones inferior y superior y pueden ser espacialmente variable.
¿Qué paquetes pueden manejar sistemas de esta forma?
pde
optimization
nonlinear-programming
Sean Farley
fuente
fuente
Respuestas:
Decidí editar radicalmente mi respuesta en función de algunos de los comentarios.
No he usado TAO. Al examinar detenidamente la documentación, parece que la única forma en que TAO puede manejar problemas de optimización restringidos (excluyendo el caso especial de las restricciones de solo recuadros) es convertir el problema en una desigualdad variacional utilizando las condiciones de Karush-Kuhn-Tucker (KKT) , que son necesarios bajo la calificación de restricción (el tipo que generalmente veo es la condición del punto Slater ), y suficiente bajo la convexidad del objetivo y las restricciones (más generalmente, la invexidad de Tipo 1). Sif no es convexo, la formulación de desigualdad variacional que utiliza las condiciones KKT NO es equivalente al problema de optimización original, por lo que, estrictamente hablando, si desea un óptimo global para el problema de optimización, no debe expresarlo como una desigualdad variacional. De todos modos, sería difícil encontrar un óptimo global para la optimización restringida por PDE (ver más abajo), por lo que tal vez ignorar este detalle está bien. Dado lo que Wolfgang ha dicho, sería escéptico de usar TAO; Ya soy escéptico porque no implementa métodos para resolver programas no lineales (PNL) como PNL, en lugar de desigualdades variacionales.
No soy un experto en optimización con restricciones PDE; compañeros de trabajo y asociados de minas trabajan en problemas de optimización restringidos por ODE. Sé que para formulaciones intrusivas, Larry Biegler (y otros) usarán métodos de colocación para discretizar el PDE y convertirlo en un PNL muy grande y escaso, y luego lo resolverá usando métodos de punto interior. Para resolver realmente el problema de la optimización global, también necesitaría generar relajaciones convexas, pero que yo sepa, este enfoque no se toma porque los problemas de optimización con restricción de PDE conducen a PNL tan grandes que sería difícil resolverlos. Optimidad global. Menciono estos detalles solo porque la formulación del problema influye mucho en la elección del paquete de solución. Para formulaciones no intrusivas, la PDE repetida resuelve información de gradiente de rendimiento para algoritmos de optimización.
Algunas personas que estudian problemas de optimización restringidos por ODE utilizan un enfoque similar de discretizar el problema utilizando la colocación y un método numérico, y luego relajar la PNL resultante para producir una formulación convexa utilizada en un algoritmo de optimización global. Un enfoque alternativo para la optimización limitada por ODE es relajar el problema y luego discretizar el ODE, que es el enfoque adoptado en mi laboratorio. Podría ser posible relajar ciertas clases de problemas de optimización restringidos por PDE, pero no sé de ningún trabajo existente realizado sobre ese problema. (Fue un proyecto potencial en mi laboratorio en un momento).
En última instancia, lo que importa no es la diferenciabilidad del PDE original, sino la diferenciabilidad de la discretización con respecto a las variables de decisión.
Si el problema discretizado es dos veces diferenciable con respecto a las variables de decisión, los siguientes paquetes calcularán una solución local:
fmincon
en Matlab implementa una serie de algoritmos (incluyendo punto interior y programación cuadrática secuencial) para la optimización no linealSin embargo, es posible que la discretización sea solo una vez diferenciable con respecto a las variables de decisión, en cuyo caso, debe usar el descenso más pronunciado proyectado o algún otro método de optimización de primer orden al calcular una solución local. Dado que muchos estudios se centran en problemas en los que se pueden usar métodos de segundo orden (y cuando puede usarlos, sus propiedades de convergencia superiores los convierten en una mejor opción), no pude encontrar muchas implementaciones de descenso más pronunciado que no fueran soluciones a problemas de tarea. La Biblioteca Científica GNU tiene una implementación, pero es solo para fines de demostración. Probablemente necesite codificar su propia implementación.
Si el problema solo es continuo con respecto a las variables de decisión, entonces podría usar métodos directos para resolverlo localmente. Hay una excelente encuesta sobre métodos directos realizada por Kolda, Lewis y Torczon . El más conocido de estos métodos es el algoritmo simplex Nelder-Mead . No se garantiza que converja a un mínimo local en múltiples dimensiones, pero ha encontrado un uso práctico considerable de todos modos.
La elección del paquete realmente depende del idioma que desee usar para resolver el problema, si la solución del problema limitado es solo parte de un algoritmo que desea implementar (o si es el único paso en su algoritmo, en cuyo caso los lenguajes de modelado volverse más viable para el código de producción), el tipo y el tamaño del problema, y si necesita algún paralelismo.
fuente
Hemos intentado TAO pero encontramos que no es muy útil para problemas con restricciones de desigualdad. También está esencialmente solo en modo de mantenimiento desde al menos 2003, sin nuevas características reales aparte de las actualizaciones para rastrear los cambios en PETSc sobre los que se basa.
fuente
Otra alternativa es OPT ++ . Admite restricciones lineales y no lineales con un solucionador de puntos interior no lineal eficiente, proporciona control para la precisión de la función (si se requiere diferenciación numérica), control para tamaños de pasos, etc. Normalmente estoy optimizando grandes funciones implícitas (por ejemplo, FEM) donde estos tipos de Los controles pueden ser útiles.
fuente
Si el problema se formula como un problema de complementariedad, puede usar TAO (Toolkit for Advanced Optimization). Algunos de los métodos en TAO, como el método de espacio reducido (una variante del método de conjunto activo), están actualmente disponibles como parte de SNES en PETSc ( SNESVI ).
fuente
No creo que MINUTE funcione bien para sus necesidades, pero la transformación puede hacerlo si se ve obligado a escribir parte o la totalidad del código usted mismo.
fuente
Como señaló @Geoff Oxberry, varios paquetes le permiten encontrar una solución local. Si desea poder comparar estos diferentes solucionadores de PNL para un mismo problema, puede usar RobOptim .
Aunque RobOptim se desarrolló inicialmente teniendo en cuenta los problemas de optimización robótica, es adecuado para cualquier problema de optimización no lineal. Proporciona una interfaz C ++ simple con complementos para múltiples solucionadores de NLP (por ejemplo, Ipopt, NAG). Si no puede proporcionar gradientes, el cálculo de diferencias finitas se puede hacer automáticamente.
Es de código abierto, por lo que puede consultar el código fuente en GitHub: https://github.com/roboptim/
Nota: Soy uno de los desarrolladores de este proyecto.
fuente
Aquí hay una lista parcial de paquetes de optimización con restricciones PDE.
Dolfin Adjoint es parte de FEniCS FEM:
http://dolfin-adjoint.org/
ROL, MOOCHO, Sundance son partes de Trilinos:
https://github.com/trilinos/trilinos/tree/master/packages/rol/
https://github.com/trilinos/trilinos/tree/master/packages/Sundance/
http://trilinos.org/packages/moocho/
Ejemplo de PYOMO para la optimización restringida por PDE:
https://software.sandia.gov/trac/pyomo/browser/pyomo/trunk/examples/dae
El manual TAO proporciona ejemplos de resolución de problemas de optimización con restricciones PDE:
http://www.mcs.anl.gov/petsc/petsc-3.5/docs/tao_manual.pdf
fuente
Los paquetes APM MATLAB y APM Python pueden resolver a gran escala (más de 100,000 variables) de sistemas de ecuaciones algebraicas diferenciales de enteros mixtos. El software está disponible como un servicio web para uso comercial o académico. Si está resolviendo un sistema PDE, puede discretizar una vez para ponerlo en forma DAE u ODE para ponerlo en el lenguaje de modelado APMonitor. El lenguaje de modelado utiliza solucionadores APOPT , BPOPT, IPOPT, SNOPT y MINOS.
fuente