Estoy tratando de optimizar un distribuidor de flujo en un tanque de modo que la distribución de velocidad y temperatura en cualquier sección transversal sea relativamente uniforme. Hay muchos parámetros que puedo ajustar a la uniformidad máxima de la sección transversal, como el número de tubos de entrada, su posición, orientación y dirección. Sé que puedo crear varias geometrías diferentes y probar cada una individualmente, pero esto lleva mucho tiempo. Me gustaría poder escribir un programa que pueda probar de forma iterativa varios casos a la vez (en paralelo) y elegir de forma adaptativa un nuevo conjunto de geometrías para probar en función de los resultados anteriores. ¿Cómo puedo hacer esto mejor?
optimization
Paul
fuente
fuente
Respuestas:
Lo que desea hacer es la optimización de formas utilizando métodos basados en gradientes. Esencialmente significa que necesita calcular el gradiente de la función objetivo wrt a los parámetros de su modelo.
Para una pequeña cantidad de parámetros, puede usar FD, pero para una gran cantidad de parámetros debe buscar métodos adjuntos. Si está utilizando un código comercial o el código de otra persona que no puede resolver las ecuaciones adjuntas, entonces FD es su única opción.
Mira en los libros básicos de optimización de formas básicas.
Editar: Para problemas estructurales de FE, puede consultar el libro de Choi y Kim I y II
fuente
Si parametriza su parte de construcción de geometría adecuadamente, este es un problema de optimización de caja negra con parámetros mixtos discretos y continuos.
DAKOTA http://dakota.sandia.gov/ y NOMAD http://www.gerad.ca/NOMAD/Project/Home.html son dos paquetes útiles que le permiten elegir automáticamente las mejores selecciones de parámetros. (DAKOTA tiene un mejor soporte de aplicaciones, pero NOMAD probablemente tenga los mejores optimizadores).
Para variar la geometría, introduzca un parámetro discreto o continuo para cada control con el que desee influir en la geometría y automatice la construcción de la geometría a partir de la colección de controles. Tenga en cuenta que los métodos sin derivados son bastante lentos en las dimensiones altas, por lo tanto, mantenga el número de parámetros razonablemente pequeño.
Después de terminar de explorar el espacio con uno de los paquetes anteriores, puede refinar el análisis haciendo una optimización más precisa en la que se fijan todos los parámetros discretos y todos los parámetros continuos para los que no puede obtener una derivada analítica. Pero puede aumentar el número de parámetros de forma continua con respecto a los cuales puede calcular derivados analíticos, ya que un optimizador basado en gradiente (como IPOPT https://projects.coin-or.org/Ipopt ) puede manejar problemas mucho más grandes de manera eficiente .
Si no sabe cómo obtener la derivada pero la dependencia es fluida, puede considerar usar un programa de diferenciación automática o codificar su problema continuo en AMPL, en cuyo caso la interfaz del solucionador se ocupará de las derivadas.
Para obtener información básica sobre la optimización de la forma, consulte, por ejemplo, Haftka, RT y Grandhi, RV, optimización de la forma tructural: encuesta, Métodos informáticos en mecánica aplicada e ingeniería 57 (1986), 91-106. (Confíe en la descripción sobre el modelado; pero no use los solucionadores que recomiendan, ya que la tecnología de optimización ha mejorado mucho desde entonces).
fuente
En cuanto a la parametrización de la geometría está en cuestión (como Geoff señaló que no es trivial), puedo recomendar sinceramente a Brenda Kulfan: Método de representación de geometría paramétrica universal, J. Aircraft, Vol.45, No.1,2008 .
El enfoque descrito es aplicable en la optimización aerodinámica de aviones.
fuente
También hay una optimización de espacio adjunta, que parece ser mucho más rápida que la optimización paramétrica estándar en CFD. Recientemente ha tenido un gran aumento de popularidad dentro de la comunidad CFD en general, y en OpenFOAM especialmente. Actualmente estamos organizando un taller sobre OpenFOAM, y recibimos muchas presentaciones de resúmenes sobre este método. Si está interesado, consulte esto , para obtener más información, simplemente busque en Google "optimización de forma de espacio adjunto en CFD".
Información adicional:
Si pudieras usar OpenFOAM, hay una biblioteca basada en Python que se usa para tal cosa, para manipular una gran cantidad de casos y cambiar sus parámetros llamados PyFoam . Para una geometría simple, puede definir una malla como un simple blockMesh e iterar sobre lo que quiera. Para un caso simple, se trata de escribir algunos bucles en Python. Así es cómo las miradas guión como si cambia la "entrada" condición de límite de velocidad. Los cambios simples de geometría de malla serían unas pocas líneas más de código ...
fuente
Necesitarías:
Las siguientes características son cruciales para la herramienta CFD:
Entonces puedo recomendar el siguiente software:
Biblioteca de simulación avanzada que ofrece
Alto rendimiento:
Alta flexibilidad y amabilidad:
Generación y manipulación de primitivas geométricas .
fuente