我正在尝试在MATLAB中创建流行病模拟器。目前,我已经创建了一个代码(在该委员会的成员的帮助下,谢谢路易斯!)对摩尔邻域与具有1s和2s的矩阵(其中1易感,2被感染)进行卷积。 。这是传播的基本形式,主要规则是如果细胞被感染,那么所有相邻细胞都将被感染。现在,我正在尝试执行一个规则,该规则规定在特定时间步长细胞将变得免疫。我只是不确定如何去做。我也想实现的是暴露运营商的想法。从本质上讲,它们与受感染的细胞相同,因为它们也传播疾病,但是它们没有疾病,因此不会再次被清除或变得易感。不过,这是可选的,实际上只是为了使模型更逼真而已。
此外,我还想实施一条规则,使不靠近任何感染细胞的细胞有机会免疫。
如果可能的话,我也想将其从确定如果您的邻居被感染肯定会感染,改为被感染的机会,这样就会增加邻居的数量。我认为还介绍了迁移的想法。为此,我认为也许可以使用randperm函数,看看它是否会扰乱矩阵。
到目前为止,我将附加我的基本代码。现在,我还没有取得任何进展,如何处理代码并使其完整。
matlab
clear;clf;clc;
n = 2000;
pos = mod((1:n),n) + 1; neg = mod((1:n)-2,n) + 1;
p = ceil(rand(n,n)*1.00001);
neighbourhood = [1 1 1; 1 1 1; 1 1 1]; % Moore plus own cell
for t = 1:356
p = (conv2(p-1, neighbourhood, 'same')>0) + 1; % update
image(p), colormap([1 1 1; 1 0 1]), pause(.1) % draw
end
http://csc.ucdavis.edu/~chaos/courses/nlp/Projects2008/SharonChang/Report.pdf
理想情况下,我正在尝试获得与本文相似的结果。我可以从中提取很多规则,而且我真的不知道该怎么做。就结果而言,这里的图像基本上是完美的。