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

Цели и целевая функция

Создание цели

Цель задается в окне Новая функция оптимизации. Чтобы его открыть и создать цель, необходимо выполнить следующие действия:

  1. Во вкладке Решение в выпадающем списке Оптимизационный анализ выбрать Новая функция.

  2. В окне Новая функция оптимизации выбрать Тип функции, Спецификацию порта, заполнить Параметры функции и Диапазон частот, а также нажать галочку Активировать для оптимизации и при необходимости добавить Ограничение.

Величины

ВеличинаЕдиницыПримечание
КСВНбезразмерная, ≥ 1вычисляется по коэффициенту отражения выбранного порта
S-параметрлинейная величина |S_kl| ∈ [0, 1]указываются индексы портов k, l; значение НЕ в дБ
КПДдоля [0, 1]КПД излучения при возбуждении выбранного порта

Единицы ввода цели

Значение цели вводится в удобных единицах — их выбирает комбо единиц (поле рядом с полем цели):

ЕдиницыПоле в интерфейсеСмысл
Без единицБезразмернаялинейное значение величины
дБдБдецибелы
Процент%проценты

Единица по умолчанию подбирается по типу величины: S-параметр → дБ, КПД → %, КСВН → линейное значение (Без единиц). Введённое значение приводится к линейному виду и хранится внутри линейным, поэтому двойной конверсии в диалоге нет.

Комбо всегда показывает все три единицы, но не всякая подходит к величине: у КСВН допустима только «Без единиц», у S-параметра — «Без единиц» или «дБ», у КПД — любая из трёх. При неподходящем сочетании кнопка OK гаснет.

Условие и допуск

УсловиеПоле в интерфейсеСмыслШтраф равен нулю, когда
Меньше<величина ≤ целиво всех точках полосы величина не выше цели
Больше>величина ≥ целиво всех точках полосы величина не ниже цели
Равно=величина = цель ± допусквеличина внутри «коридора» цель ± допуск
МинимизироватьМинимизироватьвеличину минимизируют(цель без порога — см. ниже)
МаксимизироватьМаксимизироватьвеличину максимизируют(цель без порога — см. ниже)

Три пороговых условия показаны в комбо знаками <, >, =, а не словами; экстремальные — словами Минимизировать / Максимизировать.

Допуск задаётся только для условия «равно», в единицах величины; он определяет ширину коридора, внутри которого отклонение не штрафуется.

Экстремальные цели (Минимизировать / Максимизировать)

Условия Минимизировать и Максимизировать не имеют порога и поля цели: задаются только величина, полоса частот и вес.

Такая цель даёт в целевую функцию знаковый вклад: для «Минимизировать» он растёт вместе с величиной, для «Максимизировать» — с обратным знаком (чем больше величина, тем меньше вклад).

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

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

  • «Минимизировать» + «Худшая точка» — минимаксная постановка: минимум наихудшей точки полосы. Для КСВН это основной практический случай: равнопульсационное решение получается только так;
  • «Максимизировать» + «Худшая точка» — максиминная: максимум наихудшей точки полосы. То же самое для КПД и |S₂₁|.

Масштаб нормировки считается тем же режимом, что и агрегат, поэтому на стартовой геометрии A_g экстремальной цели равен ±1 в любом режиме, а значения A_g одной и той же цели при разных режимах между собой несравнимы. У экстремальной цели теперь измеряются и наихудшая выборка M_g (знаковая, при «Максимизировать» отрицательная), и её частота f*: обе видны в панели «Цели» монитора и в сводке прогона. В вердикт о выполнении целей и о соблюдении ограничений M_g экстремальной цели не входит — порога у такой цели нет.

Из-за знакового вклада целевая функция при наличии экстремальных целей может принимать отрицательные значения — тогда график сходимости в мониторе строится по линейной оси (см. Мониторинг).

Экстремальная цель не сочетается с признаком «жёсткое ограничение»: при выборе условия «Минимизировать»/«Максимизировать» флажок ограничения снимается и блокируется. Экстремальные цели требуют достаточного бюджета расчётов: при бюджете менее 50 стартовый рапорт совместимости выдаёт соответствующее примечание (см. Методы оптимизации).

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

Когда прогон останавливается

Набор без экстремальных целей останавливается досрочно, как только выполнены все цели, а предмет сравнения здесь — наихудшая выборка M_g каждой пороговой цели: цель выполнена при M_g ≤ «Допуска достижения цели», и прогон закрывается, только когда это верно у всех пороговых целей сразу. Сравнение целевой функции с допуском отменено: F — свёртка вкладов, и её малость сама по себе не означает, что каждая цель выполнена в своей наихудшей точке. M_g видна в панели «Цели» монитора, печатается в сводке прогона и отложена рядом с линией цели на графике сходимости.

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

Полоса частот

Цель действует в полосе [f_min, f_max]; штраф считается по частотным точкам расчётной сетки, попавшим в полосу. Полоса обязана содержать хотя бы одну точку сетки — иначе запуск оптимизации завершится ошибкой с именем цели. Для цели «в одной точке» задайте f_min = f_max, совпадающие с точкой сетки.

Вес

Относительная важность цели при свёртке в общую целевую функцию. Вес 2 против веса 1 означает вдвое больший вклад нарушения этой цели. На цели, выполненные полностью, вес не влияет (их вклад нулевой).

Ограничение

Флажок Ограничение переводит цель из свёртки в ограничение допустимости:

  • ограничения соблюдают методы Поиск с ограничениями (COBYLA) и Адаптивная эволюция (ISRES), а также конвейер Глобальный → локальный, если локальным этапом выбран COBYLA (пресет Авто делает это автоматически; при ручном выборе другого локального этапа ограничение свёртывается в штраф с предупреждением в журнале): такие цели трактуются как условия допустимости, а критерием служат остальные цели;
  • прочие методы сворачивают цель-ограничение в целевую функцию как взвешенный штраф; в журнале выводится предупреждение, а стартовый рапорт совместимости отмечает несовместимость (см. Методы оптимизации.

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

Поле Допуск ограничения задаёт допустимую величину нарушения ограничения: нарушение в пределах допуска считается несущественным и допустимость не нарушает. Поле активно только для целей-ограничений.

Значение задаётся в единицах величины цели — так же, как «Допуск» условия «равно». Допуск у каждой цели свой; пустое (нулевое) значение означает допуск по умолчанию.

Вердикт выносится по точной наихудшей выборке полосы M_g, а не по агрегату. M_g — максимальный штраф среди частотных выборок полосы, то есть величина нарушения в самой плохой точке; ограничение соблюдено ровно тогда, когда M_g не превышает допуска. M_g виден в панели «Цели» монитора отдельной колонкой и печатается в сводке прогона.

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

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

Выбор лучшей точки. Лучшая точка прогона выбирается по правилу, в котором допустимость первична, а минимизация целевой функции вторична:

  1. точка с отказом расчёта всегда хуже точки без отказа;
  2. допустимая точка всегда лучше недопустимой, независимо от значений F;
  3. среди допустимых лучше меньшее F;
  4. среди недопустимых лучше меньшее нарушение, при равном нарушении — меньшее F;
  5. при полном совпадении лучше меньший номер шага — это делает выбор воспроизводимым при том же зерне ГСЧ.

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

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

Что печатает сводка. По каждой цели журнал выводит строку с её состоянием, значением A_g и названием применённого режима агрегации, а следом — строку с наихудшей выборкой: M_g в единицах штрафа φ, в скобках то же отклонение, пересчитанное в единицы величины цели и помеченное ярлыком «beyond goal», частоту наихудшей выборки, измеренное в ней значение величины (value) и число выборок, попавших в полосу. У цели-ограничения печатается ещё третья строка: допуск и нарушение — оба в той же двойной записи (φ и единицы величины) — и словесный вердикт (соблюдено / нарушено).

Ведущие единицы всюду — φ; единицы величины даются в скобках, чтобы число можно было соотнести с полем диалога. Арифметика строк проверяется глазами в обеих системах единиц: нарушение = M_g − допуск.

Второго, «служебного» A_g в сводке больше нет: величина, по которой выносится вердикт, печатается ровно один раз и называется M_g. Дополнительно печатается допустимость применённой точки и число допустимых оценок из общего числа.

Дерево проекта и окно свойств

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

ЦельПодпись узла
Порог по S-параметруS(Порт 1, Порт 2) [26; 30] ГГц < -20 дБ
Порог по КСВНVSWR Порт 1 [1; 2] ГГц < 2
Минимизироватьmin |S| [26; 30] ГГц
Максимизировать КПДmax Efficiency Порт 1 [1; 2] ГГц

Компактные обозначения VSWR, |S|, min, max в подписи не переводятся — это то же соглашение, что в виджете мониторинга. Полоса печатается в текущих единицах частоты, границы упорядочены по возрастанию. Подпись обновляется сразу после правки цели и при переименовании порта, на котором цель измеряется; проекты, сохранённые до появления этих подписей, получают их при открытии.

Двойной щелчок по узлу открывает диалог правки цели.

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

Любая правка из окна свойств — один шаг отмены: Ctrl+Z возвращает и значения, и подпись узла.

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

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

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

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

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

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

Определяет, как вклады разных целей объединяются в одно значение целевой функции. Это отдельная настройка от агрегации по полосе, которая сворачивает штраф ВНУТРИ одной цели по частотным точкам её полосы. Настройка общая: поле Свёртка целей в группе Общие.

РежимСмысл
Суммавзвешенное среднее вкладов всех целей (по умолчанию)
Минимаксмаксимум среди нормированных взвешенных вкладов A_g отдельных целей

Сумма равномерно учитывает все цели (важность регулируется весами); Минимакс тянет вверх «наихудшую» из целей, что полезно, когда нужно подтянуть отстающую характеристику, не жертвуя остальными.

Целевая функция

Итог: F(x) — свёртка вкладов целей (режим свёртки — см. «Свёртка набора целей»), нормированных характерным масштабом величины. Для набора из пороговых целей F ≥ 0, а F = 0 означает, что все цели выполнены во всех частотных точках. При наличии целей Минимизировать / Максимизировать вклад знаковый, и F может быть отрицательной — тогда график сходимости в мониторе использует линейную ось вместо логарифмической (см. Мониторинг).

Поле Допуск цели (группа Общие, по умолчанию 0,001) останавливает оптимизацию, когда наихудшая выборка M_g каждой пороговой цели не превышает допуска; с F это поле больше не сравнивается.