Как я могу автоматизировать процесс оптимизации конструкции физического объекта?


9

Я пытаюсь оптимизировать распределение потока в резервуаре так, чтобы распределение скорости и температуры по любому поперечному сечению было относительно равномерным. Есть много параметров, которые я могу настроить для максимальной однородности поперечного сечения, таких как количество впускных труб, их положение, ориентация и направление. Я знаю, что могу создать несколько различных геометрий и проверить каждую по отдельности, но это очень много времени. Я хотел бы иметь возможность написать программу, которая может итеративно тестировать несколько случаев одновременно (параллельно) и адаптивно выбирать новый набор геометрий для тестирования на основе предыдущих результатов. Как я могу лучше всего это сделать?


1
Часть поиска параметров, для меня, является легкой частью. Нетривиальная часть - параметризация геометрии.
Джефф Оксберри

Ответы:


4

То, что вы хотите сделать, это оптимизация формы с использованием градиентных методов. По сути, это означает, что вам нужно рассчитать градиент целевой функции относительно параметров вашей модели.

Для небольшого количества параметров вы можете использовать FD, но для большого количества параметров вам нужно изучить сопряженные методы. Если вы используете коммерческий код или код другого лица, который не может решить сопряженные уравнения, тогда FD - ваш единственный вариант.

Посмотрите основные книги по оптимизации формы.

Изменить: Для структурных проблем FE вы можете проверить книгу Чой и Ким I и II


Некоторые параметры являются только целочисленными ... Может ли подход, основанный на градиенте, все еще применяться?
Павел

Вы рекомендуете какие-нибудь хорошие учебники / книги по оптимизации формы?
Павел

Для чего-то короткого / простого вы можете прочитать это: acdl.mit.edu/mdo/mdo_06/EulerAdjoint.pdf . Как я уже говорил с FD, это тривиально, так как вам просто нужно вычислить градиент (то есть запустить код CFD несколько раз, в зависимости от количества параметров), а затем использовать градиент для оптимизации. Обычно для того, чтобы оценки параметров сходились, требуется несколько итераций. Для больших параметров это дорого, и вам придется прибегать к сопутствующим методам для расчета градиента.
Стали

Спасибо, Стали. Это было очень хорошее введение в сопутствующие методы.
Павел

5

Если вы правильно параметризовали свою часть построения геометрии, это проблема оптимизации черного ящика со смешанными дискретными и непрерывными параметрами.

DAKOTA http://dakota.sandia.gov/ и NOMAD http://www.gerad.ca/NOMAD/Project/Home.html - это два полезных пакета, которые позволяют автоматически выбирать наилучший выбор параметров. (DAKOTA имеет лучшую поддержку приложений, но NOMAD, вероятно, имеет лучшие оптимизаторы.)

Чтобы изменить геометрию, введите дискретный или непрерывный параметр для каждого элемента управления, с помощью которого вы хотите влиять на геометрию, и автоматизируйте построение геометрии из набора элементов управления. Обратите внимание, что методы без производных довольно медленны в больших измерениях, поэтому держите количество параметров достаточно небольшим.

После завершения исследования пространства с помощью одного из вышеуказанных пакетов вы можете уточнить анализ, выполнив более точную оптимизацию, в которой фиксированы все дискретные параметры и все непрерывные параметры, для которых вы не можете получить аналитическую производную. Но вы можете увеличить количество параметров непрерывной формы, относительно которых вы можете вычислять аналитические производные, поскольку оптимизатор на основе градиента (такой как IPOPT https://projects.coin-or.org/Ipopt ) может эффективно решать гораздо большие проблемы ,

Если вы не знаете, как получить производную, но зависимость гладкая, вы можете рассмотреть возможность использования программы автоматического дифференцирования или кодирования вашей непрерывной задачи в AMPL, и в этом случае интерфейс решателя позаботится о производных.

Основы оптимизации формы см., Например, Haftka, RT и Grandhi, RV, оптимизация конструктивной формы - обзор, Компьютерные методы в прикладной механике и технике 57 (1986), 91-106. (Доверяйте описанию о моделировании; но не используйте рекомендованные ими решатели, так как с тех пор технология оптимизации значительно улучшилась.)


Какие подходы я могу использовать для параметризации геометрии?
Павел

Смотрите дополнение к моему ответу.
Арнольд Ноймайер

@ Пол: Я только что исправил глупую ошибку в своем письме - параметры геометрии, конечно, могут быть дискретными или непрерывными!
Арнольд Ноймайер

3

Что касается параметризации геометрии, о которой идет речь (как указал Джефф, нетривиальной), то я могу искренне рекомендовать Бренду Калфан - Универсальный метод представления параметрической геометрии, J. Aircraft, Vol.45, No.1,2008 .

Описанный подход применим в аэродинамической оптимизации самолетов.


3

Существует также сопутствующая оптимизация пространства, которая кажется намного быстрее, чем стандартная параметрическая оптимизация в CFD. В последнее время он значительно увеличился в сообществе CFD в целом и особенно в OpenFOAM. В настоящее время мы организуем семинар по OpenFOAM, и мы получили много абстрактных материалов по этому методу. Если вам интересно, проверьте это , для другой информации, просто гуглите "оптимизация формы смежного пространства в CFD".

Дополнительная информация:

Если бы вы могли использовать OpenFOAM, есть библиотека на основе Python, которая используется именно для таких целей, для манипулирования большим количеством дел и изменения их параметров, называемой PyFoam . Для простой геометрии вы можете определить меш как простой blockMesh и выполнять итерации по своему усмотрению . Для простого случая это вопрос написания нескольких циклов в Python. Вот как будет выглядеть скрипт, если вы измените скорость входного граничного условия. Простые изменения геометрии сетки были бы еще несколькими строками кода ...


2

Вам потребуется:

  1. оптимизатор и
  2. инструмент CFD, который способен (достаточно гибок) работать с различными проектами в рамках конкретной концепции или даже принадлежать к различным концепциям.

Следующие функции имеют решающее значение для инструмента CFD:

  • Высокая эффективность вычислений (скорость) для обработки большого количества отдельных конструкций в разумные сроки.
  • Высокая гибкость и дружелюбие численных методов, чтобы исключить ручное вмешательство в процесс поиска / анализа.
  • Программирование геометрии.

Поэтому я могу порекомендовать следующее программное обеспечение:

  1. Insight Toolkit, который предоставляет большое количество оптимизаторов, которые можно сочетать с
  2. Библиотека расширенного моделирования, которая предлагает

    • Высокая производительность:

      • Библиотека с аппаратным ускорением, т.е. способна использовать аппаратное обеспечение GPU или FPGA (если доступно), что означает ускорение на 10-100 по сравнению с программой на базе процессора. Также на обычном процессоре он использует расширенные функции, такие как SIMD.
      • Он основан на подходе динамической компиляции, что означает, что нет необходимости жертвовать производительностью ради гибкости. Это приводит к ускорению в 10 раз по сравнению со стандартной техникой компиляции.
      • ASL может использоваться в кластерной инфраструктуре и на компьютерах с несколькими графическими процессорами.
    • Высокая гибкость и дружелюбие:

      • В сетчатые бесплатно численные методы основаны на прямоугольной сетке и погруженных граничных подходов. Эти функции позволяют автоматизировать оптимизацию дизайна, поскольку генерация сетки не требуется.
      • Библиотека основана на подходе динамической компиляции, что означает, что нет необходимости жертвовать производительностью ради гибкости. Это позволяет сформулировать единый общий и эффективный алгоритм для разных конструкций / концепций.
    • Генерация и манипулирование геометрическими примитивами .

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.