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

Как открыть
Кнопка Журнал оптимизатора во вкладке Решение в группе Анализ открывает окно мониторинга.

Если оптимизация уже запущена, виджет подхватывает её журнал автоматически.
Как обновляются данные
Виджет опрашивает файлы на диске по таймеру и подгружает новые шаги инкрементально:
- журнал оптимизации — метаданные прогона, список шагов (значения переменных, F, отметки отказов и улучшений). В метаданные входят и критерии останова, с которыми шёл расчёт (бюджет, допуск достижения цели, точность по параметрам, порог остановки без улучшения), поэтому на вопрос «почему прогон закончился здесь» отвечает сам журнал — в том числе сохранённый журнал прошлого расчёта. Наведите курсор на счётчик времени и шагов в подвале, чтобы увидеть их. Показаны только те критерии, которые у прогона были: у связки Глобальный → локальный это бюджет и допуск цели, потому что точность по параметрам и порог стагнации принадлежат её этапам, а не связке; у Ковариационной адаптации (CMA-ES) — тоже только они, потому что своих полей точности и порога у метода нет. Допуск цели не показан у набора с экстремальной целью: порога у такого набора нет вовсе;
- кэш S-матриц — частотный отклик по шагам для графика отклика.
Пока прогон активен, обновляются график сходимости, панели и таймер в подвале. Когда журнал перестаёт меняться, опрос переходит в дешёвый холостой режим, а часы в подвале останавливаются.
Элементы (сверху вниз)
1. Строка управления
- Комбо вида графика отклика: КСВН (VSWR) или S (по умолчанию КСВН).
- Кнопка Кривые с меню флажков S_ij: выбор отображаемых кривых. Состав меню собирается из целей текущего вида — S-параметрических для вида S, КСВН-целей для вида КСВН, — в порядке целей и без повторов; все такие кривые включены по умолчанию, поэтому сразу после открытия виден ровно тот отклик, который ограничен целями. Если у текущего вида подходящих целей нет, меню перечисляет все кривые модели: все S_ij в виде S и все порты (диагональ) в виде КСВН — тоже включёнными, чтобы график не остался пустым. Меню перестраивается при смене вида и при изменении набора целей.
2. График сходимости
Показывает минимизацию целевой функции F по номеру шага:
-
линия «лучшее к текущему шагу» (Best so far) — наименьшее
Fсреди допустимых точек, поэтому начинается с первой такой точки и вверх не идёт никогда. Если допустимых точек в прогоне нет, этой линии нет вовсе: допустимого значенияFу прогона ещё не появилось; -
линия «наименьшее нарушение» (Least violation so far) — на правой оси, пунктиром; монотонно падает. Появляется только при активных жёстких ограничениях и только пока есть хотя бы одно ненулевое нарушение;
-
сырые оценки каждого шага (Evaluations);
-
оценки, взятые из кэша (From the cache) — того же цвета, что и обычные, но полым кружком: значение точки настоящее, физического расчёта именно на этом шаге за ним нет. Полым кружком рисуются оба вида таких шагов — переиспользованные из журнала прошлого прогона и повторные пробы точки, уже посчитанной в этом прогоне (см. §7 и Оптимизационный анализ);
-
отказные шаги (Failed) — крестик у верхней границы поля цветом целей. Позиция условна: у отказного расчёта нет значения F, ему назначен штраф, и рисовать этот штраф как результат нельзя. Крестик говорит только «здесь расчёт отказал»; подробности — в колонках «Отказ» и «Статус» таблицы шагов;
-
ряд «наихудшая выборка» (max M_g) — ступенчатая линия наибольшей из наихудших выборок
M_gпороговых целей в лучшей точке прогона, на левой оси, в тех же единицах φ, чтоFи линия цели, с подписью у последней точки. Это та величина, по которой выносится вердикт о выполнении целей, — поэтому ряд уходит под линию цели ровно на том шаге, на котором прогон останавливается со статусом «достигнута цель».Ряд немонотонен, и это не дефект. Лучшая точка выбирается по
F, аFиmax M_gне согласованы: узкое высокое нарушение даёт малый агрегат и большую наихудшую выборку, широкое мелкое — наоборот. Подъём ряда означает, что новый рекорд лучше по ландшафту и хуже по наихудшей точке. Экстремальные цели в максимум не входят: их вклад знаковый и порога не имеет; на наборе с экстремальной целью ряда нет вовсе, как и линии цели.Ряд строится по лучшей точке в смысле общего правила отбора (сначала допустимость, затем
F), а лучшая точка есть всегда — при отсутствии допустимых это наименее нарушающая. Поэтому ряд бывает и там, где линии «лучшее к текущему шагу» нет; шаг, у лучшей точки которого ни одна пороговая цель не дала измеренной наихудшей выборки (например, точка из журнала без этого поля), точки в ряду не даёт; -
линия цели (Goal tolerance) — уровень «Допуска достижения цели» прогона, пунктиром, с подписью. Это порог по
M_g, а не поF: значим переход под неё ряда max M_g, аFниже линии о выполнении целей ничего не говорит. Есть только у набора чисто пороговых целей: у набора с экстремальной целью порога нет вовсе (см. Методы оптимизации); -
курсор выбранного шага;
-
полосы этапов — нейтральная подложка, разделяющая этапы прогона; появляются только у метода Глобальный → локальный. Подложкой закрашен каждый второй этап, поэтому разведка идёт по чистому фону, дожим — по закрашенному, следующий рестарт снова по чистому: видны границы между этапами, а не сами этапы. У остальных методов этап один, и полос нет;
-
полоса разброса популяции и линия среднего по поколению — см. «Популяция» ниже;
-
границы рестартов — вертикальная штрихпунктирная линия с подписью «рестарт N» перед первым шагом каждого рестарта. Появляется у методов, которые перезапускают поиск: у Ковариационной адаптации — на каждом IPOP-рестарте, у Глобального → локального — на каждом дожиме со следующего кандидата, у Мультистарта (MLSL) — на каждом локальном спуске. У конвейера линия совпадает с границей полос этапов и даёт этой границе номер, которого чередование подложки выразить не может. От курсора шага отличается подписью и рисунком штриха.
Линия «лучшее к текущему шагу», полосы этапов конвейера и оси от переиспользованных точек не меняются.
Популяция. Флажок «Популяция» в шапке графика включает показ разброса поколений. Он доступен только у методов, которые сообщают поколение: Ковариационная адаптация, Адаптивная эволюция (ISRES) и Эволюционная стратегия (ESCH); у остальных флажок неактивен. Управляемый случайный поиск (CRS2) в список не входит, хотя и имеет популяцию: он заменяет по одной точке за итерацию, поколений у него нет.
Показываются два элемента:
- полосы поколений — вертикальная полоса на всю высоту поля на каждое поколение, слабой заливкой цвета целевой функции. Соседние полосы чередуют два оттенка, посветлее и потемнее: полосы примыкают вплотную, и без чередования граница между ними была бы не видна вовсе. Полоса группирует расчёты поколения, а не измеряет их — разброс поколения виден по самим точкам расчётов внутри полосы, по тому, насколько они разлетелись по вертикали. Сходящийся поиск читается как сжимающийся от полосы к полосе разлёт точек;
- линия среднего — пунктирная ступенька среднего
Fпо поколению, тёмным тоном того же цвета, с подписью «population» у первой ступени. Тёмный тон и пунктир отличают её от линии «лучшее к текущему шагу»: та сплошная и светлее.
Отказные шаги в среднее не входят: у них нет значения F, им назначен штраф, и
один такой шаг увёл бы среднее на порядки. Ширина полосы при этом считается по
всем шагам поколения, отказные включительно: они в поколении были. Поколение, все
шаги которого отказали, полосы не даёт вовсе.
У IPOP-рестарта Ковариационной адаптации поколение продолжает нумерацию, а не начинается заново, и размер популяции удваивается — поэтому полосы после границы рестарта вдвое шире, чем до неё.
У метода Глобальный → локальный с генерационным глобальным этапом на графике оказываются обе разметки сразу: полосы этапов и полосы поколений внутри этапа разведки. Полосы поколений намеренно бледнее, чтобы членение на этапы оставалось главным.
Две величины — две оси. На графике отложены две величины прогона, и у каждой своя ось и свой цвет, совпадающий с цветом заголовка её оси:
- слева — целевая функция
F; на этой же оси и в тех же единицах φ лежат ряд max M_g и линия цели, поэтому заголовок оси остаётсяF; - справа — нарушение ограничений, логарифмическая всегда. Правая ось появляется только у прогона с активными ограничениями, у остальных её нет.
Разделение принципиально. Пока допустимых точек нет, лучшая точка выбирается по
наименьшему нарушению (см. Цели и целевая функция), а не по F, — и
если ту же последовательность откладывать на оси F, кривая пойдёт вверх, хотя
прогон сходится. Каждая линия монотонна по своей величине и на своей оси, поэтому
подниматься не может ни одна.
Где лучшая точка. Это конец той линии, которая в данный момент авторитетна: линии нарушения, пока допустимых точек нет, и линии «лучшее к текущему шагу», как только они появились. Она же выделена жирным в таблице шагов и записывается в модель по завершении прогона — расхождения быть не может.
Ось X — номер шага. Левая ось выбирается по составу целей: логарифмическая для набора чисто пороговых целей (F ≥ 0) и линейная, если есть хотя бы одна цель «минимизировать» / «максимизировать» — тогда F знаковый и может быть отрицательным (см. Цели и целевая функция). Сетка привязана к левой оси, деления правой с ней не совпадают — для двух осей это норма.
Границы оси Y и точки на её полу. Ось масштабируется по настоящим значениям
F и по значениям ряда max M_g: отказные шаги в расчёт границ не входят, как
и неизмеренные наихудшие выборки. На логарифмической оси пол поля — на декаду
ниже допуска цели, поэтому линия цели видна внутри поля, а границы кратны
декадам и не дёргаются на каждом такте опроса. Точки, легшие на пол, — это
F на уровне допуска или ниже: F = 0 на пороговом наборе — не сбой, а
наилучшее возможное значение, у которого на логарифмической оси просто нет
своего места. Читать это как «все цели выполнены» нельзя: F — свёртка
агрегатов, а агрегат узкого нарушения лежит много ниже собственной наихудшей
выборки. О выполнении целей говорит только ряд max M_g: цели выполнены, когда
под линию ушёл он. Если прогон ушёл ниже допуска, пол опускается за данными —
ничего не обрезается. Настоящее значение всегда видно в колонке F таблицы
шагов; там печатается 0, а не уровень пола.
Отдельный случай — набор, состоящий только из ограничений при методе
со штатной их поддержкой: такие цели в целевую функцию не входят, складывать
нечего, и F = 0 на каждом шаге по построению. График тогда плоский, и смотреть
надо на статус «недопустимо» в таблице шагов и на строку подвала, а не на F.
3. График отклика
Показывает частотную характеристику для выбранного шага:
- кривые S_ij (набор — из меню «Кривые»);
- номинал — серым пунктиром, отклик стартовой точки;
- оверлеи целей: заштрихованная зона недопустимой области, лимит-линия и
подпись выражения цели. Цвет зоны — цвет кривой, которую ограничивает цель,
а наклон штриховки у каждой цели свой (
/,\,|,—, затем сетки). Наклон и различает цели, когда цвет уже не различает: две цели на одной кривой окрашены одинаково. - у экстремальных целей («минимизировать» / «максимизировать») оверлей другой:
порога у такой цели нет, запрещать нечего, поэтому вместо зоны рисуется
полоса её диапазона частот во всю высоту оси — слабая заливка без штриховки,
закрытая пунктирной границей на каждом краю полосы, — а подпись начинается
со стрелки направления улучшения (
↓для «минимизировать»,↑для «максимизировать»). Лимит-линии у такой цели нет. Слабая заливка без штриховки и отличает «полосу цели» от «недопустимой области».
Ось X — Частота, ГГц; она закреплена за диапазоном частот расчёта и не меняется при переходе между шагами, поэтому зона цели сразу видна на своём месте внутри диапазона. Ещё до первой оценки, когда кривых нет, показываются оси и зоны целей.
Подпись секции показывает, какой шаг отрисован: «Отклик — лучший (шаг N)» — лучшее решение, «Отклик - шаг N» — пришпиленный шаг. Для отказного шага вместо кривых в поле графика выводится «нет данных», и тем же словом дополняется подпись секции. На узком доке подпись сокращается многоточием, полный текст — во всплывающей подсказке.
4. Панель «Переменные»
Строки варьируемых параметров: имя, текущее значение и маркер положения значения внутри диапазона [минимум; максимум]. Для дискретных осей (режимы «с шагом» и «список», см. Варьируемые параметры) на шкале рисуются засечки по узлам сетки/набора, а маркер прижимается к ближайшему узлу.
Числовые границы диапазона на шкале не подписаны — они выводятся во всплывающей подсказке строки вместе с именем, текущим значением и (для дискретной оси) числом узлов.
5. Панель «Цели»
Шапка колонок: Цель · f, ГГц · M_g · A_g. Ниже — строки целей: иконка статуса (выполнена / нарушена), выражение цели, частота худшей точки по этой цели, наихудшая выборка M_g и значение агрегата A_g. Все три числовые колонки имеют фиксированную ширину и разделены зазором, поэтому числа не сливаются; A_g печатается с тремя значащими цифрами, так что штрафные значения не обрезаются. Длинное выражение цели сокращается многоточием, полный текст — во всплывающей подсказке.
Колонка M_g — точная наихудшая выборка полосы в единицах штрафа φ, та
самая величина, по которой выносится вердикт о выполнении цели и о соблюдении
ограничения (см. Цели и целевая функция). Печатается
тремя значащими цифрами, как A_g, и стоит рядом с колонкой частоты: обе
описывают одну и ту же выборку. У экстремальной цели колонка тоже заполнена, но
величина там знаковая (при «Максимизировать» отрицательная) и ни в какой
вердикт не входит. Ячейка пуста до первой оценки (панель уже
показывает постановку, но измерять ещё нечего). Прочерк означает, что величина не
измерена: так выглядит шаг, засеянный журналом прошлого прогона, в котором
этого поля ещё не было.
Вердикт цели-ограничения виден цветом замка: зелёный — ограничение соблюдено, жёлтый — нарушено, серый — вердикта ещё нет (до первой оценки). Шкала цветов та же, что у обычной пороговой цели, — глиф остаётся замком, меняется только цвет.
До первого расчёта, пока модель ещё не разбита на сетку, номера портов
неизвестны, и цель показывается без порта (например |S| [26; 30] < -18);
после первой оценки в выражении появляется порт. Цель по КСВН подписывается
именем порта (КСВН Порт 1 [26; 30] < 2) — номер порта уже входит в имя и
не дублируется.
Для экстремальных целей (условия «минимизировать» / «максимизировать»)
выражение цели имеет вид min <величина> [lo; hi] или
max <величина> [lo; hi] — без порога и знака условия (слова min / max
не переводятся). У такой цели нет уровня-порога, поэтому иконка статуса
нейтральная (полый ромб), а на графике отклика вместо зоны-маски и
лимит-линии рисуется полоса диапазона частот (см. График отклика);
на графике подпись такой цели дополнена стрелкой направления улучшения, в
панели «Цели» стрелки нет — направление там уже передаёт иконка статуса.
Колонка A_g у экстремальной цели знаковая: это вклад цели в целевую
функцию, свёрнутый по полосе выбранным режимом агрегации и приведённый к
масштабу стартовой точки, и чем он меньше (в том числе чем «отрицательнее»),
тем лучше цель отработана. У пороговых целей A_g, наоборот, неотрицателен:
0 означает «порог соблюдён». Столбец f, ГГц у экстремальной цели заполняется:
там стоит частота её наихудшей выборки — самой большой величины при
«Минимизировать» и самой малой при «Максимизировать». В сводке журнала такая
цель подписана «экстремум, меньшее A_g лучше» вместо «выполнена» / «нарушена».
Что по этим же целям печатает сводка прогона: значение M_g, то же
отклонение в единицах величины цели с ярлыком «beyond goal», измеренное в
наихудшей выборке значение величины (value) и число выборок, попавших в
полосу; у цели-ограничения — дополнительно допуск, нарушение и словесный
вердикт. У экстремальной цели строка короче: M_g, частота f*,
измеренное значение и число выборок — ярлыка отклонения там нет, потому что
отклоняться такой цели не от чего.
6. Строка режима
- Флажок Лучшее решение (по умолчанию включён) — панели и графики отслеживают текущее лучшее решение прогона.
- Кнопка Показать шаг — пришпилить выбранный в таблице шаг вместо лучшего решения.
- Кнопка Применить к модели — записать значения варьируемых параметров выбранного шага в модель. По умолчанию выключена; условия доступности и порядок работы — в разделе Применение шага к модели.
7. Таблица шагов
Колонки: Шаг · F · Нарушение · Отказ · Статус.
Колонка «Нарушение» — та самая величина, по которой выбирается лучшая точка, пока
допустимых точек нет. Без неё выбор читался как произвол: жирной могла оказаться
строка, у которой F не наименьшее в таблице. Колонка пуста у прогона без
ограничений (величины не существует) и у отказного шага (цели не
измерялись).
Статус помечает характер шага: штраф, недопустимо, лучший или улучшение. У обычного шага роли нет, и ячейка статуса пуста — отдельного слова для «обычный» в таблице не выводится.
Статус «недопустимо» присваивается шагу, нарушившему активные ограничения; он имеет приоритет над «лучший» / «улучшение», чтобы недопустимая точка не выдавалась за лучшую. Поэтому если допустимых точек не нашлось ни одной, лучшая строка честно читается «недопустимо», а вердикт прогона несёт строка подвала. Статус «лучший» получает ровно та строка, которая выделена жирным и которую применяет режим «Лучшее решение», — это один и тот же шаг. Выделение строки и нажатие «Показать шаг» переводят графики и панели в режим пришпиленного шага; снятие флажка не нужно — «Лучшее решение» снимается автоматически. Двойной клик по строке делает то же самое.
Отдельный токен статуса — переиспользован:
- значение шага взято из журнала прошлого прогона, физический расчёт на этом шаге не выполнялся (тёплый старт, см. Оптимизационный анализ);
- токен ортогонален роли шага и дописывается к ней через запятую
(
штраф, переиспользован,улучшение, переиспользован); у обычного шага статус состоит только из него; - строка такого шага печатается курсивом; у лучшего шага курсив сочетается с полужирным начертанием;
- всплывающая подсказка строки поясняет то же словами;
- «Показать шаг» на такой строке работает: значения переменных, целей и F доступны всегда; график отклика рисуется, если файл S-матрицы прошлого прогона сохранился, иначе показывается «no data»;
- нумерация шагов остаётся сплошной: переиспользованная точка занимает номер шага и расходует бюджет расчётов — экономится только время решателя. Точку прошлого прогона прогон переиспользует один раз: второй заход в неё показывается уже как «повтор шага N» (см. ниже), и поэтому N в подвале не может превысить M;
- переиспользованный отказной шаг считается отдельно. В таблице он виден как «штраф, переиспользован», а в строке сводки Отказов расчёта его нет: там только фактические отказы текущего прогона — на такой точке ни один расчёт этого прогона не падал. Чтобы два числа не противоречили друг другу, сводка печатает такие шаги своей строкой: «Переиспользовано штрафных шагов прошлого прогона: N». Строки нет, когда таких шагов не было.
Ещё один токен статуса — повтор шага N:
- метод пришёл в точку, которую этот же прогон уже считал: значение взято из кэша, физического расчёта на этом шаге не было, а номер N — это шаг, на котором точка действительно считалась. Раньше такая проба не показывалась вовсе, из-за чего в нумерации шагов появлялись пропуски;
- дописывается к роли шага через запятую так же, как «переиспользован», и строка печатается курсивом по той же причине — за шагом нет своего расчёта;
- «Показать шаг» работает: значения переменных, целей и F — те, что измерены на шаге N, а график отклика берётся из S-матрицы шага N (второй копии файла не создаётся);
- лучшим такой шаг не становится и «улучшением» не помечается: точка уже участвовала в отборе на шаге N и обойти саму себя не может;
- в строке сводки Отказов расчёта такие шаги не участвуют — как и переиспользованные, они ничего не считали (см. п. 7 выше);
- повтор точки, которую посчитал прошлый прогон, — это «переиспользован», а не «повтор шага»: у такой точки нет шага этого прогона, на который можно было бы сослаться. Второй заход в ту же точку уже даёт «повтор шага N», где N — номер того переиспользованного шага;
- бюджет расчётов такой шаг расходует так же, как обычная проба — движок засчитал пробу до того, как обратился к кэшу. Исключение — конвейер: он считает бюджет по посчитанным точкам, и полученные из его собственного кэша шаги ему ничего не стоят; в подвале они показаны второй цифрой, а в подсказке строки об этом сказано словами.
Ещё один токен статуса — рестарт N:
- он стоит только у первого шага рестарта и помечает границу: у методов с рестартами это сотни подряд идущих шагов одного рестарта, и повтор токена в каждой строке ничего бы не добавил;
- дописывается через запятую так же, как «переиспользован»
(
улучшение, рестарт 1); - нумерация начинается с 1: первый запуск поиска рестартом не считается, и токена у его шагов нет;
- номер рестарта видно у любой строки этого рестарта во всплывающей подсказке, вместе с номером поколения, — не нужно прокручивать таблицу назад до границы, чтобы понять, какой рестарт перед вами. У шагов до первого рестарта такой строки в подсказке нет: рестартов там ещё не было (см. п. 3).
Всплывающая подсказка строки собирает те факты, у которых нет своей колонки: происхождение из журнала прошлого прогона, номер повторяемого шага, отсутствие расхода бюджета, номер рестарта и номер поколения — по одному на строку подсказки. У строки, которой нечего добавить, подсказки нет.
8. Подвал
- Строка времени: Время: чч:мм:сс — N/бюджет — прошедшее время и число расчётов относительно бюджета. Счётчик N считает шаги, которые бюджет израсходовали; переиспользованные шаги в него входят — они бюджет расходуют, экономится только время решателя. У конвейера появляется вторая цифра: N/бюджет (+K из кэша) — K шагов метод получил из кэша самого движка, а конвейер считает бюджет по посчитанным точкам, поэтому эти шаги ему ничего не стоили. Они есть в таблице как обычные строки, просто не входят в N. Скобки нет, когда таких шагов не было — у одиночного метода их не бывает вовсе. Расшифровка K — во всплывающей подсказке строки времени, рядом с критериями останова.
- Кнопка Стоп — остановить оптимизацию; лучшая найденная точка сохраняется. Кнопка гаснет сразу по нажатию, а в статус-строке появляется «Остановка...»: решатель прекращает работу после текущего расчёта, что может занять заметное время.
- Статус-строка подвала:
- «Допустимая область не найдена» — прогон с активными ограничениями завершился, так и не найдя ни одной допустимой точки; в модель записан набор параметров с наименьшим нарушением (см. Цели и целевая функция);
- «Тёплый старт: переиспользовано точек: N из M» (Warm start: N of M point(s) reused) — M — сколько точек прошлого прогона засеяно в начале, N — сколько из них прогон уже переиспользовал (растёт по ходу прогона; см. Оптимизационный анализ). В M входят только точки, которые прогон действительно может переиспользовать: при активных ограничениях точка засевается вместе с видом движка на неё, и запись журнала без этого числа — в частности любой штрафной шаг — в знаменатель не идёт. У холодного прогона строки нет; строка «Допустимая область не найдена» имеет приоритет и вытесняет её.
Режимы просмотра
- Лучшее решение: графики и панели показывают текущий лучший результат и обновляются по мере поступления новых шагов.
- Пришпиленный шаг: выделите строку в таблице и нажмите «Показать шаг». Для отказного шага график отклика показывает «нет данных», но значения переменных, целей и F остаются доступны.
Применение шага к модели
Что делает. Кнопка Применить к модели в строке режима записывает значения варьируемых параметров выбранного в таблице шага в переменные модели. Применить можно и переиспользованный шаг: по данным он ничем не отличается от обычного.
Диалог. Перед записью открывается окно Применение шага к модели. В нём перечислены применяемые значения в виде «имя = значение единицы» и предупреждение, что пересчёт модели удалит имеющиеся результаты расчёта. Кнопки:
- Пересчитать — записать значения и сразу запустить обычный расчёт;
- Только перестроить геометрию — только записать значения; геометрия перестраивается самой записью, ничего дополнительно не запускается;
- Отмена — ничего не делать; закрытие окна крестиком равносильно отмене.
Откат. Всё применение — одна запись в истории отмены: Ctrl+Z
возвращает прежние значения всех параметров разом (см.
Варьируемые параметры).
Отказ от запуска расчёта. Если выбрано «Пересчитать», но пользователь
отказывается в одном из вопросов самого запуска (лицензия, сохранение
проекта, построение сетки, удаление имеющихся результатов), значения уже
записаны в модель и остаются в ней — не стартует только расчёт. Отменить
запись можно тем же Ctrl+Z.
Когда кнопка недоступна:
- не выделена строка таблицы шагов;
- выделен отказной шаг (штраф) — полезной точки у него нет;
- прогон оптимизации ещё идёт или его журнал не закрыт;
- идёт любой другой расчёт решателя.
Недопустимый шаг применить можно: кнопка применяет выделенную строку, а не лучшую, и осмотреть или продолжить поиск от недопустимой точки — законное действие; сам решатель записывает такую точку, когда допустимых не нашлось. Диалог подтверждения в этом случае дополнительно сообщает, что шаг нарушает жёсткое ограничение.
Отказ «постановка изменилась». Если постановку правили после прогона, показывается предупреждение, и модель НЕ меняется — ни частично, ни полностью. Причины: изменилось число активных параметров; параметр переименован, деактивирован, изменены его диапазон, режим, шаг или список значений; переменная модели не допускает записи значения.
Смена единиц отображения. Сопоставление параметров идёт по подписи, а в неё входят текущие единицы отображения. Поэтому смена единиц между прогоном и попыткой применения тоже даёт отказ, хотя сама постановка не менялась. Что делать: вернуть прежние единицы отображения либо выполнить прогон заново — после нового прогона подписи снова совпадут. Отказ намеренно «глухой»: лучше не применить ничего, чем записать значения не туда.