随机解算器

何时使用随机求解器

随机模拟算法为模拟自然界中随机的反应提供了一种实用的方法。具有少量分子的模型可以真实地随机模拟,也就是说,与确定性解不同,允许结果包含概率元素。

用随机求解器模拟模拟先决条件

模型先决条件包括:

  • 模型中的所有反应都必须具有运动学定律属性设置为按摩.

  • 如果您的模型包含事件,则可以使用随机模拟ssa解算器。其他随机解算器不支持事件。万博1manbetx

  • 您的模型不能包含剂量。没有随机解算器支持剂量。万博1manbetx

此外,如果在模型上执行单个拟合或总体拟合配置集对象指定随机解算器和选项,请注意,在拟合过程中®临时更改:

  • 溶剂型属性设置为的默认解算器ode15s

  • 溶蚀属性设置为上次为确定性解算器配置的选项

随机仿真过程中会发生什么?

在模型的随机模拟期间,如果在模型中存在,软件将忽略任何速率,分配或代数规则。根据模型的不同,随机仿真可能需要比确定性模拟更多的计算时间。

提示

使用随机求解器模拟模型时,可以增加logdecimation.财产的财产Configset对象记录更少的数据点并减少运行时间。

随机模拟算法(SSA)

化学主方程(CME)根据概率分布的时间演化描述化学系统的动力学。对于大多数实际问题,直接求解此分布是不切实际的。相反,随机模拟算法(SSA)通过使用倾向函数模拟每个反应,有效地生成与CME一致的单独模拟。因此,分析多个随机模拟以确定概率分布比直接求解CME更有效。

有利条件

  • 该算法精确。

缺点

  • 由于此算法一次评估一个反应,因此对于包含大量反应的模型来说可能太慢。

  • 如果任何反应物的分子数是巨大的,可能需要很长时间才能完成模拟。

显式Tau跳跃算法

由于随机仿真算法对于许多实际问题可能太慢,因此该算法旨在以某种准确度的成本加速模拟。该算法将每个反应视为与其他反应无关。它自动选择时间间隔,使得每个反应的倾向函数的相对变化小于您的误差容差。在选择时间间隔之后,算法计算在时间间隔期间每种反应发生的次数,并对所涉及的各种化学物质的浓度进行适当的变化。

优势

  • 该算法可以比SSA更快的级别。

  • 您可以使用此算法进行大问题(如果问题不是数值僵硬)。

缺点

  • 该算法牺牲了一些精度的速度。

  • 这种算法对僵硬型号不利。

  • 您需要指定误差容限,以便生成的时间步长为最快时间刻度的顺序。

隐式Tau跳算法

与明确的Tau跳算法一样,隐式TAU跳队算法也是一种近似模拟方法,旨在以一定精度的成本加速模拟。它可以优于显式Tau跳跃算法来处理数值僵硬的问题。对于确定性系统,如果在系统中存在“快速”和“慢速”时间尺度,则据说问题是数值突破。对于此类问题,显式TAU-Leaping方法仅在继续采取最快时间尺度顺序的少量时间步长时执行良好。隐式Tau-跳线方法可能采取更大的步骤,仍然是稳定的。该算法将每个反应视为与他人无关。它自动选择时间间隔,使得每个反应的倾向函数的相对变化小于用户指定的误差容差。在选择时间间隔之后,算法计算在时间间隔期间每次反应发生的次数,并对所涉及的各种化学物质的浓度进行适当的变化。

优势

  • 该算法可以比SSA快得多。它通常比明确的Tau跳跃算法更快。

  • 您可以将此算法用于大型问题,也可以用于数值刚性问题。

  • 所采取的步骤总数通常少于显式tau跳跃算法。

缺点

  • 该算法牺牲了一些精度的速度。

  • 与显式tau跳跃算法相比,每一步都有更高的计算负担。这会导致每一步的CPU时间更长。

  • 这种方法通常会抑制慢流形的扰动,从而降低平均值的状态方差。

参考

[1] Gibson M.A.,Bruck J.(2000),“具有许多物种和许多渠道的化学系统的精确随机模拟,”物理化学,105:1876-1899。

[2] Gillespie D.(1977),“耦合化学反应的精确随机模拟”,物理化学杂志,81(25):2340-2361。

[3] Gillespie D.(2000),“化学朗之万方程”,《化学物理杂志》,113(1):297-306。

[4] Gillespie D.(2001),“化学反应系统的近似加速随机模拟”,《化学物理杂志》,115(4):1716-1733。

[5] Gillespie D.,Petzold L.(2004),“加速随机模拟的改进跳跃大小选择”,化学物理杂志,119:8229–8234

[6] Rathinam M.,Petzold L.,Cao Y.,Gillespie D.(2003),“随机化学反应系统的刚度:隐式Tau-跳动法”,“化学物理学,119(24):12784 -12794。

[7] Moler,C.(2003),“刚性微分方程刚度是常微分方程数值解中一个微妙、困难和重要的概念,”MATLAB News&Notes。

相关实例

更多关于