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). Sifno 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:
- IPOPT es un solucionador de puntos interiores de código abierto desarrollado por Andreas Wächter en IBM. Es un código de muy alta calidad. Como solucionador de puntos interiores, es mejor para funciones objetivas con matrices jacobianas grandes y dispersas, y sería útil para la optimización restringida por PDE
- SNOPT es un solucionador de programación cuadrática secuencial comercial que es otro código de alta calidad. Es mejor para funciones objetivas con matrices jacobianas pequeñas y densas, por lo que no esperaría que fuera útil para la optimización restringida por PDE, pero podría intentarlo.
- NLopt es un pequeño código de código abierto escrito por Steven Johnson en el MIT que contiene implementaciones básicas de una serie de algoritmos de optimización no lineal. Todos los algoritmos deben ser adecuados para resolver problemas con restricciones limitadas.
fmincon
en Matlab implementa una serie de algoritmos (incluyendo punto interior y programación cuadrática secuencial) para la optimización no lineal
- GAMS y AMPL son lenguajes comerciales de modelado utilizados para formular problemas de optimización y contienen interfaces para una gran cantidad de solucionadores de programación no lineales. Sé que GAMS tiene una versión de prueba que se puede usar para problemas más pequeños, y las instancias de problemas también se pueden enviar al servidor NEOS para su solución.
Sin 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.