Примеры оптимизации
В данном разделе описаны одиннадцать готовых проектов, каждый из которых демонстрирует один метод оптимизации. Проекты запускаются без подготовки: геометрия, порты, развёртка, переменные, цели и настройки метода в них уже заданы.
Каталог: 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 |
| G3 | 5-секционный трансформатор 50 → 100 Ом, 3 ГГц | 5 |
| G4 | 3-звенный полосовой фильтр на связанных линиях, 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 %, а его целиком съедают смещение центра полосы оптимизатором и численный шум.
Порядок действий перед тем, как задавать полосу:
- Рассчитайте структуру на исходных размерах и снимите достижимую полосу с графика.
- Оцените добротность: Q = (S − 1) / (√S · FBW).
- Задайте полосу цели с запасом - примерно в полтора раза уже достижимой. Запас нужен на то, что оптимизатор смещает центр полосы, а численный шум размывает край.
Порог должен быть на границе достижимого
Запас у порога должен быть соразмерным, а не любым. Слишком мягкая цель портит постановку так же, как недостижимая, только иначе: прогон останавливается на первой попавшейся допустимой точке, и та не имеет ничего общего с инженерным решением.
Для нерезонансных структур - трансформаторов, фильтров, ответвителей - предел даёт сам синтез: у трансформатора 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,410 | 63,127 |
M_g по КСВН | 63,127 | 63,127 |
A_g по КПД | 1,466 | 2,031 |
M_g по КПД | 2,031 | 2,031 |
F | 27,938 | 32,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 - число переменных.
| n | 2 | 3 | 4 | 5 | 7 | 10 | 12 |
|---|---|---|---|---|---|---|---|
| Авто-бюджет | 50 | 60 | 80 | 100 | 140 | 200 | 240 |
Локальным методам на малых размерностях этого достаточно. Популяционным методам почти всегда мало: бюджет должен покрывать хотя бы одну-две популяции.
| Метод | Размер популяции по умолчанию | При n = 5 | При n = 12 |
|---|---|---|---|
| Адаптивная эволюция (ISRES) | 20·(n + 1) | 120 | 260 |
| Эволюционная стратегия (ESCH) | 40 родителей и 60 потомков, от n не зависит | 100 | 100 |
| Управляемый случайный поиск (CRS2) | 10·(n + 1) | 60 | 130 |
| Ковариационная адаптация (CMA-ES) | 4 + ⌊3·ln n⌋ | 8 | 11 |
Порог стагнации должен быть больше размера поколения, а не только больше начального заполнения. Пока популяция заполняется, кандидаты берутся случайно, и улучшения лучшей точки становятся всё реже - это свойство случайной выборки, а не признак сходимости. Если порог меньше поколения, счётчик «без улучшения» переполнится раньше, чем метод успеет сделать хотя бы один отбор, и прогон закончится в тот момент, когда метод только готов начать работу. У Управляемого случайного поиска заполнение стоит всю популяцию 10·(n+1), у Эволюционной стратегии поколение при автоматической популяции равно 60 потомкам. У Адаптивной эволюции и Ковариационной адаптации поля стагнации нет вовсе, и это не упущение: обе останавливаются по своим критериям.
Отдельно учитывайте стоимость одного расчёта. При заданных вручную локальных размерах сетки она почти постоянна; при включённой адаптивности зависит от геометрии и меняется от пробы к пробе. Отношение габарита к наименьшему элементу показывает, насколько густой должна быть сетка, но предсказателем времени прогона не является: решающими оказываются открытая граница, число портов и число точек развёртки.
| Модель | Габарит, мм | Наименьший элемент, мм | Портов | Открытая граница |
|---|---|---|---|---|
| G8 LC-ФНЧ | 16 × 16 | 0,6 | 2 | нет |
| G6 ответвитель | 56 × 48 | 1,5 | 4 | нет |
| G5 согласователь | 100 × 60 | 3,05 | 2 | нет |
| G2 диполь | воздушный бокс ≈124 | 1,0 | 1 | да |
| G1 патч | воздушный бокс ≈130 | 1,0 | 1 | да |
| G3 трансформатор | 90 × 20 | 0,25 | 2 | нет |
| G10 тейпер | 79,12 × 18 | 0,50 | 2 | нет |
| G12 переход WR-90 | 22,86 × 10,16 × 64 (объёмная) | 0,635 | 2 | нет |
| G4 полосовой фильтр | 228 × 46 по максимуму диапазонов | 0,20 | 2 | нет |
Модели с открытой границей дороже, чем показывает это отношение, потому что объём воздушного бокса сравним с кубом длины волны. Для быстрого знакомства с поведением метода берите модель 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):
| Метод | Начальный шаг | Первые пробы отстоят от старта на |
|---|---|---|
| Доверительная область, пример 1 | 0,150 | 0,6 мм по L и 0,9 мм по W |
| Симплекс, пример 2 | 0,100 | 0,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 (на методе, который его не поддерживает) |
| Вес цели, отличный от 1 | 11 |
| Свёртка «Сумма» | 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 и S41 | 11 |
| Стартовый рапорт печатает замечания | 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 предел измеряется прогоном |
Сводная таблица примеров
| № | Файл проекта | Метод | Модель | Перем. | Типы переменных | Целей | Свёртка | Агрегация | Бюджет |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 01_TrustRegion_BOBYQA.gma | Доверительная область | G1 | 2 | непрерывные | 2 | Сумма | Сглаж. максимум | авто 50 |
| 2 | 02_Simplex_SBPLX.gma | Симплекс | G1 | 2 | непрерывные | 2 | Сумма | Худшая точка | авто 50 |
| 3 | 03_ConstrainedSearch_COBYLA.gma | Поиск с ограничениями | G1 | 3 | непрерывные | 2 | Сумма | Сглаж. максимум | авто 60 |
| 4 | 04_SystematicGlobal_DIRECT-L.gma | Систематический глобальный | G12 | 7 | непрер. ×6 + с шагом | 2 (минимизировать + ограничение) | Сумма | Сглаж. максимум | 400 |
| 5 | 05_ControlledRandomSearch_CRS2.gma | Управляемый случайный поиск | G3 | 5 | с шагом ×5 | 1 (минимизировать) | Сумма | Сглаж. максимум | 400 |
| 6 | 06_AdaptiveEvolution_ISRES.gma | Адаптивная эволюция | G4 | 4 | непрер. + список + с шагом | 4 (три ограничения) | Сумма | Сглаж. максимум | 400 |
| 7 | 07_EvolutionaryStrategy_ESCH.gma | Эволюционная стратегия | G8 | 5 | список ×5 | 3 | Сумма | Сглаж. максимум | 300 |
| 8 | 08_AdaptiveGlobal_MaxLIPO.gma | Адаптивный глобальный | G2 | 2 | непрерывные | 1 (минимизировать) | Сумма | Среднее | 80 |
| 9 | 09_CovarianceAdaptation_CMA-ES.gma | Ковариационная адаптация | G10 | 12 | непрерывные | 1 (минимизировать) | Сумма | Худшая точка | 600 |
| 10 | 10_Multistart_MLSL.gma | Мультистарт | G5 | 4 | непрерывные | 1 (минимизировать) | Сумма | Сглаж. максимум | 200 |
| 11 | 11_GlobalLocal_Pipeline.gma | Глобальный → локальный | G6 | 4 | непрерывные | 6 | Минимакс | Худшая точка | 300 |