Anda di halaman 1dari 10

NAMA : SALOMO HUTAGAOL

NIM : 180402101
MATA KULIAH : PEMODELAN DAN SIMULASI
TUGAS KE-V (5)

1. Jelaskan maksud dari:


a) Model SIS

Model SIS (Susceptible Infective Susceptible) merupakan model penyebaran


penyakit dengan karakteristik bahwa setiap individu rentan terinfeksi suatu penyakit,
kondisi ini dinotasikan dengan S (susceptible), individu yang rentan terinfeksi tersebut
berinteraksi dengan individu yang terinfeksi, kemudian terinfeksi dinotasikan dengan I
(infected). Dalam model SIS ini, individu dalam kelas infeksi dapat sembuh dengan
pengobatan medis atau proses alam, sehingga masuk kelas sehat, tetapi kesembuhan itu
tidak mengakibatkan individu tersebut kebal, sehingga memungkinkan terinfeksi kembali
dan masuk kelas infeksi. Model epidemik SIS (Susceptible Infected Susceptible)
merupakan suatu model epidemiologi untuk laju penyebaran penyakit menular yang
mendeskripsikan ketika individu tidak mempunyai kekebalan tubuh setelah terserang
suatu penyakit sehingga menyebabkan individu tersebut menjadi rentan kembali setelah
sembuh dari penyakitnya. Model ini diperoleh dari model SIR (Susceptible Infected
Recovered) yang dibuat oleh Kermack dan McKendrick pada tahun 1927. Model
epidemik penyebaran penyakit dengan laju kelahiran dapat digambarkan dengan
menggunakan model deterministik atau model stokastik [2]. Selanjutnya, ditentukan
metode analisa kualitatif dari model epidemik SIS dengan menganalisa titik
kesetimbangan, penyelesaian sistem persamaan diferensial ada atau tidak untuk suatu 𝑡
yang besar, kestabilan sistem, dan bifurkasi. Dalam tulisan ini dipelajari model SIS pada
penularan dua penyakit endemik dalam suatu populasi. Dari analisis kestabilan diperoleh
tiga titik tetap yaitu satu titik tetap tanpa penyakit dan dua titik tetap endemik. Analisis
kestabilan titik tetap tersebut bergantung pada bilangan reproduksi dasar ( 0 R ). Titik
tetap tanpa penyakit berada dalam kestabilan ketika ka R0 < 1. Untuk titik tetap endemik,
berada dalam kestabilan ketika 0 R > 1 . Dari simulasi numerik yang dilakukan terhadap
model dua penyakit endemik diperoleh tiga tipe perilaku model yaitu ketika hanya
penyakit utama yang muncul, ketika hanya penyakit tambahan yang muncul atau kedua
penyakit (co-infected) yang muncul. Kondisi kestabilan populasi individu yang terinfeksi
oleh penyakit utama berbanding lurus dengan laju penularan efektif individu menjadi
terinfeksi oleh penyakit utama.
Asumsi yang digunakan dalam model ini adalah bahwa populasi yang rentan tetap
kontak berdekatan dengan populasi yang terinfeksi sepanjang waktu t ≥ 0, jumlah
populasi konstan sebesar N dengan N = (S(t) + I(t)) dimana S dan I saling ekskusif dan
pencampuran populasi secara homogen sehingga setiap individu memiliki peluang yang
sama terjadinya infeksi. Akan tetapi jumlah atau ukuran populasi yang terinfeksi dapat
berkurang seiring adanya perpindahan individu yang terinfeksi berubah status menjadi
rentan kembali persatuan waktu dengan proporsi σ. Maka model SIS dapat
dikonstruksikan sebagai:

dengan kondisi awal S(0) = S0 dan I(0) = I0.

b) Model SEIR

Model ini secara umum identik dengan penurunan model SIR, hanya mengalami
penambahan sebuah variabel Exposed (E), yaitu individu yang telah terpapar oleh
penyakit namun belum sepenuhnya terinfeksi. Dalam hal ini populasi dibagi menjadi 4
kelompok, yaitu Susceptible (S), Exposed (E), Infected (I ), dan Recovered (R). Total
keseluruhan populasi adalah N = S + E + I + R yang sifatnya konstan.

Model matematika yang digunakan adalah model SEIR dengan mengasumsikan


bahwa laju kelahiran dan kematian adalah sama. Model SEIR yang digunakan juga
memperhatikan faktor vaksinasi, imigrasi dan emigrasi yang terjadi pada populasi. Hasil
yang diperoleh pada pemodelan SEIR adalah persamaan matematika yang merupakan
system persamaan differensial biasa tidak linear berdimensi empat (4-D). Sistem
persamaan tersebut kemudian disederhanakan menjadi sistem persamaan differnsial tidak
linear tiga dimensi (3-D). Sistem dapat disederhanakan karena asumsi bahwa populasi
yang telah sembuh menjadi kebal dan tidak lagi terinfeksi penyakit tersebut.

Model ini memiliki dua parameter tambahan yaitu satu adalah latar belakang
kematian yang tidak terpengaruh oleh keadaan penyakit, sedangkan yang lainnya adalah
vaksinasi. Vaksinasi memindahkan orang dari yang rentan menjadi resistan langsung,
tanpa menjadi terpapar atau terinfeksi. SEIR berbeda dari model SIR dalam penambahan
periode latensi. Individu yang terpapar (E) telah melakukan kontak dengan orang yang
terinfeksi, tetapi mereka sendiri tidak menular. Model SEIR dapat dikonstrusikan
sebagai:
Keterangan:
E : Individu laten/ terpapar
b : Laju penularan penyakit
x : Laju kesembuhan
m : Laju kelahiran dan laju kematian
a: Laju vaksinasi
r: Laju kekebalan tubuh

2. Implementasikan Tugas 4 ke dalam model :


A. Model SIR

B. Model SIS
C. Model SEIR

3. Cari dan buatlah program untuk implementasi dengan bahasa pemrogaman yang anda kuasai
a. Model SIR
function dPop=Diff_2_1(t, pop, parameter)
beta=parameter(1);
gamma=parameter(2);
S=pop(1);
I=pop(2);
R=pop(3);

dPop=zeros(3,1);

dPop(1)= -beta*S*I;
dPop(2)= beta*S*I - gamma*I;
dPop(3)= gamma*I;
endfunction
function [t,S,I,R] = Program_2_1(beta,gamma,S0,I0,MaxTime)
S=S0;
I=I0;
R=1-S-I;
[t, pop]=ode45(@(t,y) Diff_2_1(t,y,[beta gamma]),[0 MaxTime],[S I
R]);
S=pop(:,1); I=pop(:,2); R=pop(:,3);
Endfunction
[t,S,I,R] = Program_2_1(1.4247,0.14286,1-1e-6,1e-6,70);
plot(t,S,"-r",t,I,"-g",t,R,"-b")
xlim([0 200])
xlabel("Time","fontweight","bold")
ylabel("Number","fontweight","bold")
h = legend("S","I","R");
legend(h,"show")
B. Model SIS
beta = 0.8; delta = 1;
Para = Para_SIS (delta , beta )
Net = NetCmbn ([ MyNet (G) ])
def Para_SIS (delta , beta ) :
M = 2; q = np. array ([1]) ; L = len(q) ;
A_d = np. zeros ((M,M) ) ; A_d [1][0] = delta
A_b = []
for l in range (L) :
A_b. append (np. zeros ((M,M) ) )
A_b [0][0][1] = beta #[l][M][M]
Para =[M,q,L,A_d ,A_b ]
return Para
x0 = np. zeros (N)
x0 = Initial_Cond_Gen (N, Para [1][0] , 2 , x0)
StopCond = [’RunTime ’,
20]
ts , n_index ,
i_index , j_index =
GEMF_SIM (Para , Net ,
x0 , StopCond ,n)
T, StateCount =
Post_Population (x0 ,
M, n, ts , i_index ,
j_index )
T, StateCount =
Post_Population (x0 ,
M, n, ts , i_index ,
j_index )

C.Model SEIR
library(deSolve)
seir_ode<-function(t,Y,par){
S<-Y[1]
E<-Y[2]
I<-Y[3]
R<-Y[4]

beta<-par[1]
sigma<-par[2]
gamma<-par[3]
mu<-par[4]

dYdt<-vector(length=3)
dYdt[1]=mu-beta*I*S-mu*S
dYdt[2]=beta*I*S-(sigma+mu)*E
dYdt[3]=sigma*E-(gamma+mu)*I
return(list(dYdt))
}
beta<-520/365;
sigma<-1/60;
gamma<-1/30;
mu<-774835/(65640000*365) # UK birth and population figures 2016
init<-c(0.8,0.1,0.1)
t<-seq(0,365)
par<-c(beta,sigma,gamma,mu)
# Solve system using lsoda
sol<-lsoda(init,t,seir_ode,par)
# Plot solution
plot(t,sol[,2],type="l",col="blue",ylim=c(0,1),ylab="Proportion")
lines(t,sol[,3],col="orange")
lines(t,sol[,4],col="red")
lines(t,1-rowSums(sol[,2:4]),col="green")
legend(300,0.7,legend=c("S","E","I","R"),col=c("blue","orange","red","
green"), lty=1, cex=0.8)
4. Cari perangkat lunak baik open source maupun komersial yang menyediakan pemodelan dan
simulasi penyakit epidemik khususnya Covid-19 dan buatlah program untuk implementasi
dengan perangkat lunak tersebut
a. Model SIR
import numpy as np
# initialize the population vector from the origin-destination flow
matrix
N_k = np.abs(np.diagonal(OD) + OD.sum(axis=0) - OD.sum(axis=1))
locs_len = len(N_k) # number of locations
SIR = np.zeros(shape=(locs_len, 3)) # make a numpy array with 3
columns for keeping track of the S, I, R groups
SIR[:,0] = N_k # initialize the S group with the respective
populations

first_infections = np.where(SIR[:, 0]<=thresh, SIR[:, 0]//20, 0) # for


demo purposes, randomly introduce infections
SIR[:, 0] = SIR[:, 0] - first_infections
SIR[:, 1] = SIR[:, 1] + first_infections # move infections to the I
group

# row normalize the SIR matrix for keeping track of group proportions
row_sums = SIR.sum(axis=1)
SIR_n = SIR / row_sums[:, np.newaxis]

# initialize parameters
beta = 1.6
gamma = 0.04
public_trans = 0.5 # alpha
R0 = beta/gamma
beta_vec = np.random.gamma(1.6, 2, locs_len)
gamma_vec = np.full(locs_len, gamma)
public_trans_vec = np.full(locs_len, public_trans)

# make copy of the SIR matrices


SIR_sim = SIR.copy()
SIR_nsim = SIR_n.copy()

# run model
print(SIR_sim.sum(axis=0).sum() == N_k.sum())
from tqdm import tqdm_notebook
infected_pop_norm = []
susceptible_pop_norm = []
recovered_pop_norm = []
for time_step in tqdm_notebook(range(100)):
infected_mat = np.array([SIR_nsim[:,1],]*locs_len).transpose()
OD_infected = np.round(OD*infected_mat)
inflow_infected = OD_infected.sum(axis=0)
inflow_infected = np.round(inflow_infected*public_trans_vec)
print('total infected inflow: ', inflow_infected.sum())
new_infect = beta_vec*SIR_sim[:, 0]*inflow_infected/(N_k +
OD.sum(axis=0))
new_recovered = gamma_vec*SIR_sim[:, 1]
new_infect = np.where(new_infect>SIR_sim[:, 0], SIR_sim[:, 0],
new_infect)
SIR_sim[:, 0] = SIR_sim[:, 0] - new_infect
SIR_sim[:, 1] = SIR_sim[:, 1] + new_infect - new_recovered
SIR_sim[:, 2] = SIR_sim[:, 2] + new_recovered
SIR_sim = np.where(SIR_sim<0,0,SIR_sim)
# recompute the normalized SIR matrix
row_sums = SIR_sim.sum(axis=1)
SIR_nsim = SIR_sim / row_sums[:, np.newaxis]
S = SIR_sim[:,0].sum()/N_k.sum()
I = SIR_sim[:,1].sum()/N_k.sum()
R = SIR_sim[:,2].sum()/N_k.sum()
print(S, I, R, (S+I+R)*N_k.sum(), N_k.sum())
print('\n')
infected_pop_norm.append(I)
susceptible_pop_norm.append(S)
recovered_pop_norm.append(R

\
b. Model SIS
beta = 0.8; delta = 1;
Para = Para_SIS (delta , beta )
Net = NetCmbn ([ MyNet (G) ])
def Para_SIS (delta , beta ) :
M = 2; q = np. array ([1]) ; L = len(q) ;
A_d = np. zeros ((M,M) ) ; A_d [1][0] = delta
A_b = []
for l in range (L) :
A_b. append (np. zeros ((M,M) ) )
A_b [0][0][1] = beta #[l][M][M]
Para =[M,q,L,A_d ,A_b ]
return Para
x0 = np. zeros (N)
x0 = Initial_Cond_Gen (N, Para [1][0] , 2 , x0)
StopCond = [’RunTime ’, 20]
ts , n_index , i_index , j_index = GEMF_SIM (Para , Net , x0 ,
StopCond ,n)
T, StateCount = Post_Population (x0 , M, n, ts , i_index ,
j_index )
T, StateCount = Post_Population (x0 , M, n, ts , i_index ,
j_index )
c. Model SEIR
def base_seir_model(init_vals, params, t):
S_0, E_0, I_0, R_0 = init_vals
S, E, I, R = [S_0], [E_0], [I_0], [R_0]
alpha, beta, gamma = params
dt = t[1] - t[0]
for _ in t[1:]:
next_S = S[-1] - (beta*S[-1]*I[-1])*dt
next_E = E[-1] + (beta*S[-1]*I[-1] - alpha*E[-1])*dt
next_I = I[-1] + (alpha*E[-1] - gamma*I[-1])*dt
next_R = R[-1] + (gamma*I[-1])*dt
S.append(next_S)
E.append(next_E)
I.append(next_I)
R.append(next_R)
return np.stack([S, E, I, R]).T
# Define parameters
t_max = 100
dt = .1
t = np.linspace(0, t_max, int(t_max/dt) + 1)N = 10000
init_vals = 1 - 1/N, 1/N, 0, 0
alpha = 0.2
beta = 1.75
gamma = 0.5
params = alpha, beta, gamma
# Run simulation
results = base_seir_model(init_vals, params, t)
def seir_model_with_soc_dist(init_vals, params, t):
S_0, E_0, I_0, R_0 = init_vals
S, E, I, R = [S_0], [E_0], [I_0], [R_0]
alpha, beta, gamma, rho = params
dt = t[1] - t[0]
for _ in t[1:]:
next_S = S[-1] - (rho*beta*S[-1]*I[-1])*dt
next_E = E[-1] + (rho*beta*S[-1]*I[-1] - alpha*E[-1])*dt
next_I = I[-1] + (alpha*E[-1] - gamma*I[-1])*dt
next_R = R[-1] + (gamma*I[-1])*dt
S.append(next_S)
E.append(next_E)
I.append(next_I)
R.append(next_R)
return np.stack([S, E, I, R]).T

Anda mungkin juga menyukai