1974 year Hoppensteadt First of all, in the text [1] An age structured epidemic model is established and studied in this paper . so far , Age structured   Many achievements have been made in the study of epidemic models ( see [2]-[5] etc. ), However, most of these models do not consider the age of infection , The influence of incubation period on disease transmission   The impact of . This can not accurately describe some infectious diseases with long incubation period and course of disease ( measles , Tuberculosis, etc ) The spread of , Therefore, the establishment of   And research has physiological age , It is of great significance to establish an infectious disease model with latent period and age of infection . at present , They also have physiological age , Get sick   Age , There are few studies on latent period of infectious disease model , Only some special problems result , Ruwen [6]-[7] The physiological age and age were studied   Infectious disease model based on age of infection , writing [8]-[9] We established and studied the model with simultaneous incubation period , Non immune type of age of infection and physiological age SEIS pass   Disease model and well posedness of its solution . This article focuses on measles , Tuberculosis and other diseases , Divide the crowd into groups S( Susceptible class ),E( Latent class ),I( Get sick   class ),R( Healing ) Four groups of people , utilize K-M Principle of silo model ( See article [10]), It is easy to establish and has physiological age , Age of infection , latent   Ambulatory SEIR Model
.

 

The specific code is as follows :

 
function Message_Spread_Modeticload 'Data\Link.txt'; % Read in connection matrix % load
'\Data\Point_X.txt'; % Read in abscissa % load '\Data\Point_Y.txt'; % Read in ordinate
%-------------------------------------------------------------------------%
% State distribution and state transition probability SEIR%0: Susceptible state S(Susceptible) P_0_1; (P_0_3: Preimmunity coefficient )%1: Latent state E(Exposed)
P_1_0;P_1_2;P_1_3%2: Infected state I(Infected) P_2_0;P_2_3%3: Immune status R(Recovered) P_3_0
%-------------------------------------------------------------------------%
% Calculate the degree of each user node De=sum(Link); % Degree of user node
%------------——————---- Parameter setting and description --------------------------------%[M
N]=size(Link); % Scale of connection matrix I_E=0.6; % incubation period E Infection intensity of users I_I=0.9; % Onset period I Infection intensity of users
lamda=sum(De)/M; % Average number of messages sent per unit time %P_m1: User pre immunity coefficient
%State: User status State=zeros(1,M);0: Indicates a susceptible state (Susceptible)
%---------------------------------1---------------------------------------%
% First, we discuss the user pre immunity coefficient P_m1 Impact on virus transmission TimeStep=50;%input(' Simulation time of virus propagation in SMS network :');P_m1=[0.1,0.5,0.9];
% User pre immunity coefficient % State=zeros(TimeStep,M); % User status G_t=5; %G_t: Immune duration of users , It reflects the mutation frequency of the virus
F_t=5; %F_t: The time from virus discovery to virus killing and upgrading for i=1:length(P_m1) TimeLong_F=zeros(1,M);
% How long is the user in the period of infection TimeLong_E=zeros(1,M); % How long is the user in the incubation period Sta=zeros(1,M); % User status
% Perform pre immunization setting for j=1:M if rand(1)<=P_m1(i) Sta(j)=3; % Enter immune state TimeLong_E(j)=1;
% The time of in and out incubation period is 1 else continue; end end % state transition % Initially, a node is randomly selected as the source of disease ( At this time, the immune point cannot be selected )
% problem : The degree of nodes is different , There may be some reasons for the simulation results % To avoid this problem , We take the node with the highest degree as the source node , If immunized , Choose the next largest , Go down at once
[Number,Sta]=Select_Infected_Point(M,Sta,De); %Number: Disease source node %State
: Node state matrix after determining the source node State=zeros(TimeStep,M); Number_State=zeros(4,TimeStep);
% Statistics of the number of user states for t=1:TimeStep if t==1 State(t,:)=Sta; else % Simulate the state of each user node for
j=1:M % Determine the state of the user node , Then according to its state to determine its transformation if State(t-1,j)==0 % At this point in the susceptible state 0, It may be transferred to the incubation period
Num=Select_Number_Near(j,Link); % Find the node j Neighbor nodes of P=zeros(1,length(Num));
% The probability of a neighbor node infecting the node for k=1:length(Num) if State(t-1,Num(k))==1 % The node is in the incubation period E(1)
P(k)=I_E/De(Num(k))*sum((lamda.^([1:De(Num(k))]).*exp(-lamda))./...
(factorial([1:De(Num(k))]-1))); else if State(t-1,Num(k))==2 % The node is in the infected stage I(2)
P(k)=I_I/De(Num(k))*sum((lamda.^([1:De(Num(k))]).*exp(-lamda))./(factorial([1:De(Num(k))]-1)));
else continue; end end end P_0_1=max(P); % Probability of node infected with virus if rand<=P_0_1 % At this time, the node enters the incubation period
State(t,j)=1; else State(t,j)=State(t-1,j); end else if State(t-1,j)==1
% At this point in the latent state E, May be susceptible to S, Get sick I And immunity R transfer if rand<=1/(1+exp(-De(j))) % Towards the state of infection I transfer State(t,j)=2;
TimeLong_F(j)=TimeLong_F(j)+1; % user j Duration of illness else if rand<=1/(1+exp(-De(j)))
% To the susceptible state S transfer State(t,j)=0; else if rand<=1/(1+exp(-De(j))) % Towards immune state R transfer State(t,j)=3;
TimeLong_E(j)=TimeLong_E(j)+1; % Immune time increased 1 else State(t,j)=State(t-1,j);
% The state remains unchanged , It's still the incubation period E(1) end end end else if State(t-1,j)==2 % At this time, he was in a state of being infected with the disease I, May be susceptible to S, immune R transfer
if TimeLong_F(j)<=F_t % This means that the user will not deal with the virus at this time State(t,j)=State(t-1,j); % At this time, the user remains in the original state I
TimeLong_F(j)=TimeLong_F(j)+2; else % At this time, the user will carry out antivirus and upgrade the virus library , Enter immune state R State(t,j)=3;
TimeLong_F(j)=0; % It's in the stage of infection ( Toxic state ) Length of time TimeLong_E(j)=1; % The length of time into the immune phase end else
% At this time, the user is in the immune period if TimeLong_E<=G_t % The virus did not mutate at this time , Maintain the original state R( Immune status ) State(t,j)=State(t-1,j);
TimeLong_E(j)=TimeLong_E(j)+1; % The time in immune phase increased else if rand<=1/G_t % Virus mutation , State transition to susceptible state S
State(t,j)=0; TimeLong_E(j)=0; else % At this time, the user status remains unchanged State(t,j)=State(t-1,j);
TimeLong_E(j)=TimeLong_E(j)+1; % The time in immune phase increased end end end end end end end
% Count the number of nodes in each state Number_State(1,t)=sum(State(t,:)==0);% In a susceptible state S Total number of nodes
Number_State(2,t)=sum(State(t,:)==1);% In a susceptible state E Total number of nodes
Number_State(3,t)=sum(State(t,:)==2);% In a susceptible state I Total number of nodes
Number_State(4,t)=sum(State(t,:)==3);% In a susceptible state R Total number of nodes figure(i) if rem(t,3)==0
plot([t-1 t],[Number_State(1,t-1) Number_State(1,t)],'md-'),hold on plot([t-1
t],[Number_State(2,t-1) Number_State(2,t)],'gh:'),hold on plot([t-1
t],[Number_State(3,t-1) Number_State(3,t)],'bs-.'),hold on plot([t-1
t],[Number_State(4,t-1) Number_State(4,t)],'k.-'),hold on else continue; end
legend(' Susceptible state Susceptible',' Latent state Exposed',' Infected state Infected',' Immune status Recovered')
xlabel(' Simulation time ') ylabel(' Number of users in each state ') endendP_m1=0.3; % User pre immunity coefficient %
State=zeros(TimeStep,M); % User status % G_t=5; %G_t: Immune duration of users , It reflects the mutation frequency of the virus G_t=[1,5,9];
F_t=5; %F_t: The time from virus discovery to virus killing and upgrading for i=1:length(G_t) TimeLong_F=zeros(1,M);
% How long is the user in the period of infection TimeLong_E=zeros(1,M); % How long is the user in the incubation period Sta=zeros(1,M); % User status
% Perform pre immunization setting for j=1:M if rand(1)<=P_m1 Sta(j)=3; % Enter immune state TimeLong_E(j)=1;
% The time of in and out incubation period is 1 else continue; end end % state transition % Initially, a node is randomly selected as the source of disease ( At this time, the immune point cannot be selected )
% problem : The degree of nodes is different , There may be some reasons for the simulation results % To avoid this problem , We take the node with the highest degree as the source node , If immunized , Choose the next largest , Go down at once
[Number,Sta]=Select_Infected_Point(M,Sta,De); %Number: Disease source node %State
: Node state matrix after determining the source node State=zeros(TimeStep,M); Number_State=zeros(4,TimeStep);
% Statistics of the number of user states for t=1:TimeStep if t==1 State(t,:)=Sta; else % Simulate the state of each user node for
j=1:M % Determine the state of the user node , Then according to its state to determine its transformation if State(t-1,j)==0 % At this point in the susceptible state 0, It may be transferred to the incubation period
Num=Select_Number_Near(j,Link); % Find the node j Neighbor nodes of P=zeros(1,length(Num));
% The probability of a neighbor node infecting the node for k=1:length(Num) if State(t-1,Num(k))==1 % The node is in the incubation period E(1)
P(k)=I_E/De(Num(k))*sum((lamda.^([1:De(Num(k))]).*exp(-lamda))./...
(factorial([1:De(Num(k))]-1))); else if State(t-1,Num(k))==2 % The node is in the infected stage I(2)
P(k)=I_I/De(Num(k))*sum((lamda.^([1:De(Num(k))]).*exp(-lamda))./...
(factorial([1:De(Num(k))]-1))); else continue; end end end P_0_1=max(P);
% Probability of node infected with virus if rand<=P_0_1 % At this time, the node enters the incubation period State(t,j)=1; else State(t,j)=State(t-1,j);
end else if State(t-1,j)==1 % At this point in the latent state E, May be susceptible to S, Get sick I And immunity R transfer if
rand<=1/(1+exp(-De(j))) % Towards the state of infection I transfer State(t,j)=2; TimeLong_F(j)=TimeLong_F(j)+1;
% user j Duration of illness else if rand<=1/(1+exp(-De(j))) % To the susceptible state S transfer State(t,j)=0; else
if rand<=1/(1+exp(-De(j))) % Towards immune state R transfer State(t,j)=3;
TimeLong_E(j)=TimeLong_E(j)+1; % Immune time increased 1 else State(t,j)=State(t-1,j);
% The state remains unchanged , It's still the incubation period E(1) end end end else if State(t-1,j)==2 % At this time, he was in a state of being infected with the disease I, May be susceptible to S, immune R transfer
if TimeLong_F(j)<=F_t % This means that the user will not deal with the virus at this time State(t,j)=State(t-1,j); % At this time, the user remains in the original state I
TimeLong_F(j)=TimeLong_F(j)+2; else % At this time, the user will carry out antivirus and upgrade the virus library , Enter immune state R State(t,j)=3;
TimeLong_F(j)=0; % It's in the stage of infection ( Toxic state ) Length of time TimeLong_E(j)=1; % The length of time into the immune phase end else
% At this time, the user is in the immune period if TimeLong_E<=G_t(i) % The virus did not mutate at this time , Maintain the original state R( Immune status ) State(t,j)=State(t-1,j);
TimeLong_E(j)=TimeLong_E(j)+1; % The time in immune phase increased else if rand<=1/G_t(i)
% Virus mutation , State transition to susceptible state S State(t,j)=0; TimeLong_E(j)=0; else % At this time, the user status remains unchanged
State(t,j)=State(t-1,j); TimeLong_E(j)=TimeLong_E(j)+1; % The time in immune phase increased end end end
end end end end % Count the number of nodes in each state Number_State(1,t)=sum(State(t,:)==0);% In a susceptible state S Total number of nodes
Number_State(2,t)=sum(State(t,:)==1);% In a susceptible state E Total number of nodes
Number_State(3,t)=sum(State(t,:)==2);% In a susceptible state I Total number of nodes
Number_State(4,t)=sum(State(t,:)==3);% In a susceptible state R Total number of nodes figure(i+5) if rem(t,3)==0
plot([t-1 t],[Number_State(1,t-1) Number_State(1,t)],'md-'),hold on plot([t-1
t],[Number_State(2,t-1) Number_State(2,t)],'gh:'),hold on plot([t-1
t],[Number_State(3,t-1) Number_State(3,t)],'bs-.'),hold on plot([t-1
t],[Number_State(4,t-1) Number_State(4,t)],'k.-'),hold on else continue; end
legend(' Susceptible state Susceptible',' Latent state Exposed',' Infected state Infected',' Immune status Recovered')
xlabel(' Simulation time ') ylabel(' Number of users in each state ') endendP_m1=0.3; % User pre immunity coefficient %
State=zeros(TimeStep,M); % User status % G_t=5; %G_t: Immune duration of users , It reflects the mutation frequency of the virus G_t=5;
F_t=[1,5,9]; %F_t: The time from virus discovery to virus killing and upgrading for i=1:length(F_t) TimeLong_F=zeros(1,M);
% How long is the user in the period of infection TimeLong_E=zeros(1,M); % How long is the user in the incubation period Sta=zeros(1,M); % User status
% Perform pre immunization setting for j=1:M if rand(1)<=P_m1 Sta(j)=3; % Enter immune state TimeLong_E(j)=1;
% The time of in and out incubation period is 1 else continue; end end % state transition % Initially, a node is randomly selected as the source of disease ( At this time, the immune point cannot be selected )
% problem : The degree of nodes is different , There may be some reasons for the simulation results % To avoid this problem , We take the node with the highest degree as the source node , If immunized , Choose the next largest , Go down at once
[Number,Sta]=Select_Infected_Point(M,Sta,De); %Number: Disease source node %State
: Node state matrix after determining the source node State=zeros(TimeStep,M); Number_State=zeros(4,TimeStep);
% Statistics of the number of user states for t=1:TimeStep if t==1 State(t,:)=Sta; else % Simulate the state of each user node for
j=1:M % Determine the state of the user node , Then according to its state to determine its transformation if State(t-1,j)==0 % At this point in the susceptible state 0, It may be transferred to the incubation period
Num=Select_Number_Near(j,Link); % Find the node j Neighbor nodes of P=zeros(1,length(Num));
% The probability of a neighbor node infecting the node for k=1:length(Num) if State(t-1,Num(k))==1 % The node is in the incubation period E(1)
P(k)=I_E/De(Num(k))*sum((lamda.^([1:De(Num(k))]).*exp(-lamda))./...
(factorial([1:De(Num(k))]-1))); else if State(t-1,Num(k))==2 % The node is in the infected stage I(2)
P(k)=I_I/De(Num(k))*sum((lamda.^([1:De(Num(k))]).*exp(-lamda))./...
(factorial([1:De(Num(k))]-1))); else continue; end end end P_0_1=max(P);
% Probability of node infected with virus if rand<=P_0_1 % At this time, the node enters the incubation period State(t,j)=1; else State(t,j)=State(t-1,j);
end else if State(t-1,j)==1 % At this point in the latent state E, May be susceptible to S, Get sick I And immunity R transfer if
rand<=1/(1+exp(-De(j))) % Towards the state of infection I transfer State(t,j)=2; TimeLong_F(j)=TimeLong_F(j)+1;
% user j Duration of illness else if rand<=1/(1+exp(-De(j))) % To the susceptible state S transfer State(t,j)=0; else
if rand<=1/(1+exp(-De(j))) % Towards immune state R transfer State(t,j)=3;
TimeLong_E(j)=TimeLong_E(j)+1; % Immune time increased 1 else State(t,j)=State(t-1,j);
% The state remains unchanged , It's still the incubation period E(1) end end end else if State(t-1,j)==2 % At this time, he was in a state of being infected with the disease I, May be susceptible to S, immune R transfer
if TimeLong_F(j)<=F_t(i) % This means that the user will not deal with the virus at this time State(t,j)=State(t-1,j); % At this time, the user remains in the original state I
TimeLong_F(j)=TimeLong_F(j)+2; else % At this time, the user will carry out antivirus and upgrade the virus library , Enter immune state R State(t,j)=3;
TimeLong_F(j)=0; % It's in the stage of infection ( Toxic state ) Length of time TimeLong_E(j)=1; % The length of time into the immune phase end else
% At this time, the user is in the immune period if TimeLong_E<=G_t % The virus did not mutate at this time , Maintain the original state R( Immune status ) State(t,j)=State(t-1,j);
TimeLong_E(j)=TimeLong_E(j)+1; % The time in immune phase increased else if rand<=1/G_t % Virus mutation , State transition to susceptible state S
State(t,j)=0; TimeLong_E(j)=0; else % At this time, the user status remains unchanged State(t,j)=State(t-1,j);
TimeLong_E(j)=TimeLong_E(j)+1; % The time in immune phase increased end end end end end end end
% Count the number of nodes in each state Number_State(1,t)=sum(State(t,:)==0);% In a susceptible state S Total number of nodes
Number_State(2,t)=sum(State(t,:)==1);% In a susceptible state E Total number of nodes
Number_State(3,t)=sum(State(t,:)==2);% In a susceptible state I Total number of nodes
Number_State(4,t)=sum(State(t,:)==3);% In a susceptible state R Total number of nodes figure(i+10) if rem(t,3)==0
plot([t-1 t],[Number_State(1,t-1) Number_State(1,t)],'md-'),hold on plot([t-1
t],[Number_State(2,t-1) Number_State(2,t)],'gh:'),hold on plot([t-1
t],[Number_State(3,t-1) Number_State(3,t)],'bs-.'),hold on plot([t-1
t],[Number_State(4,t-1) Number_State(4,t)],'k.-'),hold on else continue; end
legend(' Susceptible state Susceptible',' Latent state Exposed',' Infected state Infected',' Immune status Recovered')
xlabel(' Simulation time ') ylabel(' Population by state ') endendtoc

qq 1575304183

 

 

 

 

Technology