SIR病毒传播程序求助
大哥大神们,小弟最近被一个仿真程序难住了,算法的思想很简单,但是我的程序有点问题,我知道是我的错,麻烦大家帮忙看看,程序见附件要求:实现模拟出病毒按SIR传播模型在网络上的传播情况。
输入:感染概率irate(如0.2),恢复概率rrate(如rrate =1)和网络的邻接矩阵A
输出:传播结束或者传播稳定时感染的个体总个数。
原理:网络中的节点分为三类:已经感染的节点I(infection),易感染节点S(susceptible),移除状态的节点R(removed).设网络中的节点总数为N,选择节点1为传播源进行传播,即初始时节点1的状态为infection,其他节点的状态为susceptible。依次对节点1的邻居以概率irate标记为infection状态,对节点1的所有邻居都进行了这个操作之后,节点1以概率rrate转换为removed,处于removed状态的节点不再参加传播,也不再改变自己的状态。
接下来,网络中所有的处于infection状态的节点再次按照节点1的模式进行传播,即以概率irate将自己的邻居节点标记为infection状态,完成之后又以概率rrate将自己的状态标为removed。
停止条件:所有的节点都有成为过infection状态。
解释:因为处于infection状态的节点会以概率rrate转化为removed状态而处于removed状态的节点不会再改变自己的状态,所以一旦网络中所有的节点都有过infection状态时,停止。
结果要输出处于infection和removed状态的节点集合和节点的个数。
我的matlab程序和输入文件如附件所示,但是感觉我的程序上有点问题,希望高手帮忙,跪谢啊
disease_spreading.rar
(1.42 KB)
[ 本帖最后由 liangdiny 于 2014-2-18 11:31 编辑 ]