主要内容

确定性模拟包含一个不连续的模型

这个例子展示了如何正确建立SimBiology®包含不连续的模型。

背景

您创建的模型在这个例子模拟蛋白质的一级消除产生在指定的速度。生产速度包含两个不连续。模拟模型准确,您必须创建事件触发时的不连续性。

生产产量有三个“模式”,如下图所示:

情节([0 3 3 6 6 10],[5 5 3 3 0 0]);ylim ([-0.5 - 5.5]);包含(“时间”);ylabel (“速度”);标题(不连续的蛋白质产量的);

图包含一个坐标轴对象。坐标轴对象与标题不连续蛋白质产量,包含时间,ylabel率包含一个类型的对象。

最初(“模式1”),生产速度是一个常数的价值5。从3到6秒(“模式2”),生产速度是3。6秒之后(模式3),产率为0。这些生产速度实现discontSimBiologyRateFunction MATLAB函数。米,它需要两个参数,仿真时间和生产模式。

在这个例子中,您将添加事件模型来改变蛋白质的生产方式。这种方法可以确保不连续模型中只能通过事件发生,进一步确保ODE求解器准确计算数值行为在间断附近。

注意,准确模拟模型必须使用事件来处理任何不连续,无论相关函数值或其衍生品。

构建模型、车厢和物种

模型= sbiomodel (“不连续率”);中央= addcompartment(模型,“中央”);addspecies(中央,“蛋白质”)
ans = SimBiology物种数组索引:舱:名称:价值:单位:1中央蛋白质0

构造一阶消除反应

reaction1 = addreaction(模型,“蛋白质- >空”)
数组索引reaction1 = SimBiology反应:反应:1蛋白质- > null
克= addparameter(模型,“柯”,0.5);kineticLaw1 = addkineticlaw (reaction1,“MassAction”);kineticLaw1。ParameterVariableNames = {ke.Name};reaction1.ReactionRate;

构造不连续时触发的事件

这些事件设置一个参数模式,控制蛋白质的生产方式。模式最初1、2时3、改变和变化3时间6。

计数器= addparameter(模型,“模式”,1“ConstantValue”、假);addevent(模型,“时间> 3”,“模式= 2”)
ans = SimBiology事件数组索引:触发:EventFcns: 1时间> = 2 3模式
addevent(模型,“时间> 6”,“模式= 3”)
ans = SimBiology事件数组索引:触发:EventFcns: 1时间> = 3 6模式

构建反应对蛋白质产量

我们将这个速度分配给一个参数使用重复分配规则。这让我们在仿真结果存储产率。

reaction2 = addreaction(模型,“零- >蛋白质”);rate2 = addparameter(模型,“rate2”0,“ConstantValue”、假);reaction2。ReactionRate =“rate2”
数组索引reaction2 = SimBiology反应:反应:1零- >蛋白质
addrule(模型,' rate2 = discontSimBiologyRateFunction(时间、模式),“repeatedAssignment”)
ans = SimBiology规则数组索引:RuleType:规则:1 repeatedAssignment rate2 = discontSimBiologyRateFunction(时间、模式)

视图discontSimBiologyRateFunction的内容

类型discontSimBiologyRateFunction
功能率= discontSimBiologyRateFunction(时间、模式)% #好< INUSL > % discontSimBiologyRateFunction——SimBiology Helper函数的例子。%的速度= discontSimBiologyRateFunction(时间、方式);% 2010 - 2021版权MathWorks公司%模式是一个双精度数字舍入错误。我们需要%四舍五入到最近的整数来正确处理这个问题。模式=圆(模式);开关模式案例1 = 5;2率= 3;案例3率= 0;否则错误(“无效的模式。');结束

模拟模型和情节

模型
模型= SimBiology模型,不连续模型组件:隔间:1事件:两个参数:3反应:2规则:1种:1可见:0
sd = sbiosimulate(模型);情节(sd。时间,sd.Data);ylim (-0.5 [8]);包含(“时间”);ylabel (“状态”);标题(的仿真结果);传奇(sd.DataNames);

图包含一个坐标轴对象。坐标轴对象标题仿真结果,包含时间,ylabel状态包含3线类型的对象。这些对象代表蛋白质模式,rate2。

结论

这个例子演示了如何创建一个SimBiology模型,其中包含不连续。它演示了如何将事件添加到模型解决不连续,所以你可以准确地模拟模型。