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