加速模型模拟和分析

什么是加速度?

通常情况下,在模拟或分析SimBiology中的模型时®模型用MATLAB表示®代码。您可以通过将模型转换为编译的C代码来加速模拟,该代码执行速度更快。由于此编译步骤的时间开销较小,因此不建议对小型模型的单独模拟进行加速。但是,对于大型模型或分析过程中的重复模拟,加速可以提供显著的t超过小时间开销的速度增加。

当加速

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

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

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

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

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

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

  2. 确保模型中的任何用户定义函数都可以用于MATLAB的代码生成,这样它们就可以转换为编译后的c语言、函数和对象支持C和c++代码生成万博1manbetx(MATLAB编码器)或联系MathWorks技术支持万博1manbetx

请注意

  • 在32位Windows®平台时,LCC编译器将自动安装。然而,为了提高加速功能的性能,您可能需要安装一个万博1manbetx支持的编译器而不是LCC,它将被自动选中。

  • 在64位Windows平台上,如果您没有安装其他编译器,SimBiology将使用LCC64编译器进行模型加速。如果您已经安装了另一个支持的编译器,它将被自动选择。万博1manbetx

  • 微软®Visual Studio®2010运行时库必须在任何运行使用Microsoft Windows SDK生成的加速模型的计算机上可用。

  • 如果您计划将您的加速模型重新分发给其他MATLAB用户,请确保他们拥有相同的运行时库。

加速模拟编程

使用氯乙酸丁酯如果你正在加速一个SimBiology模型。对于SimFunction对象以及导出的模型(SimBiology.export.Model),使用相应的加快方法

使用sbioaccelerate

遵循加速的两步过程。

  1. 运行氯乙酸丁酯为加速模拟准备模型。使用与计划一起使用的相同输入参数模拟在下一步。例如:

    氯乙酸丁酯(模型配置集剂量);

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

  2. 运行模拟与你使用的输入参数相同氯乙酸丁酯.例如:

    simdata= sbiosimulate (模型配置集剂量);

如果你将一系列剂量传递给氯乙酸丁酯,您可以使用这些剂量的任意子集来模拟模型,并且不需要再次运行加速。

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

使用加速

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

有关导出的模型,请参见加快

何时重新运行加速

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

然而,也有例外。你做如果要对以下各项进行更改,则需要再次加速:

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

可以在中启用模型加速SimBiology模型分析通过检查为加速模拟准备模型盒子里的盒子模型程序的步骤。

故障排除加速模拟

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

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

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

在哪里表示是下列任何一种情况:

  • 反应速率/规则表达式

  • 初始赋值规则表达式

  • 重复赋值规则表达式

  • 事件触发器表达式

  • 事件函数表达式

有关详细信息,请参阅语言、函数和对象支持C和c++代码生成万博1manbetx(MATLAB编码器)或联系MathWorks技术支持万博1manbetx

另请参阅

||||

相关话题