ЛитОбзор

Подписаться на эту рубрику по RSS

Алгоритмическое дифференцирование OpenCascade

В журнале Optimization Methods & Software была опубликована статья «Algorithmic differentiation of the Open CASCADE Technology CAD kernel and its coupling with an adjoint CFD solver». Авторы этой публикации — участники проекта IODA, посвященного параметрической оптимизации, интегрированной в CAD-системы. В центре внимания статьи и всей работы авторов находится проблема сопряженной оптимизации (adjoint optimization), состоящая в том, чтобы найти оптимальную форму цифрового изделия в терминах переменных проектирования существующей параметрической модели.

Мы уже писали об одном из способов подключения эффективных методов оптимизации (использующих градиент целевой функции) через посредство дифференцирования геометрических ядер. В этом контексте использование OpenCascade выглядит особенно привлекательным, поскольку взятие точных производных требует модификации исходных кодов ядра, а коммерческие библиотеки свои коды не распространяют. В указанной статье можно прочитать подробнее как о самом принципе, так и о некоторых нюансах дифференцирования OpenCascade. К сожалению, само ядро, оснащенное точными производными, скачать пока невозможно, поскольку оно не прошло индустриальной сертификации, а правила лицензирования этого (вообще-то нового) продукта еще не определены. Однако сам эксперимент, заявленный в публикации, вполне воспроизводим, особенно в той его части, что не касается гидродинамического расчета.

Сказав все это, добавлю немного общих слов по поводу параметрических моделей и библиотек моделирования как таковых. Типичное геометрическое ядро (ACIS, Parasolid, OpenCascade) предоставляет функциональность для создания параметрических моделей S[a], где a — вектор параметров (переменных проектирования), а S — сама геометрическая модель. Задача оптимизации формы изделия состоит в поиске такого набора a*, что результирующая модель S[a*] оказывается наиболее эффективной с точки зрения некоторого критерия J(S[a]). Таким критерием может быть прочность, потеря давления в компрессоре, тяга двигателя и что угодно еще. Перед нами классическая задача оптимизации на многомерном пространстве переменных проектирования. Заметим здесь следующее:

  1. Весь этот разговор имеет смысл только в рамках параметрического проектирования. Без параметрики (скажем, в системах прямого моделирования) мы не имеем выделенного набора переменных проектирования, любое изменение которых заведомо не нарушает замысла проектировщика (design intent).

  2. Размерность пространства поиска обычно чрезвыйчайно высока. Как отмечают (T. Robinson et al. Optimizing parameterized CAD geometries using sensitivities based on adjoint functions. 2012) задача оптимизации в общем случае неразрешима для произвольного числа переменных проектирования. Нужны эффективные методы, не зависящие критическим образом от размерности пространства поиска.

Система геометрического моделирования, возвращающая в качестве результата не только параметрическую модель, но и ее градиент (а в идеале и производные высших порядков) — это очень интересно. В такой системе мы понимаем не только статику формы, но и ее отзывчивость по отношению к переменным проектирования (design sensitives), что открывает новые возможности для оптимизации. В то же время, создание такой системы — задача нетривиальная. Желательно обеспечить выполнение следующих требований при разработке подобных геометрических ядер:

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

  2. Надежность, обеспеченная наличием нерегрессионных тестов на производные.

Такая система — будущее параметрической оптимизации.