2020年C题认证杯SEIR模型参数拟合_第1页
2020年C题认证杯SEIR模型参数拟合_第2页
2020年C题认证杯SEIR模型参数拟合_第3页
2020年C题认证杯SEIR模型参数拟合_第4页
2020年C题认证杯SEIR模型参数拟合_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2020年C题认证杯SEIR模型参数拟合今年在参加认证杯的时候做到了传染病参数拟合,但是没有记录下来。这⼏天在做我们学校数学建模的校内赛的时候,也是有需要对SEIR模型进⾏函数的拟合。因此就发这个⽂章进⾏记录。SEIR模型SEIR模型简介⾸先就稍微介绍以下SEIR模型。·S为易感状态(Susceptible),表⽰潜在的可感染⼈群,个体在感染之前是处于易感状态的,即该个体有可能被邻居个体感染。·E为潜伏状态(Exposed),表⽰已经被感染但没有表现出感染症状来的群体。·I为感染状态(Infected),表⽰表现出感染症状的⼈,该个体还会以⼀定的概率感染其能接触到的易感个体。·R为移除状态(Removed),即个体或康复,或因被隔离或死亡等原因⽽处于⼀种⽆传染性的净置状态.画出状态转移图:根据状态图写出转移⽅程:SEIR模型拟合数据部分⾸先就是为了验证模型的正确性,本篇⽂章不使⽤真实数据呈现结果,⽽采⽤Anylogic这个软件⾥⾯仿真数据,并且把它们存在data.xlsx下⾯。使⽤这个数据来进⾏参数拟合。在本次的模型中的参数有感染率β=0.1,接触⼈数r=10,潜伏率σ=0.2,康复率γ=0.5。总⼈⼝为5000。仿真部分数据如下:并且可以看到要流⾏就先要设置初始的潜伏者和感染者做为整个模型的动⼒。仿真的图像如下:求解过程本题的求解思路,是根据上述的微分⽅程,通过最⼩⼆乘法找到误差的最⼩值即可。但是可能会陷⼊局部最优解⽽与实际值不同。对于本问所选⽤的优化算法,我试了两个,⼀个是粒⼦群的函数,还有⼀个是fmincom函数,然后⽐较结果,我就展⽰后者。后者的结果是:可以看出来后⾯两个参数是准确的,前⾯的就⽐较⼤的偏差了,⽽且说函数的误差也还⾏。但是在不知道实际参数的情况下,图像所呈现出来的结果是很不错的。⽽对于实际真实的SEIR模型⽽⾔,情形会变得复杂,包括数据的获取等等在这篇⽂章⾥⾯就不做演⽰。代码实现⾸先是第⼀个SEIR⽅程functiondp=seir_fun(t,p,beta,lamda,thta,gamma)N=5000;%总⼈⼝dp=[5000-150-291,150,291,0]';%第⼀天的初始化⼈数S=p(1);E=p(2);I=p(3);R=p(4);dp(1)=-beta*lamda*S*I/N;dp(2)=beta*lamda*S*I/N-thta*E;dp(3)=thta*E-gamma*I;dp(4)=gamma*I;end接下来就是优化函数functionf=seir_Obj_fun(x)globaltrue_strue_etrue_itrue_r;%在⼦函数中使⽤全局变量前也需要声明下beta=x(1);lamda=x(2);thta=x(3);gamma=x(4);[~,p]=ode45(@(t,p)seir_fun(t,p,beta,lamda,thta,gamma),[1:1:76],[true_s(1)true_e(1)true_i(1)true_r(1)]);f=sum(((true_s-p(:,1)).^2+true_e-p(:,2)).^2+(true_i-p(:,3)).^2+(true_r-p(:,4)).^2);end主程序clear;clcd=xlsread('data.xlsx');globaltrue_strue_etrue_itrue_rtrue_s=d(:,1);true_e=d(:,2);true_i=d(:,3);true_r=d(:,4);plot(1:76,true_s,'r-',1:76,true_e,'g-',1:76,true_i,'b-',1:76,true_r,'k-')legend('S','E','I','R')holdonlb=[0.0110.010.01];ub=[12011];%设置拟合参数的取值范围以加快运⾏和取值合理%fmincom函数x0=[0.0110.010.01][x,fval]=fmincon(@seir_Obj_fun,x0,[],[],[],[],lb,ub)T=76;beta=0.3997;lamda=2.5018;thta=0.2;gamma=0.5;[~,p]=ode45(@(t,p)seir_fun(t,p,beta,lamda,thta,gamma),[1:1:T],[true_s(1)true_e(1)true_i(1)true_r(1)]);%⽤拟合的参数进⾏参数估计plot(1:T,p(:,1),'r*',1:T,p(:,2),'g*',1:T,p(:,3),'b*',1:T,p(:,4),'k*')%画出图像总结对于SEIR模型⽽⾔,今年就是⼀个很热门的模型。对于这个模型⽽⾔还是较为复杂,显然就算是完全拟合了数据,得到的参数也不是很符合实际。上⾯的代码也是我琢磨了⽐较久的时间才得以运⾏,⼀开始是从清风⽼师对于SIR的直播课的代码的延伸再加上⾃⼰对于这个模型的琢磨,就得到了⽐较令⼈满意的拟合图像。但是由于⾃⼰现在的精⼒有限,⽆法对实际的中国参数进⾏拟合,⼤家在考虑实际问题的时候,可以去尝试深⼊地了解模型,简化和丰富模型。对于优化函数的了解也是在听了恩达⽼师的机器学习课程才了解到具体使⽤。所以就还是想告诉

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论