¿Cómo puedo automatizar el proceso de optimización del diseño de un objeto físico?

9

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?

Paul
fuente
1
La parte de búsqueda de parámetros, para mí, es la parte fácil. La parte no trivial está parametrizando la geometría.
Geoff Oxberry

Respuestas:

4

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

stali
fuente
Algunos de los parámetros son enteros solamente ... ¿Se puede aplicar un enfoque basado en gradiente?
Paul
¿Recomiendas algún buen tutorial / libro sobre optimización de formas?
Paul
Para algo corto / simple puede leer esto: acdl.mit.edu/mdo/mdo_06/EulerAdjoint.pdf . Como dije con FD es trivial, ya que solo tiene que calcular el gradiente (lo que significa ejecutar su código CFD varias veces, dependiendo del número de parámetros) y luego usar el gradiente para realizar la optimización. Por lo general, toma algunas iteraciones antes de que las estimaciones de los parámetros converjan. Para parámetros grandes, esto se vuelve costoso y tendrá que recurrir a métodos adjuntos para calcular el gradiente.
stali
Gracias Stali. Esa fue una muy buena introducción a los métodos adjuntos.
Paul
5

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).

Arnold Neumaier
fuente
¿Qué enfoques puedo tomar para parametrizar la geometría?
Paul
Vea la adición a mi respuesta.
Arnold Neumaier
@Paul: Acabo de corregir un error tonto en mi escritura: ¡los parámetros de geometría pueden, por supuesto, ser discretos o continuos!
Arnold Neumaier
3

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 ...

tmarico
fuente
2

Necesitarías:

  1. un optimizador y
  2. Una herramienta CFD que es capaz (flexible) de manejar diferentes diseños dentro de un concepto concreto o incluso pertenecer a diferentes conceptos.

Las siguientes características son cruciales para la herramienta CFD:

  • Alta eficiencia de cálculo (velocidad) para tratar una gran cantidad de diseños separados en un marco de tiempo razonable.
  • Alta flexibilidad y amabilidad de las técnicas numéricas para excluir la intervención manual en el proceso de búsqueda / análisis.
  • Manipulación de geometría programática.

Entonces puedo recomendar el siguiente software:

  1. Insight Toolkit que proporciona una buena cantidad de optimizadores que se pueden combinar con
  2. Biblioteca de simulación avanzada que ofrece

    • Alto rendimiento:

      • La biblioteca está acelerada por hardware, es decir, es capaz de utilizar hardware de GPU o FPGA (si está disponible), lo que significa 10-100 de velocidad en comparación con el programa basado en CPU. También en la CPU normal utiliza funciones avanzadas como SIMD.
      • Se basa en el enfoque de compilación dinámica, lo que significa que no hay necesidad de sacrificar el rendimiento por la flexibilidad. Esto da como resultado una aceleración de hasta 10 veces en comparación con la técnica de compilación estándar.
      • ASL se puede usar en infraestructura de clúster y en computadoras con múltiples GPU.
    • Alta flexibilidad y amabilidad:

      • Las técnicas numéricas sin malla se basan en una cuadrícula rectangular y enfoques de límites inmersos. Estas características permiten una optimización de diseño automatizada , ya que no se requiere generación de malla.
      • La biblioteca se basa en un enfoque de compilación dinámica, lo que significa que no hay necesidad de sacrificar el rendimiento por la flexibilidad. Esto permite formular un algoritmo único general y eficiente para diferentes diseños / conceptos.
    • Generación y manipulación de primitivas geométricas .

usuario1876484
fuente