SimBiology® использует ОДУ решатели для симуляции модели. Ошибки решателя могут вызвать проблемы симуляции. Многие ошибки решателя относятся к жесткости модели и относительным и абсолютным погрешностям. В результате симуляция может занять много времени. Вы также можете увидеть одно из следующих сообщений об ошибке, указывающих, что решатель не может решить проблему в пределах допусков.
Интеграционный допуск не достигнут
CVODES возвращен -4 из модуля Функция CVODES CVode: At t = ...
и h = ...
тест сходимости корректора не выполнялся неоднократно или с |h| = hmin.
Вы также можете увидеть одно или несколько из следующих предупреждающих сообщений, которые являются предшественниками потенциальных проблем допуска решателя.
Правая сторона системы ОДУ SimBiology приводит к комплексным числам. Мнимая часть результата будет проигнорирована.
Правая сторона системы ОДУ SimBiology приводит к бесконечным значениям или значениям NaN. Это обычно указывает на ошибку моделирования и может привести к ошибкам интегрирования решателя.
Повторные правила назначения модели SimBiology приводят к комплексным числам. Мнимая часть результата будет проигнорирована.
Чтобы исправить проблемы симуляции, которые могут вызвать ошибки решателя, попробуйте следующие советы по устранению неполадок.
Можно ускорить симуляцию, преобразовав модель в скомпилированный код С, который выполняется быстрее. Для получения дополнительной информации смотрите Ускорение Симуляций модели и Анализа. Если симуляция все еще медлена после ускорения, могут быть проблемы допуска решателя. Попробуйте оставшиеся советы, не ускоряя модель.
MaximumNumberOfLogs
и MaximumWallClock
MaximumNumberOfLogs
и MaximumWallClock
являются некоторыми опциями строения, которые можно использовать, чтобы остановить симуляцию непосредственно перед возникновением ошибки. Затем можно проверить на необычные моделируемые значения, такие как отрицательные количества видов.
Для образца задайте MaximumNumberOfLogs
на 1
получить значения модели сразу после применения начальных и повторных правил назначения. Если вы задаете значение 2
, и симуляция прекращает работать с ошибкой интегрирования, тогда, вероятно, это указывает на ошибку с правилами назначения.
При изменении MaximumNumberOfLogs
, моделируйте модель неоднократно с использованием тех же условий, которые приводят к ошибке. Модель может симулировать без ошибок, пока вы не достигнете определенного значения MaximumNumberOfLogs
. Затем проверьте моделируемые значения в конечном времени симуляции. Если вы видите отрицательные значения для определенных состояний, таких как отрицательные количества видов, исследуйте выражения в вашей модели, которые могут повлиять на эти состояния. Обновите выражения для учета возможных проблем, таких как отрицательные значения или деление на 0, путем реорганизации уравнений и/или вставки некоторых защит, таких как max(0,x)
или max(eps,x)
, где x - переменная, которая ответственна за ошибку.
Кроме того, можно просмотреть уравнения модели, чтобы проверить начальные условия, такие как количества видов и значения параметров во время симуляции = 0, чтобы увидеть, являются ли значения ожидаемыми. Для получения дополнительной информации смотрите getewations или Show Model Equations and Initial Conditions.
Если ваша модель жесткая, и вы выбрали неподходящий решатель, размер шага, сделанный решателем, может быть вынужден опуститься до неоправданно малого уровня по сравнению с интервалом интегрирования. Убедитесь, что вы выбрали один из ode15s
или sundials
как ваш решатель для жестких ОДУ.
AbsoluteToleranceScaling
Выключите AbsoluteToleranceScaling
.
SimBiology использует AbsoluteTolerance
и RelativeTolerance
для управления точностью интегрирования во время симуляции. В частности, AbsoluteTolerance
управляет наибольшей допустимой абсолютной ошибкой на любом шаге во время симуляции.
Когда AbsoluteToleranceScaling
включено (по умолчанию), каждое состояние имеет свою абсолютную погрешность, который может увеличиться в течение симуляции. Иногда автоматическое масштабирование является неадекватным для моделей, которые имеют кинетику в основном разных шкалах. Для примера скорость реакции может составлять порядка 10.22
, в то время как другой 0.1
. Путем выключения AbsoluteToleranceScaling
, вы можете смоделировать модель.
Если ошибка допуска симуляции все еще существует после отключения AbsoluteToleranceScaling
, попробуйте ослабить относительные и абсолютные погрешности.
Задайте RelativeTolerance
кому , где m количество значащих цифр, требуемых в X решения. Если у X несколько шкал, начните с использования меньшего X и увеличьте оттуда, если допуск не достигнут.
Задайте AbsoluteTolerance
к значению X, которое незначительно мало для вашей задачи. Точно так же начните с меньшей X и увеличьте оттуда.
Для получения дополнительной информации смотрите Выбор Абсолютной погрешности и Относительной погрешности для Симуляции.
MassUnits
и AmountUnits
The MassUnits
и AmountUnits
свойства определяют соответствующую массу или модуль величины, которую SimBiology использует внутренне во время симуляции модели при UnitConversion
включен. Рекомендуется использовать модуль по умолчанию (<automatic>
) но в некоторых ребрах случаях, возможно, вам придется его изменить.
Изменение MassUnits
или AmountUnits
в модуль так, чтобы моделируемые значения не были слишком большими (то есть больше 106
) или слишком маленькая (то есть меньше 10-6
).
Предположим, что у вас есть модель с состоянием, которое принимает значения около 10-12
моли для всей симуляции. Может быть уместно задать AmountUnits
на picomole
. В этом случае внутренние значения симуляции будут около 1
, вместо около 10-12
как в случае по умолчанию.
Решатель и опции симуляции хранятся в объекте конфигурации модели (configset object
) модели. Опции решателя содержат такие настройки, как относительные и абсолютные погрешности. Опции симуляции являются такими настройками, как MaximumNumberOfLogs
и MaximumWallClock
. В зависимости от того, используете ли вы командную строку или графический интерфейс, способ доступа и изменения опций отличается.
Для доступа и изменения SolverOptions
, используйте следующие команды, где m1 является моделью SimBiology.
configset = getconfigset(m1); solverOpts = configset.SolverOptions; solverOpts.AbsoluteTolerance = 1e-5; solverOpts.RelativeTolerance = 1e-5; solverOpts.AbsoluteToleranceScaling = false;
Доступ к опциям симуляции непосредственно из configset
object
.
configset = getconfigset(m1); configset.MaximumNumberOfLogs = 1; configset.MaximumWallClock = 10;
Если вы используете приложение SimBiology Model Analyzer, вы можете получить доступ к опциям, нажав Simulation Settings на вкладке Home.
AbsoluteTolerance
| Configset object
| getequations
| MaximumNumberOfLogs
| MaximumWallClock
| RelativeTolerance
| SolverOptions