传染病传播模型(SIS)Matlab代码
function spreadingability=sir(A,beta,mu)
for i=1:length(A)
for N=1:50%随机次数
InitialState=zeros(length(A),1);InitialState(i)=1;
time=5;%传播时间
I(N,:)=sire(A,InitialState,beta,mu,time);
end
spreadingability(i,1)=mean(mean(I));%节点i的传播能力
end
end
function I=sire(A,InitialState,beta,mu,time)
%******************************
% A邻接矩阵
% InitialState初始感染状态
% beta感染率
% mu恢复率
% time传播时间
%***************************** Infected=InitialState;recover=[];
Infected_temp=zeros(size(Infected));
for t=1:1:time %一共进行时长time的演化
%%
%若i是易感节点, 则对i以一定概率进行传染
x1=find(Infected==0);
a1=rand(size(x1));
b1=beta*(A(x1,:)*Infected);%已经被感染的节点以一定概率去感染其他节点
xx1=setdiff(find(a1<b1),recover);
Infected_temp(x1(xx1))=1;%不是recover的节点以一定概率被感染
xx2=setdiff(find(a1>=b1),recover);
Infected_temp(x1(xx2))=0;%对不是recover且没被感染的其他节点保留易感状态
%%
%若i是染病节点, 则对i以一定概率进行移除(recover)
x2=find(Infected==1); %如果是已经被感染的节点
a2=rand(size(x2));
xx3=find(a2<mu);%对染病节点以一定概率进行recover
recover=[recover;xx3];%更新被recover节点;
xx4=find(a2>=mu);
Infected_temp(x2(xx4))=1;%余下未被recover的节点仍保留感染能力
Infected=Infected_temp;
I(t)=sum(Infected); %记录每个时间步的染病节点数量 end end
susceptible-infected-recovered(SIR)传染病模型常用来计算节点影响力标准测量。在SIR模型中,节点有三个状态:易感者(susceptible),感染者(infected),恢复者(recovered)。易感者能够被感染者染病,感染者染病且有感染易感者的能力,恢复者由感染者恢复而成,不再具备感染能力同时也不会再被感染。传染病模型参数有恢复率μ,传染概率β,重复仿真次数T,仿真时间timespace。仿真过程如下:选择网络中一个节点i作为感染者节点,以传染概率β向i连接的邻居易感者节点传染病毒,被染病的节点继续以β的概率向他们的邻居易感者节点传染。同时每个染病节点在每阶段以μ的概率转变成恢复节点。当μ=0时,网络中只存在感染者和易感者,此时模型被称为Susceptible-infected(SI)模型。仿真结束后,可以得到每个节点i的传染能力Si

其中ki(t)表示节点第t次仿真时传染的节点个数,网络中节点传染能力S=[S1,S2,…,SN]
2018/11/20 更新:经过网友的指正,需要说明的是下面的代码是SIS传染病模型,recover节点仍具有再次被感染的能力。和SIR模型中recover节点不再被感染还是有区别的
传染病传播模型(SIS)Matlab代码的更多相关文章
- 数学建模python matlab 编程(疾病传播模型)
例12:一只游船上有800(1000)人,一名游客不慎患传染病,12(10)小时后有3人发病,由于船上不能及时隔离,问经过60(30)小时,72小时,患此病的人数.(与人口模型和Logistic模型类 ...
- 多分类问题中,实现不同分类区域颜色填充的MATLAB代码(demo:Random Forest)
之前建立了一个SVM-based Ordinal regression模型,一种特殊的多分类模型,就想通过可视化的方式展示模型分类的效果,对各个分类区域用不同颜色表示.可是,也看了很多代码,但基本都是 ...
- 调试和运行matlab代码(源程序)的技巧和教程
转载请标明出处:专注matlab代码下载的网站http://www.downma.com/ 本文主要给大家分享使用matlab编写代码,完成课程设计.毕业设计或者研究项目时,matlab调试程序的技巧 ...
- 数据分析处理之PCA OLSR PCR PLSR(NIPALS)及其Matlab代码实现
传统的OLS(普通最小二乘)方法无法解决样本数据的共线性(multicollinearity)问题,如果你的数据样本中每个特征变量具有共线性,那么使用基于PCA的PCR和PLSR方法对数据样本进行回归 ...
- 如何加速MATLAB代码运行
学习笔记 V1.0 2015/4/17 如何加速MATLAB代码运行 概述 本文源于LDPCC的MATLAB代码,即<CCSDS标准的LDPC编译码仿真>.由于代码的问题,在信息位长度很长 ...
- 卷积相关公式的matlab代码
取半径=3 用matlab代码实现上式公式: length=3;for Ki = 1:length for Kj = 1:length for Kk = 1:length Ksigma(Ki,Kj,K ...
- JAVA调用matlab代码
做实验一直用的matlab代码,需要嵌入到java项目中,matlab代码拼拼凑凑不是很了解,投机取巧采用java调用matlab的方式解决. 1. matlab版本:matlabR2014a ...
- 直方图均衡化与Matlab代码实现
昨天说了,今天要好好的来解释说明一下直方图均衡化.并且通过不调用histeq函数来实现直方图的均衡化. 一.直方图均衡化概述 直方图均衡化(Histogram Equalization) 又称直方图平 ...
- 将labelme 生成的.json文件进行可视化的代码+label.png 对比度处理的matlab代码
labelme_to_dataset 指令的代码实现: show.py文件 #!E:\Anaconda3\python.exe import argparse import json import o ...
随机推荐
- Javascript 需要注意的细节
1.使用 === 代替 ==JavaScript 使用2种不同的等值运算符:===|!== 和 ==|!=,在比较操作中使用前者是最佳实践.“如果两边的操作数具有相同的类型和值,===返回true,! ...
- Redis-5.0.0集群配置
版本:redis-5.0.0 参考:http://redis.io/topics/cluster-tutorial. 集群部署交互式命令行工具:https://github.com/eyjian/re ...
- Java安全技术
分类 Java平台安全,即JRE安全 开发Java程序(普通程序,服务,applet)安全,即提供安全的开发工具和服务. 用法 用签名和安全策略控制远程的资源访问
- spring配置Bean
Bean 就是一个类 一下代码都是基于spring之IOC和DI实现案例基础上进行解析 Bean的实例化方式: 1.无参构造 <bean id="UserService" ...
- #define 和typedef
#define PI 3.1415926 #define是将数值进行定义(语法上也可以定义类型但不建议这么做,具体下面问题说) typedef int Data; rypedef是对类型进行定义 注意 ...
- POJ3258--River Hopscotch(Binary Search similar to POJ2456)
Every year the cows hold an event featuring a peculiar version of hopscotch that involves carefully ...
- java基础-day8
第08天 常用API 今日内容介绍 u API概述 u Scanner类与String类 u StringBuilder类 第1章 API概述 1.1 API概念 API(Applica ...
- c# json转换成dynamic对象,然后在dynamic对象中动态获取指定字符串列表中的值
using Newtonsoft.Json;using System;using System.Collections.Generic;using System.Linq;using System.T ...
- hdu2710 Max Factor
题目 //下面这个是最先用的方法,因为学姐先讲完这个,所以懒得写代码,就将就着这个用,结果搞了老半天,还是错了,心累.. #include<stdio.h> #include<str ...
- 求n得阶乘得最后一位非零数字
如题,最后一位数好求,他只和最后一位相乘后的最后一位有关,唯一影响我们得是末尾0,而阶乘中末尾0来自于2和5,(10得话可以看成2 * 5),所以有这个思想我们可以筛选出1 * 2 * 3 * ... ...