此示例显示如何正确构建包含不连续性的SimBiology®模型。
在此示例中创建的模型模拟了以指定速率产生的一级消除蛋白质。生产率包含两种不连续性。要准确模拟模型,必须创建在不连续时触发的事件。
生产率有三个“模式”的生产,如以下情节所示:
图([0 3 3 6 6 10],[5 5 3 3 0 0]);ylim([ - 0.5 5.5]);Xlabel('时间');ylabel('速度');标题('不连续蛋白质生产率');
最初(“模式1”),生产率是恒定值5.从3到6秒(“模式2”),生产率为3.在6秒(“模式3”)后,生产率是0.这些生产率在Matlab函数中实现了DiscontsimbiologyRateFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunctionFunction。
在此示例中,您将使事件添加到模型中以改变蛋白质产生的模式。这种方法确保模型中的不连续性仅通过事件发生,这进一步确保了颂歌求解器准确地计算了不连续性附近的数值行为。
请注意,要准确模拟模型,您必须使用事件来处理任何不连续性,无论与功能值或其衍生物有关。
型号= SBIOMODEL('不连续率');Central = AddCompartment(模型,'中央');AddSpecies(Central,'蛋白质')
ans =素质物种阵列索引:隔间:名称:值:单位:1个中央蛋白0
反应1 = AddReaction(模型,'蛋白质 - > null')
反应1 =辛生物学反应阵列指数:反应:1蛋白 - >零
ke = addparameter(型号,'ke',0.5);KineticLaw1 = Addkineticlaw(反应1,'批量分离');KineticLaw1.ParametervariaBlenames = {ke.name};反应1.反应;
这些事件设置了控制蛋白质生产模式的参数模式。该模式最初是1,在时间3的时间内更改为2,并在时间6变为3。
计数器= addparameter(模型,'模式',1,'constantvalue', 错误的);addevent(型号,'时间> 3'那'mode = 2')
ANS = Simbiology事件数组索引:触发:EventFCNS:1时间> 3模式= 2
addevent(型号,'时间> 6'那'mode = 3')
ANS = SimBiology事件数组索引:触发:EventFCNS:1时间> 6模式= 3
我们使用重复的赋值规则将此速率分配给参数。这让我们在仿真结果中存储生产率。
反应2 = AddReaction(模型,'null - >蛋白');Rate2 = AddParameter(模型,'率2',0,'constantvalue', 错误的);反应2.反应='率2'
反应2 =血液学反应阵列指数:反应:1核 - >蛋白质
addrule(型号,'Rate2 = DiscontsimbiologyRateFunction(时间,模式)'那'重复分配器')
ans = simbiology规则数组索引:ruletype:规则:1重复分配率2 = distontsimbiology ratefunction(时间,模式)
类型discontsimbiologyRateFunction.
功能速率= DiscontSimbiologyRateFunction(时间,模式)%#OK%distontsimbiologyRateFunceFunctionFunction - 辅助功能函数函数。%Rate = DiscontsimbiologyRateFunction(时间,模式);%Copyright 2010-2021 MathWorks,Inc.%模式是截止圆形错误的双重精度编号。我们需要将百分比递到最近的整数以正确处理此问题。mode = round(模式);切换模式壳体1速率= 5;案例2速率= 3;案例3速率= 0;否则错误('无效模式。);结尾
模型
型号=素质模型 - 不连续率模型组件:隔间:1事件:2参数:3反应:2规则:1种:1可观察到:0
sd = sbiosimulate(模型);plot(sd.time,sd.data);ylim([ - 0.5 8]);Xlabel('时间');ylabel('状态');标题('仿真结果');传奇(SD.Datanames);
此示例说明了如何创建包含不连续性的SimBiology模型。它说明了如何将事件添加到模型以解决不连续性,因此您可以准确模拟模型。