通常情况下,在模拟或分析SimBiology中的模型时®模型用MATLAB表示®代码。您可以通过将模型转换为编译的C代码来加速模拟,该代码执行速度更快。由于此编译步骤的时间开销较小,因此不建议对小型模型的单独模拟进行加速。但是,对于大型模型或分析过程中的重复模拟,加速可以提供显著的t超过小时间开销的速度增加。
加速模拟的功能在以下条件下执行最佳:
在不同的初始条件下进行重复模拟
运行非常长的模拟(例如,运行时间超过一分钟的模拟)
为加速模拟准备你的模型,安装并设置一个编译器:
安装一个C编译器(如果您的系统上还没有安装)。有关支持的编译器的当前列表,请参见金宝app金宝app支持的和兼容的编译器.
确保模型中的任何用户定义函数都可以用于MATLAB的代码生成,这样它们就可以转换为编译后的c语言、函数和对象支持C和c++代码生成金宝app(MATLAB编码器)或联系MathWorks技术支持金宝app.
请注意
在Windows上®,如果您没有安装另一个编译器,SimBiology使用lcc-win64编译器进行模型加速。如果您已经安装了另一个支持的编译器,它将被自动选择。金宝app为了提高加速功能的性能,您可能需要安装一个金宝app支持编译器除lcc-win64外,将自动选择。
使用sbioaccelerate
如果你正在加速一个SimBiology模型。对于SimFunction对象
以及导出的模型(SimBiology.export.Model
),使用相应的加快
方法
遵循加速的两步过程。
如果你将一系列剂量传递给sbioaccelerate
,您可以使用这些剂量的任意子集来模拟模型,并且不需要再次运行加速。
有关说明示例,请参见下面的内容。
一个SimFunction
对象在第一次执行时自动加速。因此,没有必要在创建对象之前对模型进行加速。但是,手动加速使用加快
方法,如果希望在部署应用程序中加速该对象。
有关导出的模型,请参见加快
.
如果您对模型进行任何修改,例如更改反应或添加事件,则需要在运行模拟之前重新运行加速。
然而,也有例外。你做不如果要对以下各项进行更改,则需要再次加速:
可以在中启用模型加速SimBiology模型分析通过检查为加速模拟准备模型盒子里的盒子模型程序的步骤。
如果您有自定义函数,请仅对这些函数使用持久变量(常量)您不希望重新计算或重新加载每个函数调用的变量。原因是在加速过程中,SimBiology会将模型和自定义函数转换为已编译的C代码。如果您尝试使用持久变量在生成(或已编译)的C函数,您可能会得到不同的结果。例如,如果您使用一个持久变量来计算函数被调用的次数,则每个编译函数都会有一个单独的计数。相应编译函数中的这些持久变量将不同于您定义的MATLAB函数中使用的持久变量。
如果在SimBiology表达式中指定自定义函数,如果您的代码与从MATLAB生成的代码不兼容,则可能会看到以下警告:
的SimBiology表示任何用户定义的函数都不能加速。请检查这些表达式和任何用户定义函数是否支持如MATLAB文档中的代码生成所述的代码生成。金宝app
在哪里表示是下列任何一种情况:
反应速率/规则表达式
初始赋值规则表达式
重复赋值规则表达式
事件触发器表达式
事件函数表达式
有关更多信息,请参见语言、函数和对象支持C和c++代码生成金宝app(MATLAB编码器)或联系MathWorks技术支持金宝app.
sbioaccelerate
|SimFunction对象
|SimBiology.export.Model
|加快
|加快