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

Мониторинг оптимизации

Виджет мониторинга (заголовок дока — Оптимизация) показывает ход и результат оптимизации: сходимость целевой функции, отклик устройства с наложенными целями, значения переменных и целей, а также таблицу выполненных шагов. Всё, что виджет показывает, он читает с диска — журнал оптимизации и кэш 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 не наименьшее в таблице. Колонка пуста у прогона без ограничений (величины не существует) и у отказного шага (цели не измерялись).

Статус помечает характер шага: штраф, недопустимо, лучший или улучшение. У обычного шага роли нет, и ячейка статуса пуста — отдельного слова для «обычный» в таблице не выводится.

Статус «недопустимо» присваивается шагу, нарушившему активные ограничения; он имеет приоритет над «лучший» / «улучшение», чтобы недопустимая точка не выдавалась за лучшую. Поэтому если допустимых точек не нашлось ни одной, лучшая строка честно читается «недопустимо», а вердикт прогона несёт строка подвала. Статус «лучший» получает ровно та строка, которая выделена жирным и которую применяет режим «Лучшее решение», — это один и тот же шаг. Выделение строки и нажатие «Показать шаг» переводят графики и панели в режим пришпиленного шага; снятие флажка не нужно — «Лучшее решение» снимается автоматически. Двойной клик по строке делает то же самое.

Отдельный токен статуса — переиспользован:

  1. значение шага взято из журнала прошлого прогона, физический расчёт на этом шаге не выполнялся (тёплый старт, см. Оптимизационный анализ);
  2. токен ортогонален роли шага и дописывается к ней через запятую (штраф, переиспользован, улучшение, переиспользован); у обычного шага статус состоит только из него;
  3. строка такого шага печатается курсивом; у лучшего шага курсив сочетается с полужирным начертанием;
  4. всплывающая подсказка строки поясняет то же словами;
  5. «Показать шаг» на такой строке работает: значения переменных, целей и F доступны всегда; график отклика рисуется, если файл S-матрицы прошлого прогона сохранился, иначе показывается «no data»;
  6. нумерация шагов остаётся сплошной: переиспользованная точка занимает номер шага и расходует бюджет расчётов — экономится только время решателя. Точку прошлого прогона прогон переиспользует один раз: второй заход в неё показывается уже как «повтор шага N» (см. ниже), и поэтому N в подвале не может превысить M;
  7. переиспользованный отказной шаг считается отдельно. В таблице он виден как «штраф, переиспользован», а в строке сводки Отказов расчёта его нет: там только фактические отказы текущего прогона — на такой точке ни один расчёт этого прогона не падал. Чтобы два числа не противоречили друг другу, сводка печатает такие шаги своей строкой: «Переиспользовано штрафных шагов прошлого прогона: N». Строки нет, когда таких шагов не было.

Ещё один токен статуса — повтор шага N:

  1. метод пришёл в точку, которую этот же прогон уже считал: значение взято из кэша, физического расчёта на этом шаге не было, а номер N — это шаг, на котором точка действительно считалась. Раньше такая проба не показывалась вовсе, из-за чего в нумерации шагов появлялись пропуски;
  2. дописывается к роли шага через запятую так же, как «переиспользован», и строка печатается курсивом по той же причине — за шагом нет своего расчёта;
  3. «Показать шаг» работает: значения переменных, целей и F — те, что измерены на шаге N, а график отклика берётся из S-матрицы шага N (второй копии файла не создаётся);
  4. лучшим такой шаг не становится и «улучшением» не помечается: точка уже участвовала в отборе на шаге N и обойти саму себя не может;
  5. в строке сводки Отказов расчёта такие шаги не участвуют — как и переиспользованные, они ничего не считали (см. п. 7 выше);
  6. повтор точки, которую посчитал прошлый прогон, — это «переиспользован», а не «повтор шага»: у такой точки нет шага этого прогона, на который можно было бы сослаться. Второй заход в ту же точку уже даёт «повтор шага N», где N — номер того переиспользованного шага;
  7. бюджет расчётов такой шаг расходует так же, как обычная проба — движок засчитал пробу до того, как обратился к кэшу. Исключение — конвейер: он считает бюджет по посчитанным точкам, и полученные из его собственного кэша шаги ему ничего не стоят; в подвале они показаны второй цифрой, а в подсказке строки об этом сказано словами.

Ещё один токен статуса — рестарт N:

  1. он стоит только у первого шага рестарта и помечает границу: у методов с рестартами это сотни подряд идущих шагов одного рестарта, и повтор токена в каждой строке ничего бы не добавил;
  2. дописывается через запятую так же, как «переиспользован» (улучшение, рестарт 1);
  3. нумерация начинается с 1: первый запуск поиска рестартом не считается, и токена у его шагов нет;
  4. номер рестарта видно у любой строки этого рестарта во всплывающей подсказке, вместе с номером поколения, — не нужно прокручивать таблицу назад до границы, чтобы понять, какой рестарт перед вами. У шагов до первого рестарта такой строки в подсказке нет: рестартов там ещё не было (см. п. 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.

Когда кнопка недоступна:

  • не выделена строка таблицы шагов;
  • выделен отказной шаг (штраф) — полезной точки у него нет;
  • прогон оптимизации ещё идёт или его журнал не закрыт;
  • идёт любой другой расчёт решателя.

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

Отказ «постановка изменилась». Если постановку правили после прогона, показывается предупреждение, и модель НЕ меняется — ни частично, ни полностью. Причины: изменилось число активных параметров; параметр переименован, деактивирован, изменены его диапазон, режим, шаг или список значений; переменная модели не допускает записи значения.

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

Связанные страницы