exponenta event banner

Улучшиться surrogateopt Решение или процесс

surrogateopt Киоски

Если имеются как линейные, так и целочисленные ограничения, surrogateopt может не найти каких-либо осуществимых моментов или достаточно отдельных осуществимых моментов, чтобы создать суррогат. В этих случаях решатель выходит с флагом выхода -2(выполнимая точка не найдена) или 3 (слишком мало возможных точек). Для получения подробной информации о флаге выхода -2, см. раздел Не найдено выполнимой точки.

Флаг выхода 3 может происходить двумя различными способами:

  • Было слишком мало возможных точек для построения первоначального суррогата.

  • Было слишком мало возможных моментов, чтобы построить суррогат после перезагрузки суррогата.

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

options = optimoptions('surrogateopt','PlotFcn','surrogateoptplot');
[sol,fval,exitflag] = surrogateopt(arguments,options);

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

Если surrogateopt выполнил, по крайней мере, один сброс, затем успешно выполнил поиск решения. В этом случае у вас может быть решение проблемы.

Если surrogateopt не удалось создать начальный суррогат, или если surrogateopt и вы хотите попытаться найти другое решение, выполните следующие действия.

  1. Ослабьте некоторые ограничения.

    • Измените некоторые линейные ограничения на нелинейные, в результате чего решатель не будет настаивать на строгой осуществимости. Это может дать surrogateopt более осуществимые моменты для использования при построении суррогатов.

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

      b = b + 5;
  2. Аналогично, если связанные ограничения приводят к тому, что проблема имеет слишком мало возможных точек, и если это имеет смысл для вашей проблемы, ослабьте границы. Возьмите большие верхние границы или меньшие нижние границы или оба. Можно ослабить все границы одновременно, добавив или вычесть скаляр.

    ub = ub + 3;
    lb = lb - 1;

Выполнимая точка не найдена

Когда surrogateopt не может найти точку, выполнимую в отношении границ, целочисленных ограничений и линейных ограничений, возвращает флаг выхода -2. В этом случае проблема действительно неосуществима.

Однако решатель также может вернуть флаг выхода -2 когда он не может найти точку, которая осуществима в отношении нелинейных ограничений неравенства. Иногда это может произойти даже при наличии возможных точек. Чтобы продолжить, выполните шаги, описанные в разделе Сходимость в неосуществимую точку (Converged to a Infeasible Point).

Решение может оказаться не оптимальным

Обычно, surrogateopt останавливается, когда завершается анализ функций. Это означает, что surrogateopt не останавливается, поскольку достигает оптимального решения. Однако, когда происходит суррогатный сброс, текущее решение обычно близко к локальному оптимуму.

Как оценить качество решения? Как правило, это трудно сделать. Вот несколько шагов для исследования решения, чтобы помочь определить его локальное качество. Однако нет процедуры, которая гарантировала бы, что точка является глобальным решением. Смотрите раздел Можно ли подтвердить, что решение является глобальным?.

См. также

Связанные темы