| 查看: 2433 | 回复: 1 | ||
[求助]
SI模型病毒扩散程序问题求助 已有1人参与
|
|
小弟最近在做SI模型下的病毒扩散,因为使用的是图的广度优先原则来进行扩散,即一次只能是一个节点在进行扩散。实际上,每个被感染的节点都会同时向周围扩散,请问如下的代码逻辑该怎么改?为什么出来的结果不是我想要的结果。 %记录以当前节点作为传播源的开始时间 t1=cputime; %按照图的广度优先的原则来进行病毒传播 function [practiceTime,infection]=BFSspreading(A,N,source_infection_node,irate,rrate,susceptible,infection,recover,time_gap,t1,obesever) %初始化队列 %队列头 head=1; %队列尾,开始队列为空,tail==head tail=1; %向头中加入感染源节点 queue(head)=source_infection_node; %队列扩展 .这样保证头在右边,队尾在左边了 head=head+1; %开始按照广度优先搜索顺序向邻居节点传播 %判断队列是否为空 while tail~=head %记录当前已经经过了多少传播结束时间 t2=cputime; if (t2-t1)>time_gap tail=head; end %取队尾节点 i=queue(tail); %如果该节点不在移除列表之中 if isempty(find(recover==i,1)) for j=1:N %如果节点j与当前节点i相连并且节点j不在感染列表和恢复列表中,即节点j与当前节点i相连,并且还没有被感染过 if A(i,j)==1 && isempty(find(infection==j,1)) && isempty(find(recover==j,1)) %以一定的概率向周围传播 infection_random=rand(1); if infection_random < irate %新节点入列 queue(head)=j; %扩展队列 head=head+1; %将新节点j加入感染列表 infection=[infection j]; %从易感染节点列表中删除该节点,设置为-1 [row,col,v] = find(susceptible==j) ; susceptible(col)=-1; susceptible(find(susceptible==-1))=[]; end end end tail=tail+1; end %end if isempty(find(recover==i,1) end %end while end |
» 猜你喜欢
综述论文作为代表作会不会影响评审专家的印象分?
已经有13人回复
2019年青年基金涵评意见,大家看看几个A,几个B?
已经有4人回复
应该是93bebmhtak前后十一个字符比较关键
已经有29人回复
奇怪,两个人的filecode固定段从头到尾一模一样
已经有9人回复
是这周出结果还是下周出结果?
已经有3人回复
小木虫上这么多卖论文的,真有人买论文么?感觉没必要啊
已经有9人回复
有时候,自然基金真的不能太认真 (我的申报经验)
已经有4人回复
帮忙看看fileCode
已经有13人回复
为什么网上很多人说本周 12号出结果
已经有7人回复
读博的好处
已经有3人回复
2楼2018-08-19 21:30:44










回复此楼