Skip to content
Snippets Groups Projects
Commit 61dd3db1 authored by Paul CACHEUX's avatar Paul CACHEUX
Browse files

Extracted model functionnality

parent 6781ca74
No related branches found
No related tags found
No related merge requests found
......@@ -6,9 +6,6 @@ S = 990;
I = 10;
R = 0;
% input = [S, I, R];
input = build_input(S, I, R, 12);
coeffs = options;
coeffs.InfectionRate = 0.02;
coeffs.ImmunisationRate = 0.029;
......@@ -16,22 +13,15 @@ coeffs.ImmunisationLossRate = 2.7e-4;
coeffs.DeathRate = 1.3e-2;
coeffs.NaturalDeathRate = 2e-5;
coeffs.NatalityRate = 5e-5;
VaccinationRate = build_vacc_rate(2.4e-4, 2.4e-3, 50, N);
% VaccinationRate = build_vacc_rate(0, 0, 50, N);
VaccinationVector = build_vacc_rate(2.4e-4, 2.4e-3, 50, N);
% VaccinationVector = build_vacc_rate(0, 0, 50, N);
Slist = zeros(1, N);
Wlist = zeros(1, N);
Ilist = zeros(1, N);
Rlist = zeros(1, N);
model = model(S, I, R, 12, N);
t = 1:N;
for i=t
Slist(i) = input(1);
Ilist(i) = input(2);
Rlist(i) = input(3);
Wlist(i) = sum(input(4:length(input)));
input = step(input, coeffs, VaccinationRate(i));
model.step(i, coeffs, VaccinationVector);
end
% figure
......@@ -40,7 +30,7 @@ end
% plot(t, Ilist);
% plot(t, Rlist);
% plot(t, Dlist);
area([Slist.', Wlist.', Ilist.', Rlist.']);
area([model.Slist.', model.Wlist.', model.Ilist.', model.Rlist.']);
legend('Susceptible', 'Waiting', 'Infected', 'Immunized');
title('Evolution of virus in population');
......@@ -50,15 +40,6 @@ axis([1, N, 0, inf]);
% utility functions
function input=build_input(S, I, R, Waiting)
input(1) = S;
input(2) = I;
input(3) = R;
for i = 1:Waiting
input(3+i) = 0;
end
end
function vacc_rate=build_vacc_rate(start_rate, end_rate, change_step, N)
vacc_rate = zeros(1, N);
for i=1:change_step
......
classdef model < handle
properties
vector
Slist
Ilist
Rlist
Wlist
end
methods
function obj=model(S, I, R, Waiting, N)
if nargin > 4
repeat = N;
else
repeat = 100;
end
obj.vector(1) = S;
obj.vector(2) = I;
obj.vector(3) = R;
for i = 1:Waiting
obj.vector(3+i) = 0;
end
obj.Slist = zeros(1, repeat);
obj.Ilist = zeros(1, repeat);
obj.Rlist = zeros(1, repeat);
obj.Wlist = zeros(1, repeat);
end
function step(obj, i, coeffs, VaccinationVec)
obj.Slist(i) = obj.vector(1);
obj.Ilist(i) = obj.vector(2);
obj.Rlist(i) = obj.vector(3);
obj.Wlist(i) = sum(obj.vector(4:length(obj.vector)));
obj.vector = step(obj.vector, coeffs, VaccinationVec(i));
end
end
end
\ No newline at end of file
......@@ -11,7 +11,7 @@ for i=5:length(X)
end
if length(X) > 3
infecter = sum(X(4:length(X)) + I);
% infecter = sum(X(4:length(X)) + I);
infection = S * (1 - 25 * options.InfectionRate / N) ^ I;
% infection = options.InfectionRate * S * infecter/N;
new_waiting(1) = infection;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment