exponenta event banner

Выбор абсолютного и относительного допусков для моделирования

SimBiology ® используетAbsoluteTolerance и RelativeTolerance для контроля точности интегрирования при моделировании. В частности, AbsoluteTolerance используется для управления наибольшей допустимой абсолютной ошибкой на любом этапе моделирования. Он управляет ошибкой, когда решение мало. Интуитивно, когда решение приближается к 0, AbsoluteTolerance - это порог, ниже которого вы не беспокоитесь о точности решения, поскольку оно фактически равно 0. RelativeTolerance управляет относительной ошибкой одного шага интегратора. Интуитивно он управляет количеством значащих цифр в решении, за исключением случаев, когда оно меньше абсолютного допуска, а log10 (RelativeTolerance) - количество правильных цифр.

Алгоритм

На каждом этапе моделирования i, решатель оценивает локальную ошибку e в состоянии j моделирования. Решатель уменьшает размер временного шага i до тех пор, пока ошибка состояния не удовлетворяет:

| e (i, j) |≤max (RelativeTolerance∗|y (i, j) |, AbsolityTolerance (i, j))

Таким образом, при значениях состояния большей величины точность определяется RelativeTolerance. Когда значения состояния приближаются к нулю, точность контролируется AbsoluteTolerance.

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

  • Если моделирование занимает слишком много времени, можно увеличить (или ослабить) значения RelativeTolerance и AbsoluteTolerance ценой некоторой точности.

  • Если результаты кажутся неточными, можно уменьшить (или ужесточить) значения относительного допуска путем деления на 10N, где N - действительное положительное число. Но это имеет тенденцию замедлять решатель.

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

Масштаб абсолютного допуска

Как SimBiology использует AbsoluteTolerance для определения ошибки зависит от того, AbsoluteToleranceScaling свойство включено. По умолчанию AbsoluteToleranceScaling включается, что означает, что каждое состояние имеет свой собственный абсолютный допуск, который может увеличиваться в процессе моделирования:

AbsoluteTolerance (я, j) =CSAbsTol*Scale (я, j)

CSAbsTol является AbsoluteTolerance свойство определено в SolverOptions активного объекта набора конфигурации.

Для состояния, которое имеет ненулевое начальное значение, шкала является максимальной величиной над состоянием, как видно в моделировании до сих пор:

Масштаб (i, j) = max (| y (1: i, j) |)

Для состояния, которое имеет начальное значение, равное нулю, масштаб оценивается как значение состояния после выполнения пробного шага размера. AbsoluteToleranceStepSize с помощью метода Эйлера. Назовем это значение ye(j). Затем:

Масштаб (i, j) = max (| [ye (j); y (2: i, j)] |)

Если начальное состояние равно нулю и не имеет динамики в момент времени = 0, то:

AbsoluteTolerance (я, j) =CSAbsTol

Дозы, события и правила начального назначения во время моделирования = 0 не учитываются при расчете шкалы абсолютного допуска.

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