主要内容

加速模型仿真与分析

什么是加速度?

通常,在SimBiology中模拟或分析模型时®,该模型在MATLAB中表示®代码。您可以通过将模型转换为已编译的C代码来加速模拟,这样执行起来更快。因为这个编译步骤的时间开销很小,所以不建议对小型模型的单独模拟进行加速。然而,对于大型模型,或在分析过程中重复模拟,加速可以提供显著的速度增加,这超过了小的时间开销。

何时加速

加速模拟的功能在以下条件下执行最佳:

  • 在不同的初始条件下进行重复模拟

  • 运行非常长的模拟(例如,运行时间超过一分钟的模拟)

加速模拟和分析的先决条件

为加速模拟准备你的模型,安装并设置一个编译器:

  1. 安装一个C编译器(如果您的系统上还没有安装)。有关受支持的编译器的当前列表,请参见支持和兼容的编译器

  2. 确保模型中的任何用户定义函数都可以用于从MATLAB生成代码,以便它们可以转换为编译后的c。有关详细信息,请参见支持C和c++代码生成的语言、函数和对象(MATLAB编码器)或联系MathWorks技术支持

请注意

  • 在Windows上®,如果您没有安装其他编译器,SimBiology使用lcc-win64编译器进行模型加速。如果您已经安装了另一个受支持的编译器,它将被自动选择。为了获得更好的加速功能性能,您可能需要安装一个支持编译器而不是lc -win64,它会被自动选择。

以编程方式加速模拟

使用sbioaccelerate如果你正在加速一个SimBiology模型。对于一个SimFunction对象和导出的模型(SimBiology.export.Model),使用相应的加速方法。

使用sbioaccelerate

遵循加速的两步过程。

  1. 运行sbioaccelerate为加速模拟准备模型。使用您计划使用的相同的输入参数sbiosimulate在下一步。例如:

    sbioaccelerate (模型configset剂量);

    对于一个非常大的模型,这个步骤可能需要一分钟或更长时间才能完成。

  2. 运行sbiosimulate使用与With相同的输入参数sbioaccelerate.例如:

    simdata= sbiosimulate (模型configset剂量);

如果你将一系列的剂量传递给sbioaccelerate,您可以使用这些剂量的任何子集来模拟模型,而不需要再次运行加速。

有关示例说明,请参见以下内容。

使用加速

一个SimFunction对象在第一次函数执行时自动加速。因此,在创建对象之前没有必要加速模型。方法手动加速加速如果希望在部署应用程序中加速该对象,则使用该对象的方法。

导出模型请参见加速

何时重新运行加速

如果您对模型进行了任何修改,例如更改反应或添加事件,则需要在运行模拟之前重新运行加速。

然而,也有例外。你做如果您正在对以下内容进行更改,需要再次加速:

使用SimBiology模型分析仪加速模拟

中启用模型加速SimBiology模型分析器应用程序,检查为加速仿真准备模型方框中模型程序的步骤。

故障排除加速模拟

如果您有自定义函数,则只对那些您不想重新计算或重新加载每次函数调用的(常量)变量使用持久变量。原因是在加速过程中,SimBiology将模型和自定义函数转换为已编译的C代码。如果尝试使用持久变量在生成(或编译)的C函数之间共享数据,可能会得到不同的结果。例如,如果使用持久变量来计算函数被调用的次数,则每个编译后的函数都将有单独的计数。相应编译函数中的那些持久变量将与您定义的MATLAB函数中使用的变量不同。

如果您在SimBiology表达式中指定自定义函数,如果您的代码与MATLAB的代码生成不兼容,则可能会看到以下警告:

的SimBiology表达式任何用户定义的函数都不能加速。请检查这些表达式和任何用户定义函数是否支持代码生成,如MATLAB代码生成文档中所述。

在哪里表达式是否有下列情况之一:

  • 反应速率/规则表达

  • 初始赋值规则表达式

  • 重复赋值规则表达式

  • 事件触发表达式

  • 事件函数表达式

有关更多信息,请参见支持C和c++代码生成的语言、函数和对象(MATLAB编码器)或联系MathWorks技术支持

另请参阅

||||

相关的话题

Baidu
map