主要内容

随机解算器

何时使用随机解算器

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

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

模型的前提条件包括:

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

  • 如果您的模型包含事件,您可以使用随机进行模拟ssa解算器。其他随机解算器不支持事件。金宝app

  • 您的模型不能包含剂量。没有随机解算器支持剂量。金宝app

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

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

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

在随机模拟过程中会发生什么?

在模型的随机模拟过程中,该软件忽略模型中存在的任何速率、分配或代数规则。根据模型的不同,随机模拟比确定性模拟需要更多的计算时间。

提示

当使用随机求解器模拟一个模型时,您可以增加LogDecimation财产的configset对象记录更少的数据点并减少运行时间。

随机模拟算法(SSA)

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

有利条件

  • 这个算法是精确的。

缺点

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

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

显式Tau跳跃算法

由于随机模拟算法对于许多实际问题来说可能太慢,因此设计该算法以牺牲一定的准确性来加快模拟速度。算法认为每个反应都是相互独立的。它会自动选择一个时间间隔,使每个反应的倾向函数的相对变化小于你的容错能力。在选择时间间隔后,算法计算每个反应在时间间隔内发生的次数,并对所涉及的各种化学物质的浓度进行适当的改变。

优势

  • 这种算法可以比SSA快几个数量级。

  • 你可以用这个算法来解决大问题(如果问题在数值上不是很僵硬的话)。

缺点

  • 这个算法为了速度牺牲了一些精度。

  • 这种算法不适用于刚性模型。

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

隐式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

Rathinam M., Petzold L., Cao Y., Gillespie D.(2003),“随机化学反应系统的刚度:隐含的tao -跳跃方法”,《化学物理学报》,119(24):12784-12794。

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

相关实例

更多关于