SimBiology® решатели ОДУ использования для симуляции модели. Ошибки решателя могут вызвать проблемы симуляции. Много ошибок решателя относятся к жесткости модели и относительных и абсолютных погрешностей. В результате симуляция может занять много времени. Вы можете также видеть одно из следующих сообщений об ошибке, указывая, что решатель не может решить задачу в допусках.
Допуск интегрирования, которому не соответствуют
CVODES возвратился-4 из модуля функция CVODES CVode: В t = ...
и h = ...
тест сходимости корректора неоднократно перестал работать или с |h | = hmin.
Вы можете также видеть один или несколько следующих предупреждающих сообщений, которые являются предшественниками потенциальных проблем допуска решателя.
Правая сторона системы ОДУ SimBiology приводит к комплексным числам. Мнимая часть результата будет проигнорирована.
Правая сторона системы ОДУ SimBiology приводит к бесконечному или значениям NaN. Это обычно указывает на ошибку моделирования и может привести к ошибкам интегрирования решателя.
Повторные правила присвоения модели SimBiology приводят к комплексным числам. Мнимая часть результата будет проигнорирована.
Чтобы решить проблемы симуляции, которые могут вызвать ошибки решателя, попробуйте следующие советы поиска и устранения неисправностей.
Можно ускорить симуляцию путем преобразования модели в скомпилированный код С, который выполняется быстрее. Для получения дополнительной информации смотрите Ускоряющиеся Симуляции модели и Исследования. Если симуляция является все еще медленной после ускорения, могут быть проблемы допуска решателя. Попробуйте остающиеся советы, не ускоряя модель.
MaximumNumberOfLogs
и MaximumWallClock
MaximumNumberOfLogs
и MaximumWallClock
некоторые параметры конфигурации, которые можно использовать, чтобы остановить симуляцию непосредственно перед тем, как ошибка происходит. Затем можно проверять на необычные симулированные значения, такие как отрицательные суммы разновидностей.
Например, установите MaximumNumberOfLogs
к 1
получить значения модели сразу после применения начальной буквы и повторенных правил присвоения. Если вы устанавливаете значение к 2
, и симуляция перестала работать с ошибкой интегрирования, затем это, вероятно, указывает на ошибку с правилами присвоения.
При варьировании MaximumNumberOfLogs
, симулируйте модель неоднократно с помощью тех же условий, которые производят ошибку. Сила модели симулирует без ошибки, пока вы не достигаете определенного значения MaximumNumberOfLogs
. Затем проверяйте симулированные значения в итоговом времени симуляции. Если вы видите отрицательные величины для определенных состояний, таких как отрицательные суммы разновидностей, исследуете выражения в вашей модели, которая может влиять на те состояния. Обновите выражения с учетом возможных проблем, таких как отрицательные величины или division-0, любой реорганизацией уравнений и/или вставкой некоторых мер защиты, таких как max(0,x)
или max(eps,x)
, где x является переменной, которая ответственна за ошибку.
В качестве альтернативы можно посмотреть на уравнения модели, чтобы проверять начальные условия, такие как суммы разновидностей и значения параметров во времени симуляции = 0, чтобы видеть, как ожидалось ли значения. Для получения дополнительной информации см. getequations или уравнения Модели Show и Начальные условия.
Если ваша модель жестка, и вы выбрали несоответствующий решатель, размер шага, взятый решателем, может быть захлопнут к необоснованно небольшому уровню по сравнению с интервалом интегрирования. Убедитесь, что вы выбрали ode15s
или sundials
как ваш решатель для жестких ОДУ.
AbsoluteToleranceScaling
Выключите AbsoluteToleranceScaling
.
SimBiology использует AbsoluteTolerance
и RelativeTolerance
управлять точностью интегрирования в процессе моделирования. А именно, AbsoluteTolerance
управляет самой большой допустимой абсолютной погрешностью в любом шаге в процессе моделирования.
Когда AbsoluteToleranceScaling
включен (по умолчанию), каждое состояние имеет свою собственную абсолютную погрешность, которая может увеличиться в течение симуляции. Иногда автоматическое масштабирование является несоответствующим для моделей, которые имеют кинетику в в основном различных шкалах. Например, скорость реакции реакции может быть в порядке 1022
, в то время как другой - 0.1
. Путем выключения AbsoluteToleranceScaling
, вы можете смочь симулировать модель.
Если ошибка допуска симуляции все еще существует после отключения AbsoluteToleranceScaling
, попытайтесь ослабить относительные и абсолютные погрешности.
Установите RelativeTolerance
к , где m является количеством значительных цифр, желаемых в решении X. Если X имеет несколько шкал, начните с использования меньшего X и увеличьтесь оттуда, если допуску не соответствуют.
Установите AbsoluteTolerance
к значению X, который незначительно мал для вашей проблемы. Точно так же запустите с меньшего X и увеличьтесь оттуда.
Для получения дополнительной информации смотрите Absolute Tolerance Выбора и Relative Tolerance for Simulation.
MassUnits
и AmountUnits
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.
Configset object
| SolverOptions
| AbsoluteTolerance
| RelativeTolerance
| MaximumNumberOfLogs
| MaximumWallClock
| getequations