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

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

Величины
| Величина | Единицы | Примечание |
|---|---|---|
| КСВН | безразмерная, ≥ 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 виден в панели «Цели» монитора
отдельной колонкой и печатается в сводке прогона.
Метод оптимизации ведёт поиск по сглаженному агрегату полосы — так его линейная модель ограничения остаётся пригодной. Вердикт же выносит сводка, и по точной наихудшей выборке. Расхождение между ними одностороннее: сглаженный агрегат не превышает точного максимума, поэтому метод может счесть точку допустимой там,где сводка её допустимой не считает, но не наоборот. Авторитетна сводка; если такое расхождение случилось на лучшей точке прогона, журнал сообщает об этом отдельной строкой.
Вес у цели-ограничения. Жёсткое ограничение соблюдается независимо от веса. Вес — параметр свёртки целевой функции, а ограничение в неё либо не входит вовсе (методы со штатной поддержкой), либо входит штрафом; в обоих случаях нулевой вес не отменяет требования. Нулевой вес у цели-ограничения игнорируется, и в журнал выводится предупреждение: сочетание «флажок стоит, вес нулевой» противоречиво, и раньше оно обнуляло вклад ограничения в целевую функцию.
Выбор лучшей точки. Лучшая точка прогона выбирается по правилу, в котором допустимость первична, а минимизация целевой функции вторична:
- точка с отказом расчёта всегда хуже точки без отказа;
- допустимая точка всегда лучше недопустимой, независимо от значений
F; - среди допустимых лучше меньшее
F; - среди недопустимых лучше меньшее нарушение, при равном нарушении — меньшее
F; - при полном совпадении лучше меньший номер шага — это делает выбор воспроизводимым при том же зерне ГСЧ.
Пока допустимых точек нет, лучшей становится точка с наименьшим нарушением, и её
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 это поле больше не сравнивается.