估计参数对于系统的常微分方程给定数据利用遗传算法(COVID-19-Model)

39视图(30天)
亲爱的MATLAB专家!我来自瑞士,在学校发展COVID-19区划的模型,和需要一些紧急的帮助!我肯定是一个初学者在编码时但我设法计划模型。然而,我想 适合12个模型参数 (这里的p (1) p(12))描述转移率 一些官方数据 为了提高模型的准确性。为此,我已经创建了一个程序使用 遗传算法 的任务。问题是我只有七个州的数据三(易感,感染,诊断,境况不佳的,恢复,死亡,总人口),我不太合理的价值观——我想有一些重大问题。另外,当设置初始种群(从意大利)60 e6,什么也不会发生(也许困难和花太多时间的计算是吗?)。谁能更新我的代码,使它能正常工作,使我适合0和1之间的参数?I would be really, really grateful!! Here is my code:
函数EIDAGG_MODELL_PARAMETER
清晰的
关闭所有
clc
% 7常微分方程来描述模型(D, E,我,G1, G2, N)
函数M = EIDAGG (p、t)
%初始条件与人口的60 e6, 200感染和20诊断
%的人
M0 = [60 e6; 200; 20; 0, 0, 0; 60 e6);
(~ m] =数值(@DifEq t M0);
函数dM = DifEq (k ~)
dMdt = 0 (7, 1);
dMdt (1) = - k (1)。* * k (p (1)。(2) + p (2)。* k (3) + p (3)。* k (4) + p (12)) + p (11)。* k (7);
dMdt (2) = k (1)。* * k (p (1)。(2) + p (2)。* k (3) + p (3)。* k (4))——(p (4) + p (5) + p (6) + p (12))。* k (2);
dMdt(3) =(4页)。* k (2) - (p (7) + p (8) + p (12))。* k (3);
dMdt(4) =(6页)。* k (2) + p (8)。* k (3) - (p (9) + p (10) + p (12))。* k (4);
dMdt(5) =(5页)。* k (2) + p (7)。* k (3) + p (9)。* k (4) - p (12)。* k (5);
dMdt(6) =(10页)。* k (4);
dMdt (7) = - p (12)。* k (k (1) + (2) + k (3) + k (4) + k (5)) + p (11)。* k (7);
dM = dMdt;
结束
M = M;
结束
%从第一天到20天
t = [1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20);
%我的官方数据,G1和G2第一20天
(3 0 0 k =
19日0 1
77 0 2
129 1 2
213 1 5
311 1
385 3 12
588年45 17
821年46 21
1049 50 29
1577 83 34
1835 149 52
2263 160 79
2706 276 107
3296 414 148
3916 523 197
5061 589 233
6387 622 366
7985 724 463
8514 1004 631];
%(θ,Rsdnrm, Rsd, ExFlg OptmInfo, Lmda, Jmat] = lsqcurvefit (@kinetics theta0 t、c);
ftn = @ (p)规范(k-EIDAGG2 (p、t));
PopSz = 500;
参数= 12;
选择= optimoptions (“遗传算法”,“PopulationSize”PopSz,“InitialPopulationMatrix”兰迪(1 PopSz参数)* 1 e - 3,“MaxGenerations”2 e3,“PlotFcn”,“gaplotbestf”);
t0 =时钟;
流(“\ nStart时间:% 4 d - % 2 d - % 2 d % 2 d: % 2 d: % 07.4 f \ n 't0)
% (B fval exitflag、输出人口,分数)= ga(现年53岁的ftn[]、[][],[], 0(53岁,1),正(53岁,1),[],[],选择)
%参数应该值在0和1之间
[p fval exitflag、输出]= ga (ftn、参数、[][],[],[],0(参数,1),[1;1;1;1;1;1;1;1;1;1;1;1],[],[],选择);
t1 =时钟;
流(“\ nStop时间:% 4 d - % 2 d - % 2 d % 2 d: % 2 d: % 07.4 f \ n ',t1)
GA_Time =结束(t1、t0);
流(“\ nElapsed时间:% 23.15 e \ t \ t % 2 d: % 2 d: % 2 d % 03 d \ n 'GA_Time)
流(1,“\物常量:\ n”)
k1 = 1:长度(p)
流(1,' \ t \ tp (% d) = % 8.5 f \ n ',k1, p (k1))
结束
电视= linspace (min (t)、马克斯(t));
Mfit = EIDAGG (p、电视);
图(1)
情节(t, k,“p”)
持有
hlp =情节(电视、Mfit);
持有
网格
包含(“时间”)
ylabel (“Anzahl Personen”)
传奇(hlp“Empfanglich”,“Infiziert”,“Diagnostiziert”,“Akut gefahrdet”,“Genesen”,“Gestorben”,“位置”,“不”)
函数solpts = EIDAGG2 (p t)
solpts = EIDAGG (p、t);
solpts = solpts ((2、5、6));
结束
结束

接受的答案

明星黾
明星黾 2021年9月29日
你找到的代码我是打算直接你当我刚刚看到这篇文章。(我的道歉没有看到它。由于图像分析师编辑它,否则我就会错过它。)
问题是,你是合适的 3 变量,但是代码返回 7 变量。这将是必要的选择 3 变量要合适,然后返回只有那些变量。这样做的 “米” 变量,或 “ftn” 函数。(这样做 “ftn” 会更容易,因为你可以显示和绘制整个输出 图(1) )。
同时,作为参数估计的初始条件。通常导致一个更加成功。
我可以编辑你的代码做这一切,但是我需要知道哪些列输出你想适合的数据。我目前并不明显。
15个评论
明星黾
明星黾 2021年10月1日
像往常一样,这是我的荣幸!
没烦恼!
边界的参数是合适的假设是,在区划的模型(所有 先生 模型)的动力学参数必须间隔 (0,1)
初始条件可以成为你想要的任何东西。的 遗传算法 算法将发展一套合适的(在我的代码,因为我估计他们与其他参数),这将产生相应的结果。可以设置为静态non-parameters,然而,通常会导致一个劣质的健康,因为他们不完全确定,所以应该估计参数。
未建模的问题不是微分方程不能直接估计。相反,其中的参数估计的非参数微分方程不能可靠估计。需要任何优化常规“猜”应该是什么,而很少会以任何方式准确,更精确。

登录置评。

更多的答案(0)

类别

找到更多的在生物和健康科学帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!