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