exponenta event banner

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

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.

Проверяйте решатель ОДУ

Если ваша модель жестка, и вы выбрали несоответствующий решатель, размер шага, взятый решателем, может быть захлопнут к необоснованно небольшому уровню по сравнению с интервалом интегрирования. Убедитесь, что вы выбрали ode15s или sundials как ваш решатель для жестких ОДУ.

Отключите AbsoluteToleranceScaling

Выключите AbsoluteToleranceScaling.

SimBiology использует AbsoluteTolerance и RelativeTolerance, чтобы управлять точностью интегрирования во время симуляции. А именно, AbsoluteTolerance управляет самой большой допустимой абсолютной погрешностью в любом шаге во время симуляции.

Когда AbsoluteToleranceScaling включен (по умолчанию), каждое состояние имеет свой собственный абсолютный допуск, который может увеличиться в течение симуляции. Иногда автоматическое масштабирование является несоответствующим для моделей, которые имеют кинетику в в основном различных шкалах. Например, скорость реакции реакции может быть в порядке 1022, в то время как другой - 0.1. Путем выключения AbsoluteToleranceScaling вы можете смочь моделировать модель.

Ослабьте допуски

Если ошибка допуска симуляции все еще существует после отключения AbsoluteToleranceScaling, попытайтесь ослабить относительные и абсолютные допуски.

Установите RelativeTolerance на 10m+1, где 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, можно получить доступ к опциям путем выбора Simulation Settings из вкладки Editor редактора задачи. Для получения дополнительной информации смотрите Конфигурирующие Связанные с симуляцией Настройки.

Смотрите также

| | | | | |

Похожие темы