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