exponenta event banner

Оптимизация моделирования или обычного дифференциального уравнения

Что такое оптимизация моделирования или ОДУ?

Иногда значения целевой функции или нелинейной функции ограничения доступны только при моделировании или численном решении обычного дифференциального уравнения (ОДУ). Такие проблемы оптимизации имеют несколько общих характеристик и задач, обсуждаемых в разделе «Потенциальные проблемы и решения».

Пример оптимизации ОДУ на основе проблем см. в разделе Соответствие ОДУ на основе проблем. Пример на основе решателя см. в разделе Подгонка обычного дифференциального уравнения (ОДУ).

Чтобы оптимизировать модель Simulink ®, попробуйте использовать Simulink Design Optimization™.

Потенциальные проблемы и решения

Проблемы в конечных различиях

Оптимизация решающие устройства Toolbox™ использует производные цели и ограничительных функций внутренне. По умолчанию они оценивают эти производные, используя аппроксимации конечных разностей вида

F (x + δ) F (x) δ

или

F (x + δ) F (x − δ) 2δ.

Эти конечные аппроксимации разностей могут быть неточными, поскольку:

  • Большое значение δ позволяет большей нелинейности влиять на конечную разность.

  • Небольшое значение δ приводит к неточности из-за ограниченной точности в числовых.

В частности, для моделирования и численных решений ОДУ:

  • Моделирование часто нечувствительно к небольшим изменениям параметров. Это означает, что если используется слишком малое возмущение δ, моделирование может вернуть ложную оценочную производную 0.

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

  • Численное решение ОДУ вводит шум при значениях, намного превышающих точность машины. Этот шум может быть усилен в конечных аппроксимациях разности.

  • Если решатель ОДУ использует переменные размеры шагов, то иногда количество шагов ОДУ при оценке F ( x + δ) может отличаться от числа шагов при оценке F (x). Эта разница может привести к ложной разнице возвращаемых значений, давая вводящую в заблуждение оценку производной.

Рекомендации по конечным различиям

Избегайте конечных различий с помощью прямого поиска.  Если у вас есть лицензия Global Optimization Toolbox, вы можете попробовать использовать patternsearch(Панель инструментов глобальной оптимизации) в качестве решателя. patternsearch не пытается оценить градиенты, поэтому не страдает от ограничений в проблемах в конечных различиях.

Если вы используете patternsearch для дорогостоящих (трудоемких) оценок функций используйте Cache вариант:

options = optimoptions('patternsearch','Cache','on');

Если вы не можете использовать patternsearchи имеют относительно низкоразмерную неограниченную проблему минимизации, попробуйте fminsearch вместо этого. fminsearch не использует конечные различия. Однако fminsearch не является быстрым или настраиваемым решателем.

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

  • Если используется MATLAB ® R2011b или более поздней версии, установите для опции конечного размера шага разность значение, превышающее значение по умолчаниюsqrt(eps) или eps^(1/3), например:

    • Для R2011b-R2012b:

      options = optimset('FinDiffRelStep',1e-3);
    • Для R2013a-R2015b и решателя с именем 'solvername':

      options = optimoptions('solvername','FinDiffRelStep',1e-3);
    • Для R2016a и далее и решатель с именем 'solvername':

      options = optimoptions('solvername','FiniteDifferenceStepSize',1e-3);

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

  • При использовании MATLAB R2011a или более ранней версии установите DiffMinChange значение параметра больше значения по умолчанию 1e-8, и, возможно, установить DiffMaxChange также, например:

    options = optimset('DiffMinChange',1e-3,'DiffMaxChange',1);

Примечание

Трудно знать, как установить эти конечные размеры разности.

Можно также попробовать установить центральные конечные различия:

options = optimoptions('solvername','FiniteDifferenceType','central');

Используйте функцию оценки градиента.  Чтобы избежать проблем оценки конечных разностей, можно дать функцию аппроксимации градиента в целевых и нелинейных ограничениях. Не забудьте установить SpecifyObjectiveGradient опция для true использование optimoptionsи, если применимо, также установить SpecifyConstraintGradient опция для true.

  • Для некоторых ОДУ можно вычислить градиент численно одновременно с решением ОДУ. Например, предположим, что дифференциальное уравнение для целевой функции z (t, x) равно

    ddtz (t, x) = G (z, t, x),

    где x - вектор параметров, над которыми выполняется минимизация. Предположим, что x - скаляр. Затем дифференциальное уравнение для его производной y,

    y (t, x) = ddxz (t, x)

    является

    dty (t, x) =∂G (z, t, x) ∂zy (t, x) +∂G (z, t, x) ∂x,

    где z (t, x) - решение целевой функции ОДУ. Можно решить для y (t, x) в той же системе дифференциальных уравнений, что и z (t, x). Это решение дает вам аппроксимированную производную, никогда не принимая конечных разностей. Для нескалярных x решите один ОДУ на компонент.

    Теоретические и вычислительные аспекты этого метода см. Leis and Kramer [2]. Для получения информации о вычислительном опыте с использованием этого метода и методов с конечной разницей см. фиг.7 Raue et al. [3].

  • Для некоторых моделей можно оценить производную в моделировании. Например, метод отношения правдоподобия, описанный в Реймане и Вайсе [4], или метод анализа бесконечно малых возмущений, проанализированный в Heidelberger, Cao, Zazanis и Suri [1], оценивают производные в том же моделировании, которое оценивает целевые функции или функции ограничения.

Используйте более жесткие допуски ОДУ.  Вы можете использовать odeset для установки AbsTol или RelTol Значения допусков решателя ODE ниже значений по умолчанию. Однако выбор слишком малого допуска может привести к медленным решениям, сбою сходимости или другим проблемам. Никогда не выбирайте допуск ниже 1e-9 для RelTol. Нижний предел для каждого компонента AbsTol зависит от масштаба вашей проблемы, поэтому совета нет.

Проблемы стохастических функций

Если при моделировании используются случайные числа, то оценка целевой функции или функции ограничения дважды может привести к различным результатам. Это влияет как на оценку функции, так и на оценку конечных разностей. В значении конечной разности может преобладать изменение из-за случайности, а не изменение из-за различных точек оценки x и x + δ.

Предложения по стохастическим функциям

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

function f = mysimulation(x)
rng default % or any other resetting method
...
end

Дополнительные сведения см. в разделе Создание повторяющихся случайных чисел.

Общий расчет цели и ограничений

Часто моделирование оценивает как целевую функцию, так и ограничения во время одного и того же прогона моделирования. Либо функции объективных и нелинейных ограничений используют одни и те же дорогостоящие вычисления. Решатели, такие как fmincon отдельно вычислить целевую функцию и функции нелинейных ограничений. Это может привести к большой потере эффективности, поскольку решатель дважды вызывает дорогостоящие вычисления. Чтобы обойти эту проблему, используйте метод в Objective (цель) и Nonlinear Constraints (нелинейные ограничения) в одной и той же функции или, при использовании подхода, основанного на проблемах, Objective (цель) и Constraints (ограничения, имеющие общую функцию) в Serial (последовательные) или Parallel (параллельные), Problem-Based (на).

Сбой в оценке функции цели или ограничения

Моделирование или ОДУ может привести к сбою для некоторых значений параметров.

Предложения по ошибкам оценки

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

Используйте решатель, соблюдающий границы.  Как описано в разделе Итерации могут нарушать ограничения, некоторые алгоритмы могут нарушать связанные ограничения в промежуточных итерациях. Для оптимизации моделирования и ОДУ используйте алгоритмы, которые всегда подчиняются ограничивающим ограничениям. См. раздел Алгоритмы, удовлетворяющие ограничивающим ограничениям.

Верните NaN.  Если моделирование или решатель ОДУ не позволяет успешно вычислить целевую или нелинейную функцию ограничения в точке x, верните функцию NaN. Большинство решателей Optimization Toolbox и Global Optimization Toolbox обладают надежностью для попытки выполнения другого итеративного шага, если они сталкиваются с NaN значение. Эти надежные решатели включают в себя:

  • fmincon interior-point, sqp, и trust-region-reflective алгоритмы

  • fminunc

  • lsqcurvefit

  • lsqnonlin

  • patternsearch

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

Библиография

[1] Хайдельбергер, П., X.-R. Цао, М. А. Зазанис и Р. Сури. Свойства сходимости оценок анализа бесконечно малых возмущений. Наука об управлении 34, № 11, стр. 1281-1302, 1988.

[2] Leis, J. R. и Крамер, M.A. Одновременное решение и анализ чувствительности систем, описываемых обычными дифференциальными уравнениями. ACM Trans. Математическое программное обеспечение, том 14, № 1, стр. 45-60, 1988.

[3] Raue, A. и др. Уроки, извлеченные из количественного динамического моделирования в системной биологии. Доступно по адресу https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0074335, 2013.

[4] Рейман, М. И. и А. Вайс. Анализ чувствительности через отношения правдоподобия. Proc. 18-я зимняя имитационная конференция, ACM, Нью-Йорк, стр. 285-289, 1986.