Перейти к основному содержимому

Оптимизационный анализ

Оптимизационный анализ предназначен для подбора значений варьируемых параметров модели так, чтобы частотные характеристики устройства удовлетворяли заданным целям (КСВН, S-параметры, КПД). Каждая проба параметров — это полный расчёт модели (перестроение геометрии, сетки и электромагнитное решение), поэтому все методы спроектированы под минимальное число расчётов.

Этот раздел описывает оптимизацию электродинамической модели. Оптимизация схемы (вкладка «Оптимизатор» окна компонентов) устроена проще и описана отдельно: Оптимизация схемы.

Постановка задачи

  • Варьируемые параметры — переменные модели с заданными границами (минимум/максимум). Каждый параметр перебирается в одном из режимов: непрерывный диапазон, равномерная сетка «с шагом» или явный список значений. Число параметров далее обозначается n. Подробно — см. Варьируемые параметры.
  • Цели — требования к характеристикам: величина (КСВН, |S|, КПД), условие (меньше / больше / равно, а также «минимизировать» / «максимизировать»), полоса частот, вес. Подробно — см. Цели и целевая функция.

Оба набора живут в ветке «Параметры оптимизации» дерева проекта (Проект > Анализ МКЭ > Решение > Параметры оптимизации). Подписи узлов читаются как выражения и обновляются вместе с данными, а выбор узла показывает его поля в окне свойств, где их можно править без диалога.

Двойной щелчок по узлу «Параметры оптимизации» открывает окно Настройка оптимизации для выбора метода. Подробное описание методов — см. Методы оптимизации.

Запуск оптимизационного анализа

Оптимизация запускается с помощью кнопки Оптимизационный анализ во вкладке Главная или во вкладке Решение.

Журнал

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

Блок на старте: метод и фактический бюджет, стартовая точка, случайное зерно, фактические критерии останова — точность по параметрам и порог остановки без улучшения (либо «выключен»), — этапы конвейера, советы предстартовой проверки, предупреждения о свёртке жёстких ограничений в штрафы и строка тёплого старта.

Строка зерна печатается у трёх методов: Управляемого случайного поиска (CRS2), Адаптивной эволюции (ISRES) и Эволюционной стратегии (ESCH). Ковариационная адаптация (CMA-ES) зерно тоже использует — оно задаётся полем Зерно на её странице и работает так же, — но в журнал его не выводит.

Критерии останова печатаются именно теми значениями, которые получил метод, поэтому по журналу всегда можно ответить, почему прогон закончился там, где закончился. Двух методов это не касается. У конвейера критериев нет вовсе: они принадлежат этапам, а не связке, и этапы названы отдельными строками. У Ковариационной адаптации (CMA-ES) их нет по другой причине — своих полей точности по параметрам и порога стагнации у метода не существует, останов задают его собственные критерии сходимости и рестарты.

Ошибки и предупреждения по ходу прогона: отказ очередного расчёта с причиной, аварийный останов после 10 отказов подряд, прерывание пользователем, ошибки постановки задачи (вырожденный диапазон, полоса цели вне покрытия решателя и т. п.).

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

Разбор по каждой цели занимает две строки, а у цели-ограничения — три:

  1. имя цели, её состояние и штраф A_g с названием режима агрегации. В сводке встречаются пять состояний: «выполнена», «нарушена», «ограничение соблюдено», «ограничение нарушено» и «экстремум, меньшее A_g лучше». Шестое — «ограничение» без вердикта — принадлежит постановке задачи до первой оценки и в сводке прогона не появляется;
  2. наихудшая выборка: M_g в единицах φ, в скобках — то же отклонение в единицах величины цели с пометкой «за пределами цели», частота f* этой выборки, измеренное в ней значение value и число выборок в полосе. У цели с непокрытой полосой либо у точки, засеянной из журнала без этого поля, вместо чисел печатается «не измерено (прошлый журнал)». У экстремальной цели строка короче: M_g (знаковый), частота f*, измеренное значение и число выборок — скобки с отклонением там нет, потому что порога у такой цели нет;
  3. только у цели-ограничения: её допуск и нарушение — каждое в единицах φ и в единицах величины — плюс вердикт. Отдельной строкой сообщается редкий случай, когда движок счёл точку допустимой, а точная наихудшая выборка допуск превышает.

Если прогон закончился по собственному критерию метода или по бюджету, а хотя бы одна цель осталась нарушенной, сводка говорит об этом отдельной строкой с советом: локальный метод остановился в ближайшем оптимуме, и увеличивать бюджет бесполезно — надо стартовать от другой конструкции или брать глобальный метод; глобальному, наоборот, имеет смысл дать больший бюджет и популяцию либо ослабить цели. Строка «сколько взято из кэша» считает ВСЕ попадания в кэш, включая повторный заход в точку текущего прогона и попадания в собственный кэш движка, поэтому её число больше, чем «N из M» в подвале виджета мониторинга: там только точки прошлого прогона. Каждое такое попадание видно в таблице шагов отдельной строкой, так что два числа сходятся построчно. Отказы, взятые из прошлого журнала, в счётчик отказов не попадают. Сводка описывает ровно ту точку, которая записана в переменные модели.

Если у прогона были шаги, не израсходовавшие бюджет (только у конвейера, см. ниже), сводка печатает отдельную строку «шагов в мониторе N, из них K без расхода бюджета» — она и связывает длину таблицы с числом расчётов: N − K равно числу оценок из строки бюджета.

Повторные прогоны (тёплый старт). При повторном запуске оптимизации на неизменной физике и постановке задачи менеджер автоматически переиспользует накопленные ранее оценки, чтобы не пересчитывать уже известные точки. Если постановка изменилась (иные переменные, цели или модель), выполняется обычный «холодный» старт. Функция работает автоматически, отдельного переключателя в интерфейсе нет.

Значения оптимизируемых размеров в «неизменную физику» НЕ входят. Они — аргумент задачи, а не её условие: именно их оптимизация и перебирает. Отпечаток физики снимается так, будто все оптимизируемые переменные выставлены в одно и то же опорное значение, поэтому он не зависит от того, где именно прогон остановился.

Практическое следствие: запустить оптимизацию ещё раз сразу после успешного прогона — рабочий приём. Успешный прогон записывает лучшую точку в модель, но это не мешает тёплому старту, и повторный запуск продолжает поиск с уже накопленными оценками вместо того, чтобы считать их заново. Тот же приём рекомендует сводка прогона, когда локальный метод остановился по достигнутой точности, а цели не выполнены.

Холодный старт будет, если изменилось что-то ДРУГОЕ: геометрия помимо оптимизируемых размеров, сетка, настройки решения, набор переменных или целей, их диапазоны, веса, полосы, свёртка. Это и есть те изменения, после которых прошлые значения целевой функции перестают быть верными.

Сработавший тёплый старт виден в трёх местах:

  • строка в журнале решателя при старте — сколько оценок прошлого прогона доступно (засеяно) для повторного использования; отсутствие строки означает холодный прогон;
  • подвал виджета мониторинга — «Тёплый старт: переиспользовано точек: N из M», где M — сколько точек засеяно, N — сколько из них прогон уже переиспользовал;
  • таблица шагов и график сходимости — каждая переиспользованная точка видна отдельной строкой со статусом «переиспользован» (курсивом) и полым маркером на графике; «Показать шаг» на такой строке работает (см. Мониторинг оптимизации). Второй и последующие заходы в ту же точку показываются как «повтор шага N» — переиспользование считается один раз на точку, поэтому N подвала не может превысить M.

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

Повторный заход в точку внутри одного прогона — вещь того же рода, но другого происхождения: метод возвращается в точку, которую этот же прогон уже посчитал. Такая проба тоже видна в таблице отдельной строкой, со статусом «повтор шага N» и полым маркером на графике, где N — шаг, на котором точка считалась. В отборе лучшей точки она не участвует: точка уже участвовала на шаге N и обойти саму себя не может. Бюджет она расходует так же, как обычная проба, — кроме конвейера, который считает бюджет по посчитанным точкам, и там такие шаги ему ничего не стоят (в подвале они показаны второй цифрой).

Тёплый старт работает и у конвейерных методов. Раньше это было единственное исключение: у конвейера есть собственный кэш, и точки прошлого прогона засевались в кэш, к которому такой прогон не обращался, — строка подвала показывала «0 из M». Свой кэш у конвейера остался, он просто стоит первым слоем: точку, которой в нём нет, менеджер отдаёт из засеянных.

Прогон с ограничениями тёплый старт использует, но засевает осторожно: точка переиспользуется только вместе с видом движка на неё — значением ограничения, измеренным в ней. Записи журнала, где этого числа нет (журнал прошлой сборки), и любые штрафные шаги не засеваются вовсе и пересчитываются заново: подставленное значение увело бы метод от точки, которая может оказаться допустимой. Практически это значит, что после такого прогона переиспользуемых точек предлагается меньше; сколько именно — говорит строка подвала виджета мониторинга.

Готовые примеры

К набору страниц прилагается сборник из одиннадцати разобранных постановок — по одной на каждый метод: геометрия с размерами, варьируемые параметры, цели, настройки метода и то, что должно получиться.

  • Сборник примеров оптимизации — сами постановки, от доверительной области до связки Глобальный → локальный.
  • Как выбраны примеры — обоснования: почему такая модель для такого метода, откуда взяты числа, что в примерах намеренно упрощено.

Быстрый путь: найдите в сборнике пример того метода, который выбрали по таблице Как выбрать метод, и повторите его постановку на своей модели.