加速模型仿真与分析
什么是加速度?
通常,在SimBiology中模拟或分析模型时®,该模型在MATLAB中表示®代码。您可以通过将模型转换为已编译的C代码来加速模拟,这样执行起来更快。因为这个编译步骤的时间开销很小,所以不建议对小型模型的单独模拟进行加速。然而,对于大型模型,或在分析过程中重复模拟,加速可以提供显著的速度增加,这超过了小的时间开销。
何时加速
加速模拟的功能在以下条件下执行最佳:
在不同的初始条件下进行重复模拟
运行非常长的模拟(例如,运行时间超过一分钟的模拟)
加速模拟和分析的先决条件
为加速模拟准备你的模型,安装并设置一个编译器:
安装一个C编译器(如果您的系统上还没有安装)。有关受支持的编译器的当前列表,请参见支持和兼容的编译器.
确保模型中的任何用户定义函数都可以用于从MATLAB生成代码,以便它们可以转换为编译后的c。有关详细信息,请参见支持C和c++代码生成的语言、函数和对象(MATLAB编码器)或联系MathWorks技术支持.
请注意
在Windows上®,如果您没有安装其他编译器,SimBiology使用lcc-win64编译器进行模型加速。如果您已经安装了另一个受支持的编译器,它将被自动选择。为了获得更好的加速功能性能,您可能需要安装一个支持编译器而不是lc -win64,它会被自动选择。
以编程方式加速模拟
使用sbioaccelerate
如果你正在加速一个SimBiology模型。对于一个SimFunction对象
和导出的模型(SimBiology.export.Model
),使用相应的加速
方法。
使用sbioaccelerate
遵循加速的两步过程。
运行
sbioaccelerate
为加速模拟准备模型。使用您计划使用的相同的输入参数sbiosimulate
在下一步。例如:sbioaccelerate (
模型
,configset
,剂量
);对于一个非常大的模型,这个步骤可能需要一分钟或更长时间才能完成。
运行
sbiosimulate
使用与With相同的输入参数sbioaccelerate
.例如:simdata
= sbiosimulate (模型
,configset
,剂量
);
如果你将一系列的剂量传递给sbioaccelerate
,您可以使用这些剂量的任何子集来模拟模型,而不需要再次运行加速。
有关示例说明,请参见以下内容。
使用加速
一个SimFunction
对象在第一次函数执行时自动加速。因此,在创建对象之前没有必要加速模型。方法手动加速加速
如果希望在部署应用程序中加速该对象,则使用该对象的方法。
导出模型请参见加速
.
何时重新运行加速
如果您对模型进行了任何修改,例如更改反应或添加事件,则需要在运行模拟之前重新运行加速。
然而,也有例外。你做不如果您正在对以下内容进行更改,需要再次加速:
任何变体
InitialAmount
物种的性质能力
隔间属性价值
参数的性质StopTime
configset属性OutputTimes
属性SolverOptions时间
的属性ScheduleDose
时间间隔
,RepeatCount
,开始时间
的属性RepeatDose
使用SimBiology模型分析仪加速模拟
中启用模型加速SimBiology模型分析器应用程序,检查为加速仿真准备模型方框中模型程序的步骤。
故障排除加速模拟
如果您有自定义函数,则只对那些您不想重新计算或重新加载每次函数调用的(常量)变量使用持久变量。原因是在加速过程中,SimBiology将模型和自定义函数转换为已编译的C代码。如果尝试使用持久变量在生成(或编译)的C函数之间共享数据,可能会得到不同的结果。例如,如果使用持久变量来计算函数被调用的次数,则每个编译后的函数都将有单独的计数。相应编译函数中的那些持久变量将与您定义的MATLAB函数中使用的变量不同。
如果您在SimBiology表达式中指定自定义函数,如果您的代码与MATLAB的代码生成不兼容,则可能会看到以下警告:
的SimBiology表达式任何用户定义的函数都不能加速。请检查这些表达式和任何用户定义函数是否支持代码生成,如MATLAB代码生成文档中所述。
在哪里表达式是否有下列情况之一:
反应速率/规则表达
初始赋值规则表达式
重复赋值规则表达式
事件触发表达式
事件函数表达式
有关更多信息,请参见支持C和c++代码生成的语言、函数和对象(MATLAB编码器)或联系MathWorks技术支持.
另请参阅
sbioaccelerate
|SimFunction对象
|SimBiology.export.Model
|加速
|加速