| 查看: 2471 | 回复: 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 |
» 猜你喜欢
二审4个多月了还是Awaiting Reviewer Scores
已经有4人回复
OpenAI又攻克数学难题了,离AI做有机合成还有多远?
已经有13人回复
申请科研项目纯靠实力能成功吗?
已经有7人回复
极限拉扯,如何抉择
已经有14人回复
课题组会帮你通过考核么?
已经有7人回复
入职后第一次管课题组的专利缴费,对账才发现官费比别人多掏了一倍
已经有6人回复
售一区SCI文章T0P,我:8O.551.O54,科目全,可十急
已经有9人回复
售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急
已经有10人回复
售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急
已经有8人回复
售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急
已经有9人回复
2楼2018-08-19 21:30:44










回复此楼
10