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

Примеры оптимизации

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

Каталог: Sources/Files/Examples/Optimization/

Смежные разделы:

Как пользоваться набором

Если вы выбираете метод для своей задачи - начните с раздела Как выбрать метод. Дерево выбора приведёт к одному-двум подходящим методам, после чего откройте соответствующий пример и посмотрите, как оформлена постановка.

Если вы изучаете возможности подсистемы - идите по примерам подряд. Они выстроены по возрастанию сложности: примеры 1-3 показывают одну антенну с одной-двумя целями, примеры 4-10 добавляют дискретные переменные, жёсткие ограничения, объёмную модель и большие размерности, пример 11 собирает шесть конкурирующих целей.

Если нужен конкретный приём - найдите его в таблице Где что показано.

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

МетодПример с описанием
1Доверительная область (BOBYQA)Пример 1. Доверительная область (BOBYQA)
2Симплекс (SBPLX)ex-02-simplex-sbplx.md
3Поиск с ограничениями (COBYLA)ex-03-constrained-search-cobyla.md
4Систематический глобальный (DIRECT-L)ex-04-systematic-global-directl.md
5Управляемый случайный поиск (CRS2)ex-05-controlled-random-search-crs2.md
6Адаптивная эволюция (ISRES)ex-06-adaptive-evolution-isres.md
7Эволюционная стратегия (ESCH)ex-07-evolution-strategy-esch.md
8Адаптивный глобальный (MaxLIPO)ex-08-adaptive-global-maxlipo.md
9Ковариационная адаптация (CMA-ES)ex-09-covariance-adaptation-cmaes.md
10Мультистарт (MLSL)ex-10-multistart-mlsl.md
11Глобальный → локальный (конвейер)ex-11-global-local-pipeline.md

Полный состав полей каждой страницы метода с умолчаниями собран в таблице Поля страниц методов и их умолчания; в описаниях примеров указаны только значения, отличающиеся от умолчаний или существенные для постановки.

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

Девять моделей на одиннадцать примеров

Часть моделей используется несколькими примерами - так можно сравнивать методы на одной и той же задаче.

МодельЧто этоПримеры
G1микрополосковый патч с врезкой, 2,45 ГГц1, 2, 3
G2печатный полосковый диполь, 2,45 ГГц8
G35-секционный трансформатор 50 → 100 Ом, 3 ГГц5
G43-звенный полосовой фильтр на связанных линиях, 1,0 ГГц6
G5двухшлейфовый согласователь, 2 ГГц10
G6квадратурный ответвитель branch-line, 2 ГГц11
G12переход коаксиал → WR-90: зонд с утолщением плюс диафрагма, 8,2–12,4 ГГц4
G8ФНЧ на элементах ряда E12, срез 1 ГГц7
G10дискретизованный тейпер 50 → 100 Ом, 12 секций9

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

Цели, настройки метода, бюджеты и всё, что относится к постановке задачи, приведены в описании соответствующего примера.

Что общее у всех примеров

Восемь из девяти моделей планарные и построены на одной подложке, чтобы результаты были сравнимы. Девятая, G12, к ним не относится - см. «Модель G12 стоит особняком» ниже.

Планарные модели:

ПараметрЗначение
МатериалFR-4
Относительная диэлектрическая проницаемость4,4
Тангенс угла потерь0,02
Толщина1,6 мм
Металлизацияграничное условие без толщины, проводимость меди 5,8·10⁷ См/м
Линия 50 Ом на этой подложкеW = 3,05 мм

Порты во всех моделях - сосредоточенные. Опорный импеданс задаётся в свойствах порта, поэтому рассогласованная нагрузка (примеры 5, 9, 10) реализуется без физического отрезка линии другого волнового сопротивления.

Развёртка во всех проектах - быстрый (интерполяционный) метод с шагом 0,001 ГГц; диапазон у каждой модели свой и указан в описании примера. Диапазон везде заметно шире полос целей: за краем полосы видно, чем оплачено то, что внутри неё.

Сетка задана вручную - это компромисс в пользу скорости

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

Что даёт такая настройка и чем за неё платят:

Локальные размеры, адаптивность выключена (как в примерах)Адаптивность включена с контролем точности
Время пробыкоротко и почти постоянно: числа проходов, зависящего от геометрии, просто нетдольше и непостоянно - число проходов зависит от геометрии
Погрешность дискретизациита, которую даёт выбранный размер; не проверенаконтролируется критерием сходимости адаптации
Численный шум δFсетка перестраивается при каждом изменении геометрии, поэтому δF не нулевойменьше, потому что меньше сама погрешность

Для собственных расчётов включайте адаптивность и контролируйте точность. Порядок тот же, что и всегда: задать критерий сходимости адаптации, измерить δF на своей модели и держать выше него допуск достижения цели и порог стагнации. Иначе прогон будет улучшать не характеристику, а сеточный шум - подробно в разделе Численный шум целевой функции.

Модель G12 стоит особняком

Восемь моделей планарные, девятая - волноводная, и три общих правила выше на неё не распространяются. Различия перечислены явно, чтобы они не выглядели недосмотром:

Планарные моделиG12, переход WR-90
Средаподложка FR-4, металл на нейвоздух внутри волновода, PTFE в коаксиале
Проводникиграничное условие без толщины на подложкелисты нулевой толщины; диафрагма - тело 1,0 мм
Портысосредоточенныеаналитические: коаксиальный TEM и прямоугольный TE10
Сеткалокальные размеры, адаптивность выключенаадаптивная по верхней частоте
Граница расчётной областивоздушный бокс либо кромки платызакрытая задача, граница - листы стенок

Развёртка при этом общая для всего набора: быстрый метод с шагом 0,001 ГГц. Аналитические порты снимают вопрос сходимости по модам, а адаптивная сетка взята потому, что у объёмной модели с проходом зонда через отверстие подобрать локальные размеры вручную заметно труднее, чем у планарной.

Значения в колонках «Оптимум≈» получены аналитическим синтезом и служат ориентиром. Полноволновой расчёт даёт результат, отличающийся на несколько процентов: сказываются разрывы, T-сочленения, краевые эффекты и погрешность плоскости отсчёта сосредоточенного порта. Читайте эти значения как ±3…5 %.


Требования к постановке

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

Полоса цели должна быть уже достижимой

Самая частая ошибка при постановке - задать полосу по «круглым» числам, а не по тому, что структура физически может. Резонансная структура согласуется в полосе, ширину которой определяет её добротность:

FBW = (S − 1) / (√S · Q) S - порог КСВН, Q - полная добротность

Для патча из модели G1 измеренная добротность Q = 27,8, откуда полоса КСВН ≤ 2 равна 2,5 %, то есть 62 МГц на 2,45 ГГц. Требование «КСВН ≤ 2 в полосе 2,40–2,50 ГГц» - это 100 МГц, или 4,1 %, и при такой добротности оно неисполнимо. Ослабление порога до КСВН ≤ 3 доводит достижимую полосу лишь до 102 МГц: формально 100 МГц покрываются, но запас составляет 2 %, а его целиком съедают смещение центра полосы оптимизатором и численный шум.

Порядок действий перед тем, как задавать полосу:

  1. Рассчитайте структуру на исходных размерах и снимите достижимую полосу с графика.
  2. Оцените добротность: Q = (S − 1) / (√S · FBW).
  3. Задайте полосу цели с запасом - примерно в полтора раза уже достижимой. Запас нужен на то, что оптимизатор смещает центр полосы, а численный шум размывает край.

Порог должен быть на границе достижимого

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

Для нерезонансных структур - трансформаторов, фильтров, ответвителей - предел даёт сам синтез: у трансформатора G3 полосу и уровень отражения задаёт число секций, поэтому порог выбирается так, чтобы его не проходили конфигурации с меньшим числом секций; у фильтра G4 полоса задана прототипом и равна ровно 10 %, поэтому цель совпадает с полосой прототипа, а порог КСВН выбран выше теоретического предела пульсаций.

То же касается порогов, не связанных с полосой. КПД излучения патча на FR-4 толщиной 1,6 мм равен примерно 42 % - это следует из добротностей (η = Q/Q_изл = 27,8/66). Требование «КПД ≥ 45 %» недостижимо, требование «КПД ≥ 35 %» выполнимо с запасом.

Чтобы знать предел, его надо измерить, а не предположить: поставьте условие «Минимизировать» или «Максимизировать», прогоните и возьмите результат за ориентир. Так сделано в примерах 5, 8, 9 и 10.

В целевую функцию должно входить то, что трудно

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

Ограничением делают то, что выполнимо, но нарушать нельзя. В целевую функцию отправляют то, ради чего запускается прогон. Если вынести в ограничения все трудные требования, а критерием оставить лёгкое, оптимизировать окажется нечего: критерий выполнится на первых же расчётах, целевая функция обратится в ноль и перестанет различать точки. Прогон продолжится, но лучшая точка замрёт на той, где лёгкий критерий впервые выполнился, - со статусом «недопустимо», потому что трудные требования при этом не выполнены.

Признак, что вы в это попали: F замерла на нуле, а лучшая точка помечена как недопустимая. Добавлять бюджет бесполезно, надо менять постановку.

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

Обратная ошибка тоже встречается: критерий, который непрерывно тянет против ограничений. Экстремальная цель «максимизировать |S21| в полосе пропускания» рядом с заградительной маской ведёт себя именно так - расширение полосы снижает потери, поэтому критерий выгодно нарушает маску, а ограничения его лишь отсекают, и поиск застревает в недопустимой области.

Чтобы увидеть набор решений, цель не должна быть пороговой

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

Мультистарт особенно чувствителен к этому, потому что показывает решения последовательно: второй локальный спуск начинается только после первого. С пороговой целью вы увидите ровно одно решение - то, которое нашлось первым.

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

Решение - снять порог, задав условие «Минимизировать» или «Максимизировать». У такой цели останова по достижению нет, поэтому прогон идёт до бюджета или до порога стагнации и успевает показать все спуски. Так устроен пример 10.

Стартовая точка должна быть удалена от решения, а не просто «расстроена»

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

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

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

У глобальных методов к этому добавляется второе требование, и оно важнее первого: проверять надо не удалённость старта, а меру допустимого множества. Если допустимые точки занимают заметную долю области, глобальный метод попадёт в них случайной пробой на первых же расчётах независимо от того, откуда стартовал. Разбор - в примере 8.


A_g и M_g: ландшафт поиска и вердикт

Это различение нужно понимать до чтения примеров: на нём построены разделы «Что должно получиться» у всех одиннадцати.

По каждой цели подсистема считает две величины, и обе видны в панели «Цели» монитора и в сводке прогона:

  • M_g - наихудшая выборка полосы, то есть штраф в самой плохой частотной точке. Это величина, по которой выносится вердикт: цель выполнена при M_g ≤ допуска достижения цели, жёсткое ограничение соблюдено при M_g ≤ допуска ограничения, нарушение = M_g − допуск. От режима агрегации M_g не зависит;
  • A_g - агрегат полосы, то есть свёртка штрафов всех частотных выборок в одно число выбранным режимом агрегации. Это ландшафт, который оптимизатор минимизирует. Целевая функция F собирается из A_g разных целей, а не из M_g.

Обе величины обращаются в нуль одновременно: A_g = 0 ровно тогда, когда M_g = 0, то есть когда порог соблюдён во всех точках полосы. Но малое ненулевое A_g не означает малого нарушения: узкий высокий выброс занимает малую долю полосы и даёт малый агрегат при большом M_g. Поэтому «F близка к нулю» и «цели выполнены» - разные утверждения, и второе проверяется только по M_g.

Разницу удобно увидеть на паре примеров 1 и 2: одна модель, одна стартовая геометрия 27,0 / 35,0, различается только режим агрегации.

ВеличинаПример 1, сглаженный максимумПример 2, худшая точка
A_g по КСВН54,41063,127
M_g по КСВН63,12763,127
A_g по КПД1,4662,031
M_g по КПД2,0312,031
F27,93832,579

У режима «худшая точка» A_g и M_g совпадают по определению. У сглаженного максимума агрегат лежит ниже наихудшей выборки - здесь на 13,8 % по КСВН и на 27,8 % по КПД. Направление расхождения одностороннее: сглаженный максимум не может превысить истинный. Величина зависит от того, насколько круто характеристика идёт внутри полосы.

Практическое следствие: порог, выставленный с запасом 10–15 %, на сглаженном максимуме может оказаться формально выполненным при фактическом нарушении в наихудшей точке. Если спецификация требует выполнения во всех точках полосы буквально, смотрите на M_g, а не на A_g.

Агрегация по полосе

РежимФормулаpСвойстваКогда применять
Сглаженный максимумA = (Σ wᵢ φᵢ^p)^(1/p)8почти строгая маска, гладкая функцияпо умолчанию; маски типа «КСВН ≤ 2 во всей полосе»
СреднееA = Σ wᵢ φᵢ1вклад выборки пропорционален нарушениюбыстрый дожим, «мягкие» требования
Худшая точкаA = max φᵢ-строгая маскамаксимально честная маска; функция негладкая

Здесь φᵢ - штраф отдельной частотной выборки, wᵢ - доля полосы, которую эта выборка представляет. Веса строятся по правилу трапеции и в сумме дают единицу, поэтому A_g не зависит ни от плотности расчётной сетки, ни от её неравномерности.

Агрегация решает исход, а не оттенок. Если требование по смыслу минимаксное - «не хуже X во всей полосе», - то «Среднее» здесь не «чуть мягче»: оно меняет найденное решение качественно, потому что позволяет обменять глубокий провал в одной части полосы на нарушение в другой. Измеренный разбор - в примере 5. И обратное: если требование действительно про среднее по полосе, сглаженный максимум будет гоняться за одиночным выбросом там, где вам он безразличен.

Режим применяется и к экстремальным целям: агрегат такой цели - мягкая наихудшая выборка знакового вклада. Отсюда две готовые постановки: «Минимизировать» + «Худшая точка» - минимаксная (минимум наихудшей точки полосы, единственное, что даёт равнопульсационное решение), «Максимизировать» + «Худшая точка» - максиминная. Пример 9 построен на первой из них.

Агрегация «Худшая точка» делает функцию негладкой, поэтому она применима с Симплексом, с Ковариационной адаптацией (метод ранжирует пробы, а не строит по ним модель) и с конвейером, у которого локальный этап - Симплекс. Доверительная область с ней несовместима.

Свёртка набора целей

Определяет, как вклады разных целей объединяются в F. Настройка отдельная от агрегации по полосе.

РежимСмысл
Суммавзвешенное среднее вкладов всех целей: F = Σ(w_g·A_g) / Σw_g
Минимаксмаксимум взвешенных вкладов, нормированный средним весом набора: F = max(w_g·A_g) / (Σw_g / n)

Название «Сумма» историческое: это именно взвешенное среднее, и нормирование важно для правильного понимания весов. Проверяется по журналу: в примере 1 при двух целях с весом 1 и вкладах 54,410 и 1,466 целевая функция равна 27,938, то есть полусумме.

Минимакс тянет вверх наихудшую из целей, что полезно, когда надо подтянуть отстающую характеристику, не жертвуя остальными. Его формула проверена на примере 11: при шести целях с весами 2, 2, 1, 1, 1, 1 средний вес равен 1,333, и F совпадает с формулой до последнего знака. Отсюда практическое следствие: вес меняет не только приоритет цели, но и масштаб F, поэтому значения целевой функции сравнимы только внутри одного набора целей.


Численный шум целевой функции

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

Шум нельзя убрать, но можно уменьшить и, главное, учесть.

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

Держите настройки сетки одинаковыми на весь прогон - базовый размер, критерий сходимости адаптации, число проходов, порядок элементов. Тогда сетка становится детерминированной функцией геометрии: одинаковые параметры дают одинаковую сетку и одинаковое значение функции. Это обеспечивает повторяемость в точке. Гладкости по параметрам это не даёт и дать не может.

Оцените δF до того, как потратите бюджет. Возьмите стартовую геометрию, измените один параметр на доли процента диапазона - настолько мало, что физика измениться не может, - и сравните значения целевой функции. Полученный разброс и есть δF. Это стоит двух расчётов и определяет все дальнейшие решения.

Задайте критерии останова выше δF. Допуск достижения цели меньше δF означает, что прогон гоняется за шумом: функция «улучшается» на величину, которой нет. То же касается допусков локальных методов и порога стагнации.

Выбирайте метод с учётом δF.

ЧувствительностьМетодыПочему
высокаяДоверительная область, Адаптивный глобальныйстроят модель по малым разностям: квадратичную и липшицеву соответственно. При большом δF модель подгоняется под шум, область доверия преждевременно сжимается
средняяСимплекс, Поиск с ограничениями, Мультистартсравнивают значения, но на малых шагах; Мультистарт наследует поведение локального спуска
низкаяУправляемый случайный поиск, Адаптивная эволюция, Эволюционная стратегия, Ковариационная адаптация, Систематический глобальныйранжируют кандидатов, а не дифференцируют функцию; Систематический глобальный сравнивает центры подобластей, разделённых конечным расстоянием

Если δF сравним с тем выигрышем, за который вы боретесь, берите методы из нижней строки либо конвейер, у которого основную работу делает глобальный этап.

Агрегация по полосе тоже влияет на шум. «Худшая точка» его усиливает: наихудший узел может меняться от расчёта к расчёту из-за шума, а не из-за геометрии. «Сглаженный максимум» усредняет часть шума. «Среднее» подавляет его сильнее всего.

Разница значений функции меньше δF - не разница. Два решения, отличающиеся в пределах шума, сравнивайте по другим признакам: технологичности, габариту, чувствительности к допускам.


Как выбрать метод

Дерево выбора

Дерево выбора

Если ответить на вопросы дерева не получается - возьмите Глобальный → локальный. Это единственный метод, который не требует заранее знать, глобальная задача или локальная: он сначала разведывает пространство параметров, затем дожимает найденную точку. Воспроизводимость при этом полная и от выбора этапов не зависит.

Свойства методов

МетодКлассСтартовая точкаДискретные осиЖёсткие ограниченияРазмерностьСвой критерий сходимости
Доверительная область (BOBYQA)локальныйиспользуетмедленнонет2–10есть
Симплекс (SBPLX)локальныйиспользуетмедленнонет2–10есть
Поиск с ограничениями (COBYLA)локальныйиспользуетмедленнода2–10есть
Систематический глобальный (DIRECT-L)глобальный, детерминированныйигнорируетхорошонет≤ 8нет - задайте порог стагнации
Управляемый случайный поиск (CRS2)глобальный, стохастическийиспользуетхорошонет> 8точность по параметрам
Адаптивная эволюция (ISRES)глобальныйиспользуетмедленнода5–15точность по параметрам
Эволюционная стратегия (ESCH)глобальныйиспользуетмедленнонет5–15нет - задайте порог стагнации
Адаптивный глобальный (MaxLIPO)глобальныйиспользуетмедленнонет2–8нет - задайте порог стагнации
Ковариационная адаптация (CMA-ES)глобальныйиспользуетмедленнонет10–40есть
Мультистарт (MLSL)мультистарт с дожимомиспользуетмедленнонет3–10нет - задайте порог стагнации
Глобальный → локальныйсвязкаиспользуетхорошода, если локальный этап - Поиск с ограничениямилюбаяпо этапам

Четыре столбца требуют пояснения.

Стартовая точка. «Использует» не значит «нужна». У популяционных методов (CRS2, ISRES, ESCH, CMA-ES) текущая конструкция становится первой особью популяции, поэтому итог прогона не бывает хуже старта - но и без хорошего начального приближения они работают. Единственный метод, который стартовую точку действительно игнорирует, - Систематический глобальный (DIRECT-L): он делит всю область, и первый расчёт всегда идёт в центре диапазонов.

Дискретные оси. К узлу округляют ВСЕ методы - это делает общий слой кодирования переменных, а не сам метод, поэтому результат корректен всегда и лучшая точка всегда лежит в узле. Различает эффективность, и «хорошо» - ровно у трёх методов: DIRECT-L, CRS2 и связка. У остальных сходимость может быть медленной, и стартовый рапорт выдаёт об этом примечание. Причина разная. Методы, строящие непрерывную модель функции (Доверительная область - квадратичную, COBYLA - линейную, MaxLIPO - липшицеву, CMA-ES - гауссову), внутри ступени видят нулевой градиент и объявляют сходимость преждевременно. Эволюционные ISRES и ESCH работают штатно, но часть бюджета уходит на повторные попадания в один и тот же узел: в примере 7 это 125 расчётов из 214, то есть 58 % бюджета. Подробно - Варьируемые параметры.

Размерность. Из реестра идут только четыре границы, и только они дают примечание стартового рапорта: DIRECT-L не выше 8, CMA-ES 10–40, ISRES и ESCH не ниже 5. Остальные диапазоны в столбце - редакционная рекомендация этого сборника; выход за них расчёту не мешает и в рапорте не отражается.

Свой критерий сходимости. Четыре метода - DIRECT-L, ESCH, MaxLIPO и Мультистарт - не умеют остановиться сами: без порога стагнации прогон израсходует весь бюджет и после того, как перестанет улучшать результат. Поэтому у них на странице есть поле «Останов без улучшения», а стартовый рапорт напоминает о нём, если порог выключен.

Сколько расчётов заказывать

Автоматический бюджет равен max(50, 20·n), где n - число переменных.

n234571012
Авто-бюджет506080100140200240

Локальным методам на малых размерностях этого достаточно. Популяционным методам почти всегда мало: бюджет должен покрывать хотя бы одну-две популяции.

МетодРазмер популяции по умолчаниюПри n = 5При n = 12
Адаптивная эволюция (ISRES)20·(n + 1)120260
Эволюционная стратегия (ESCH)40 родителей и 60 потомков, от n не зависит100100
Управляемый случайный поиск (CRS2)10·(n + 1)60130
Ковариационная адаптация (CMA-ES)4 + ⌊3·ln n⌋811

Порог стагнации должен быть больше размера поколения, а не только больше начального заполнения. Пока популяция заполняется, кандидаты берутся случайно, и улучшения лучшей точки становятся всё реже - это свойство случайной выборки, а не признак сходимости. Если порог меньше поколения, счётчик «без улучшения» переполнится раньше, чем метод успеет сделать хотя бы один отбор, и прогон закончится в тот момент, когда метод только готов начать работу. У Управляемого случайного поиска заполнение стоит всю популяцию 10·(n+1), у Эволюционной стратегии поколение при автоматической популяции равно 60 потомкам. У Адаптивной эволюции и Ковариационной адаптации поля стагнации нет вовсе, и это не упущение: обе останавливаются по своим критериям.

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

МодельГабарит, ммНаименьший элемент, ммПортовОткрытая граница
G8 LC-ФНЧ16 × 160,62нет
G6 ответвитель56 × 481,54нет
G5 согласователь100 × 603,052нет
G2 дипольвоздушный бокс ≈1241,01да
G1 патчвоздушный бокс ≈1301,01да
G3 трансформатор90 × 200,252нет
G10 тейпер79,12 × 180,502нет
G12 переход WR-9022,86 × 10,16 × 64 (объёмная)0,6352нет
G4 полосовой фильтр228 × 46 по максимуму диапазонов0,202нет

Модели с открытой границей дороже, чем показывает это отношение, потому что объём воздушного бокса сравним с кубом длины волны. Для быстрого знакомства с поведением метода берите модель G8 или G6. Примеры 4 и 6 (модели G12 и G4) рассчитаны на подготовленный стенд: G4 - из-за габарита и мелкого зазора, G12 - потому что она объёмная и считается на адаптивной сетке.

Поля страниц методов и их умолчания

Бюджет задаётся на странице метода, там же живут все остальные его настройки.

МетодПоля страницы и умолчания
Доверительная область (BOBYQA)Бюджет 0 = авто (не ниже 2n+2) · Начальный шаг 0,150 · Точность по параметрам 0,0010 · Останов без улучшения 0 = выкл
Симплекс (SBPLX)Бюджет 0 = авто (не ниже n+2) · Начальный шаг 0,100 · Точность по параметрам 0,0050 · Останов без улучшения 0 = выкл
Поиск с ограничениями (COBYLA)Бюджет 0 = авто (не ниже n+2) · Начальный шаг 0,150 · Точность по параметрам 0,0020 · поля останова без улучшения нет
Систематический глобальный (DIRECT-L)Бюджет 0 = авто · Равномерное покрытие выкл · Останов без улучшения 0 = выкл · поля точности по параметрам нет
Управляемый случайный поиск (CRS2)Бюджет 0 = авто (не ниже размера популяции) · Размер популяции 0 = авто 10·(n+1) · Зерно ГСЧ 1 · Останов без улучшения 0 = выкл · Точность по параметрам 0,0010
Адаптивная эволюция (ISRES)Бюджет 0 = авто · Размер популяции 0 = авто 20·(n+1) · Зерно ГСЧ 1 · Точность по параметрам 0,0010 · поля останова без улучшения нет
Эволюционная стратегия (ESCH)Бюджет 0 = авто · Размер популяции 0 = авто (40 родителей и 60 потомков) · Зерно ГСЧ 1 · Останов без улучшения 0 = выкл
Адаптивный глобальный (MaxLIPO)Бюджет 0 = авто · Точность дожима 0,0010 · Останов без улучшения 0 = выкл · поля зерна нет
Ковариационная адаптация (CMA-ES)Бюджет 0 = авто · Начальный шаг sigma0 0,30 · Размер поколения 0 = авто 4 + ⌊3·ln n⌋ · Зерно ГСЧ 1 · Рестарты (IPOP) вкл · поля останова без улучшения нет
Мультистарт (MLSL)Бюджет 0 = авто · Локальный метод Доверительная область · Бюджет одного спуска 50 · Начальный шаг 0,150 · Точность по параметрам 0,0010 · Останов без улучшения 0 = выкл · поля зерна нет
Глобальный → локальныйБюджет 0 = авто · Пресет Авто · Доля глобального этапа 0,60 · Радиус локального этапа 0,150 · Мин. расстояние рестартов 0,100 · Рестарты вкл · поля зерна нет

Полужирным выделены умолчания, отличающиеся от привычных по другим методам.

Начальный шаг и точность по параметрам задаются в долях диапазона переменной, а не в её единицах. Проверено по журналам примеров 1 и 2 на одной модели с диапазонами L 26–30 (размах 4,0) и W 33–39 (размах 6,0):

МетодНачальный шагПервые пробы отстоят от старта на
Доверительная область, пример 10,1500,6 мм по L и 0,9 мм по W
Симплекс, пример 20,1000,4 мм по L и 0,6 мм по W

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

Связка настройки своих этапов не переопределяет. От неё этап получает долю бюджета и допуск цели; всё остальное - встроенные умолчания его собственного метода, ровно те, что страница показывает в новом проекте. Единственное исключение: этапам Систематический глобальный и Эволюционная стратегия точность по параметрам выставляется в 0, потому что своей сходимости по параметрам у этих методов нет. Кроме бюджета и допуска цели связка задаёт глобальному этапу ещё две величины: размер популяции зажимается так, чтобы в долю бюджета влезало около четырёх поколений, и включается порог стагнации в четверть доли этапа.

Общие настройки

Если в описании примера не сказано иное, в группе Common используются значения по умолчанию:

ПолеЗначение
Допуск достижения цели0,001
Агрегация по полосеСглаженный максимум
Свёртка целейСумма

Это все три поля группы. Зерно ГСЧ в Общие не входит - оно живёт на странице метода и есть только у четырёх методов: Управляемого случайного поиска, Адаптивной эволюции, Эволюционной стратегии и Ковариационной адаптации. По умолчанию зерно равно 1, поэтому эти четыре метода воспроизводимы без всякой настройки; ноль означает «взять по времени» и нужен только для серии независимых попыток. У остальных семи методов поля зерна нет: Систематический глобальный, Мультистарт, Адаптивный глобальный, три локальных метода и связка воспроизводимы по построению.

Значение допуска достижения цели 0,001 - умолчание, а не рекомендация: его надо сверить с численным шумом вашей модели.

Экстремальные цели меняют условия останова

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

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

Масштаб нормировки считается тем же режимом, что и агрегат, поэтому на стартовой геометрии A_g экстремальной цели равен ±1 в любом режиме, а значения A_g одной и той же цели при разных режимах между собой несравнимы. Читается A_g прямо: 0,5 означает «вдвое лучше старта».

Экстремальные цели используются в примерах 3, 5, 8, 9, 10 и 11.

Не сочетайте условие «Максимизировать» со свёрткой «Минимакс». Вклад такой цели тем меньше, чем лучше результат, а Минимакс берёт максимум среди вкладов - цель, оказавшаяся лучше наихудшего порога, из свёртки практически выпадает и перестаёт оптимизироваться. Для наборов с «Максимизировать» используйте свёртку «Сумма» и регулируйте баланс весами.

Смешивать экстремальную цель с пороговыми в свёртке «Сумма» стоит только тогда, когда пороги заведомо выполнимы с запасом. Вклады живут на несопоставимых масштабах: у экстремальной цели он нормирован единицей и гуляет в пределах примерно 0,5…2, у пороговой это превышение в нормированных единицах и на плохой геометрии составляет десятки. При таком отношении критерий не виден ни при каком весе. Пример 11 показывает работающее сочетание: четыре порога на границе достижимого плюс одна экстремальная цель.


Журнал и сводка

Журнал не дублирует ход прогона - поитерационные данные живут в виджете мониторинга. В журнал пишутся блок на старте, ошибки по ходу прогона и сводка по окончании.

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


Где что показано

ВозможностьПримеры
Непрерывные переменные1, 2, 3, 4, 6, 8, 9 (двенадцать осей), 10, 11
Переменные «с шагом»5 (все пять осей), 4 (одна из трёх), 6
Переменные «список»7 (все пять осей), 6
Три типа переменных в одной задаче6
Величина КСВНвсе, кроме 4 и 9
Величина S-параметр4 (обе цели), 6, 7, 9, 11
Величина КПД излучения1, 2, 3
Условие «Меньше»1, 2, 3, 4, 6, 7, 11
Условие «Больше»1, 2, 6, 7, 11
Условие «Равно» с допуском11
Условие «Минимизировать»4, 5, 8, 9, 10, 11
Условие «Максимизировать»3
Единицы «Без единиц» там, где есть выбор2 (КПД), 11 (|S41|)
Единицы «дБ»4, 6, 7, 11
Единицы «Процент»1 (КПД)
Жёсткое ограничение с допуском3 (одно), 6 (три из четырёх целей), 4 (на методе, который его не поддерживает)
Вес цели, отличный от 111
Свёртка «Сумма»1, 2, 3, 4, 5, 6, 7, 8, 10
Свёртка «Минимакс»11
Агрегация «Сглаженный максимум»1, 3, 4, 5, 6, 7, 10
Агрегация «Худшая точка»2, 9, 11
Агрегация «Среднее»8
Набор из нескольких целей1, 2, 3, 4, 6, 7, 11 (шесть целей)
Единственная цель5, 8, 9, 10
Две разные полосы в одном наборе7, 11; три полосы - 6
Четырёхпортовая модель, S31 и S4111
Стартовый рапорт печатает замечания6 (дискретные оси и размерность), 7 (дискретные оси и выключенный порог)
Порог стагнации задан1, 2, 4, 8, 10
Порог стагнации намеренно выключен5, 7
Свой размер популяции7 (12 вместо авто 40 родителей)
Сравнение всех методов на одной постановке7
Оценка численного шума δFсценарий в примере 1
Аналитические порты, объёмная модель, адаптивная сетка4
Проверка исчерпанности топологии по интегралу Боде-Фано4
Замечание рапорта категории «Несовместимо»4
Проверка достижимости порога или полосы цели1, 2, 3, 5, 6, 7, 8, 10, 11; в 4 и 9 предел измеряется прогоном

Сводная таблица примеров

Файл проектаМетодМодельПерем.Типы переменныхЦелейСвёрткаАгрегацияБюджет
101_TrustRegion_BOBYQA.gmaДоверительная областьG12непрерывные2СуммаСглаж. максимумавто 50
202_Simplex_SBPLX.gmaСимплексG12непрерывные2СуммаХудшая точкаавто 50
303_ConstrainedSearch_COBYLA.gmaПоиск с ограничениямиG13непрерывные2СуммаСглаж. максимумавто 60
404_SystematicGlobal_DIRECT-L.gmaСистематический глобальныйG127непрер. ×6 + с шагом2 (минимизировать + ограничение)СуммаСглаж. максимум400
505_ControlledRandomSearch_CRS2.gmaУправляемый случайный поискG35с шагом ×51 (минимизировать)СуммаСглаж. максимум400
606_AdaptiveEvolution_ISRES.gmaАдаптивная эволюцияG44непрер. + список + с шагом4 (три ограничения)СуммаСглаж. максимум400
707_EvolutionaryStrategy_ESCH.gmaЭволюционная стратегияG85список ×53СуммаСглаж. максимум300
808_AdaptiveGlobal_MaxLIPO.gmaАдаптивный глобальныйG22непрерывные1 (минимизировать)СуммаСреднее80
909_CovarianceAdaptation_CMA-ES.gmaКовариационная адаптацияG1012непрерывные1 (минимизировать)СуммаХудшая точка600
1010_Multistart_MLSL.gmaМультистартG54непрерывные1 (минимизировать)СуммаСглаж. максимум200
1111_GlobalLocal_Pipeline.gmaГлобальный → локальныйG64непрерывные6МинимаксХудшая точка300