Поиск и устранение проблем симуляции

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 кому 10m+1, где 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.

См. также

| | | | | |

Похожие темы