Cov txheej txheem:

Kom Tau Tshuaj Tiv Thaiv lossis Tsis? Txoj Haujlwm Saib Xyuas Kev Tiv Thaiv Kab Mob Los Ntawm Kab Mob Simulation: 15 Kauj Ruam
Kom Tau Tshuaj Tiv Thaiv lossis Tsis? Txoj Haujlwm Saib Xyuas Kev Tiv Thaiv Kab Mob Los Ntawm Kab Mob Simulation: 15 Kauj Ruam

Video: Kom Tau Tshuaj Tiv Thaiv lossis Tsis? Txoj Haujlwm Saib Xyuas Kev Tiv Thaiv Kab Mob Los Ntawm Kab Mob Simulation: 15 Kauj Ruam

Video: Kom Tau Tshuaj Tiv Thaiv lossis Tsis? Txoj Haujlwm Saib Xyuas Kev Tiv Thaiv Kab Mob Los Ntawm Kab Mob Simulation: 15 Kauj Ruam
Video: Saib Mis paub Poj niam (hluas nkauj) tus yam ntxwv lub siab 2024, Lub Xya hli ntuj
Anonim
Kom Tau Tshuaj Tiv Thaiv lossis Tsis? Txoj Haujlwm Saib Xyuas Kev Tiv Thaiv Kab Mob Los Ntawm Kab Mob Simulation
Kom Tau Tshuaj Tiv Thaiv lossis Tsis? Txoj Haujlwm Saib Xyuas Kev Tiv Thaiv Kab Mob Los Ntawm Kab Mob Simulation

Txheej txheem cej luam ntawm Txoj Haujlwm:

Peb txoj haujlwm tshawb fawb txog kev tiv thaiv tsiaj txhu thiab vam tias yuav txhawb cov tib neeg kom txhaj tshuaj tiv thaiv kab mob kom txo qis kev kis mob hauv peb cov zej zog. Peb txoj haujlwm sim sim ua li cas tus kab mob kis rau cov pejxeem nrog feem pua sib txawv ntawm kev txhaj tshuaj thiab tsis txhaj tshuaj. Nws qhia txog kev tiv thaiv tsiaj los ntawm kev qhia tias yuav ua li cas cov neeg txhaj tshuaj tiv thaiv kab mob tuaj yeem txo cov neeg cuam tshuam.

Peb ua qauv no hauv Matlab siv cov tswv yim kab zauv. Kev tshawb fawb duab yog txoj hauv kev ua lej los sawv cev rau kev sib raug zoo ntawm cov khoom. Hauv kab kev xav, cov duab kab muaj cov kab ntsug (lossis cov nodes) txuas nrog ntawm ntug (lossis kab). Rau peb txoj haujlwm, cov nodes yog cov tib neeg txhawj xeeb thiab cov npoo yog lawv cov kev sib txuas. Piv txwv li, yog tias ob lub node txuas nrog ntawm ntug ces nws txhais tau tias lawv yog "phooj ywg" lossis muaj qee yam kev sib cuag nrog. Kev sib cuag no yog ib txoj hauv kev kom tus kab mob kis mus. Qhov no yog vim li cas peb siv kab ke kev tshawb fawb los ua qauv peb lub tswv yim vim tias peb xav pom yuav ua li cas kab mob sib kis ntawm cov tib neeg uas cuam tshuam nrog cov pej xeem.

Peb tes num tseem cuam tshuam nrog Txoj Kev Monte Carlo. Txoj hauv kev Monte Carlo yog cov txheej txheem uas tsim ua piv txwv ib txwm kom tau txais cov txiaj ntsig lej. Hauv peb txoj haujlwm, peb siv txoj hauv kev no los khiav peb kev sim ntau lub sijhawm hloov pauv feem pua ntawm thawj qhov tsis tau txhaj tshuaj kom pom tus nqi uas tib neeg kis tus kabmob.

Txhua qhov chaws txoj haujlwm tau txuas rau hauv qab!

Credit PC:

Matlab txuas rau Graph Theory:

Kauj Ruam 1: Tsim Adjacency Matrix

Tsim Adjacency Matrix
Tsim Adjacency Matrix
Tsim Adjacency Matrix
Tsim Adjacency Matrix

Tsim ib tsab ntawv tshiab. Peb tab tom yuav hu peb li 'kab mob Sim.m'.

Peb tab tom yuav tsim qhov sib txawv 'NUMOFPEOPLE'. Koj tuaj yeem muab nws rau ib tus lej hauv tus lej. Qhov no yuav sawv cev rau cov neeg hauv koj cov pejxeem.

Txij tam sim no, peb yuav xav tias

NUMOFPEOPLE = 20;

Thawj zaug pib los ntawm kev siv Matlab cov duab kev tshawb xav ua haujlwm rau kab lus tsis qhia ncaj qha.

Yog tias koj xav paub ntau ntxiv, ntawm no yog qhov txuas rau koj kom nyeem ntau ntxiv txog nws.

www.mathworks.com/help/matlab/math/directed-and-undirected-graphs.html

Tsim kom muaj ib qho chaw nyob sib ze.

adjMatrix = zeros (NUMOFPEOPLE);

Qhov no yuav tsim cov square matrix ntawm 0s. Txhua kab hauv tus lej yog tus neeg. Txhua kab ntawv hauv tus lej yog ib tus neeg lossis phooj ywg uas tus neeg tau ntsib txhua hnub.

Saib daim duab 100 (saum toj no) los pab kom pom kev zoo li cas adjMatrix zoo li rau 20 tus neeg.

** Los ntawm qhov no peb yuav xav tias NUMOFPEOPLE yog sib npaug rau 20. **

Koj tuaj yeem sim npaj cov phiaj xwm kev nyob sib ze no. Nov yog cov lus qhia me ntsis ntxiv txog kev npaj cov hom kev kawm no.

Nco tseg: Yuav ua li cas nyob ze matrix ua haujlwm.

Ex:

%ua rau cov zauv uas nyob ib sab

ib = [0, 1, 0, 0, 0; 1, 0, 1, 1, 1; 0, 1, 0, 0, 0; 0, 1, 0, 0, 0; 0, 1, 0, 0, 0] %plotting g = graph (a); %siv daim duab muaj nuj nqi (teeb duab kev xav) daim duab (1); h = phiaj (g);

Saib Daim Duab 1 (saum toj no) kom pom yuav ua li cas ntxiv cov npoo hauv qhov sib txuam sib luag, siv cov cai hauv "Nco tseg".

Kauj Ruam 2: Tsim Kev Sib Raug Zoo

Tsim Kev Sib Raug Zoo
Tsim Kev Sib Raug Zoo

Tam sim no tau tsim cov tib neeg (cov kab ntsug lossis cov nodes), peb yuav tsum tsim kom muaj kev sib raug zoo network (kab lossis ntug ntawm kab). Qhov no yuav sim ua li cas tib neeg cuam tshuam thiab ntsib lwm tus neeg thoob plaws ib hnub.

Qhov no tuaj yeem ua tiav ntau txoj hauv kev. Ib txoj hauv kev kom ua tiav txoj haujlwm no yog xub muab tus lej tsis raug rau txhua tus neeg los txiav txim tias pes tsawg tus neeg txhua tus neeg yuav cuam tshuam nrog hauv ib hnub.

numOfFriendsMatrix = randi ([tsawg tshaj plaws phooj ywgPersonCanHave, feem ntau cov phooj ywgPersonCanHave], 1, NUMOFPEOPLE);

Qhov no ua rau 1 los ntawm 20 qhov sib piv ntawm cov lej sib piv uas sawv cev rau tus lej ntawm kev sib cuam tshuam uas txhua tus neeg muaj nyob rau ib hnub. Cov kab ntawm cov lej no yuav yog tus lej sib xws rau txhua tus neeg. Piv txwv li yog tias peb muab qhov tsawg tshaj plawsFriendsPersonCanHave = 2 thiab feem ntauFriendsPersonCanHave = 5, peb yuav tau txais qhov txiaj ntsig tsis raug ntawm 2 thiab 5.

Muaj teeb meem nrog randi ()? Hauv davhlau ya nyob twg, ntaus ntawv

pab Randi

Tom ntej no, peb ua tus lej sib piv (hu ua "allFriendsmatrix") ntawm yuav ua li cas txhua tus neeg hauv cov pejxeem muaj kev sib txuas/sib cuam tshuam hauv cov pejxeem.

tempMatrix = ;

suav = 0; allFriendsMatrix = ; rau k = 1: NUMOFPEOPLE thaum ntev (tempMatrix) ~ = numOfFriendsMatrix (k) suav = suav +1; temp = randi ([1, NUMOFPEOPLE]); tempMatrix (suav) = temp; kawg meej txhua qhov ntev (tempMatrix) ~ = 9 tempMatrix = [tempMatrix, NaN]; kawg allFriendsMatrix = [allFriendsMatrix; tempMatrix]; tempMatrix = ; suav = 0; kawg

Kev piav qhia tob ntawm cov cai:

Ua ntej peb tsim qhov khoob ntu ib ntus los tuav txhua tus neeg cov phooj ywg/cov npe sib cuam tshuam. Peb kuj tseem pib suav, uas tsuas yog taug qab qhov twg los lo qhov kev sib txuas tshiab tsis sib xws hauv tempMatrix. Rau cov loops khiav 20 zaug kom qhov no tshwm sim rau txhua tus tib neeg hauv cov pejxeem. Thawj lub sijhawm khiav mus txog thaum txhua tus neeg lub sijhawm tempMatrix yog tib lub sijhawm ntawm cov lej uas tau muab tso ua ke. Hauv lub voj no, tus lej tsis sib xws cuam tshuam rau tib neeg hauv cov pejxeem tau tsim thiab muab tso rau hauv tempMatrix. Vim tias qhov ntev ntawm txhua qhov ntawm tempMatrixes sib txawv, peb xav tau los tsim qee qhov NaN qhov tseem ceeb kom peb tuaj yeem sib koom ua ke tag nrho cov tempMaticies tag nrho rau hauv ib qho matrix ('allFriendsMatrix'). Qhov thib ob thaum lub voj daws qhov teeb meem no los ntawm kev ntxiv NaN rau hauv txhua qhov tempMatrix. Lub sijhawm ua haujlwm tau teeb tsa 9 zaug vim tias nws yog tus lej ntau dua 5, uas yog cov phooj ywg sab saum toj uas ib tus neeg tuaj yeem raug xaiv. Tus nqi '9' yog qhov sib txawv thiab tuaj yeem/yuav tsum tau hloov thaum 'mostFriendsPersonCanHave' ntau dua 9. Peb kab kawg ntawm kab ntawv (tsis suav qhov kawg) ntxiv tempMatrix mus rau kab tom ntej ntawm 'allFriendsMatrix'. Tom qab ntawd nws tshem tawm tempMatrix thiab suav rau tus neeg tom ntej.

Tso zis

Nov yog qhov kev tso tawm yuav tsum zoo li rau thawj zaug khiav los ntawm lub voj (ua ntej peb kab kawg).

tempMatrix = 16 8 17 16 13 NaN NaN NaN NaN NaN

txhua tus phooj ywg Matrix =

16 8 17 16 13NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 1212NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNQQQQQQ 4 13 2 12 NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN. NNNNNNNNN. NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN ສຸດ မ teev မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ မ 18 10 16 NaN NaN NaN NaN NaN 2 6 14 3 13 NaN NaN NaN NaN 8 16 14 8 NaN NaN NaN NaN NaN 7 7 NaN NaN NaN NaN NaN NaN NaN 19 10 9 NaN NaN NaN NaN NaN NaN 10 19 NaN NaN NaN NaN NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNWNNNNNNNNNNN NN NN NN NN NN NN NN NN NN NN NN NNN NNN NNNNN NNNNN

Tom ntej no, ntxiv cov kev sib raug zoo no mus rau adjMatrix.

rau txhua kab = 1: NUMOFPEOPLE

rau eachCol = 1: 9 yog isnan (allFriendsMatrix (eachRow, eachCol)) == 0 adjMatrix (eachRow, allFriendsMatrix (eachRow, eachCol)) = 1; adjMatrix (allFriendsMatrix (eachRow, eachCol), eachRow) = 1; kawg kawg kawg

Kev piav qhia Code

Qhov ob npaug rau lub voj mus dhau txhua kab thiab kab ntawm 'allFriendsMatrix'. Yog tias nqe lus yuav khiav rau txhua qhov txiaj ntsig uas tsis yog 'NaN'. Yeej nws yuav tsim cov ntug lossis kab ntawm kab kos. Yog li thawj kab ntawv no yuav ua yog tus neeg 1 rau tus neeg 16 thiab tus neeg 16 rau tus neeg 1. Vim tias nws tsis tau qhia ncaj, 1 yuav tsum tau hloov pauv rau ob qho tib si! Peb tsis tuaj yeem tsuas yog muaj ntug 1 txog 16 thiab tsis yog 16 txog 1. Lawv yuav tsum yog sib npaug rau nws kom ua haujlwm tau zoo hauv Matlab.

Hauv peb qhov kev sim, peb tau tsim tias tib neeg tsis tuaj yeem cuam tshuam nrog lawv tus kheej. Thaum peb randomized qhov tseem ceeb, muaj lub sijhawm peb cov matrix uas nyob ib sab muaj qhov yuam kev no.

Wb kho qhov no nrog cov cai hauv qab no:

rau txhua = 1: NUMOFPEOPLE

adjMatrix (txhua, txhua) = 0; kawg

Kev piav qhia Code

Qhov no rau lub voj kom ntseeg tau tias tus neeg 1 tsis txuas nrog tus neeg 1, tus neeg 2 tsis txuas nrog tus neeg 2, thiab lwm yam los ntawm kev ua txhua tus lawv 0. Raws li koj tuaj yeem pom hauv qab no hauv ntu tso tawm, peb muaj kab pheeb ces kaum ntawm lub xwmfab matrix los ntawm sab laug mus rau sab xis yog txhua 0's.

Tso zis

Nov yog qhov kawg adjMatrix rau qhov kev sim tam sim no. Qhov no suav rau txhua txoj kab hauv kab (Daim duab 2).

adMatrix = np

0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0

Saib daim duab 2 kom pom cov duab ntawm 'adjMatrix'.

Kauj Ruam 3: Ntxiv Kab Txheeb Xyuas Kab Mob

Tam sim no uas koj qhov program tuaj yeem tsim teeb duab nrog teeb tsa cov tib neeg tsis sib xws thiab tsim kev sib raug zoo, peb yuav tsum nkag mus rau tus kab mob cov ntaub ntawv lossis txheeb cais kom pom tias cov kev sib cuam tshuam no nyob hauv cov pejxeem tuaj yeem nce lossis txo tus kabmob.

Tsim cov kev hloov no:

unvacc %hom: ob npaug; feem pua ntawm cov neeg tsis tau txhaj tshuaj tiv thaiv kab mob

hom tshuaj tiv thaiv %: ob npaug; feem pua ntawm cov neeg txhaj tshuaj tiv thaiv tsis tau tus mob unvacc_perc %hom: ob npaug; feem pua cov neeg tsis tau txhaj tshuaj init_infect %hom: int; feem pua cov pejxeem txhaj tshuaj tiv thaiv

Tom ntej no peb yuav tsum tau ua qee qhov kev suav.

Peb tab tom yuav ua 'kis kab mob' uas yog 3*NUMOFPEOPLE matrix.

vaccine_perc = 1-unvacc_perc;

infectionMat = nan (3, NUMOFPEOPLE); tus lej = puag ncig (txhaj tshuaj tiv thaiv * perc * NUMOFPEOPLE); infectionMat (1, 1: naj npawb) = txhaj tshuaj; infectionMat (1, naj npawb+1: kawg) = unvacc; infectionMat (2, 1: kawg) = 0; infectionMat (2, 1: init_infect) = 1;

Kev piav qhia Code

kab 1: Feem pua ntawm cov pejxeem tsis tau txhaj tshuaj

kab 2: tsim 3*N tus naj npawb ntawm cov tib neeg

kab 3: nrhiav seb pes tsawg tus neeg tau txhaj tshuaj tiv thaiv los ntawm feem pua txhaj tshuaj

kab 4: rau cov neeg txhaj tshuaj tiv thaiv kab mob, tiv thaiv lawv nrog kev txhaj tshuaj tiv thaiv kab mob. Tus nqi no tau muab los ntawm kev tshawb fawb txog kab mob.

kab 5: rau cov pejxeem seem (cov neeg tsis tau txhaj tshuaj), muab feem pua tiv thaiv rau lawv. Tus nqi no tau muab los ntawm kev tshawb fawb txog kab mob.

kab 6: pib teeb tsa txhua tus neeg kom tsis txhob kis tus kab mob.

kab 7: rau cov naj npawb ntawm cov tib neeg uas tau kis tus kab mob, sau rau hauv thawj kab ob kab raws li.

Tam sim no peb tau teeb tsa txhua qhov ntsuas rau kev sim kab mob, peb tab tom yuav xaiv qhov muaj feem tias tus neeg (ob leeg txhaj tshuaj tiv thaiv thiab tsis txhaj tshuaj) tau kis tus kab mob. Qhov no tau ua tiav hauv cov kauj ruam tom ntej los ntawm kev xaiv qhov tseem ceeb ntawm 0 thiab 1 rau txhua tus neeg hauv kab thib peb ntawm qhov 'kab mob kis'.

Kauj Ruam 4: Randomize Lub Sijhawm Txhaj Tshuaj thiab Tsis Tiv Thaiv Tus Neeg Tuaj Yeem Tau Tus Kab Mob

Tom ntej no, muab txhua tus neeg rau tus lej tsis raug, qhov no yuav siv tom qab los txiav txim seb tus neeg ntawd puas kis tus kabmob lossis tsis yog.

rau w = 1: ntev (kab mobMat)

infectionMat (3, w) = rand; kawg

Kev piav qhia txoj cai

Qhov no rau lub voj cuam tshuam nrog kab thib peb ntawm 'kab mob sib kis' tsim nyob rau theem kawg. 'Rand' muab tus nqi nruab nrab ntawm 0 thiab 1 rau txhua qhov ntsuas ntawm kab 3.

Tso zis

Tam sim no kab mobMat tau ua tiav! Qhov no tau nrog cov pejxeem nrog 100% txhaj tshuaj tiv thaiv thiab 1 tus neeg tau pib kis mob.

infectionMat = np

Kab 1 txog 12 0.7500 0.7500 0.7500 0.7500 0.7500 0.7500 0.7500 0.7500 0.7500 0.7500 0.7500 0.7500 0.7500 1.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0869 0.5489 0.3177 0.9927 0.7236 0.5721 0.7172 0.9766 0.4270 0.9130 0.8973 0.8352 0.75 0.00 0.75 0.00 0.7500 0.7500 0 0 0 0 0 0 0 0.0480 0.3593 0.2958 0.6291 0.1362 0.3740 0.8648 0.2503

kab 1: Feem pua feem ntawm tsis kis tus kab mob

kab 2: Kab mob lossis tsis kis (tus nqi boolean)

kab ntawv 3: Tus naj npawb siv los tshuaj xyuas yog tias tus neeg tsis kis tus kab mob kis tau yog tias lawv ntsib tus neeg muaj mob. Yog tias tus neeg tsis kis tau ntsib tus neeg muaj tus kab mob, tus lej no ntau dua tus lej hauv kab 1 (rau tib kab ntawv), tom qab ntawd lawv kis tus kab mob. Peb yuav sau txoj haujlwm no tawm hauv qib 7.

Kauj Ruam 5: Tsim Matrices ntawm Cov Neeg Uas Tsis Txhaj Tshuaj thiab Kab Mob Los Ntawm Cov Ntaub Ntawv Pib

Tsim 2 daim ntawv teev npe hu ua "matrixUnvacc" thiab "matrixInfected" uas khaws txhua tus neeg kis los ntawm kev kis tus kab mob. Qhov no yuav raug siv kom peb tuaj yeem xim xim kab ntawv ntawm cov neeg uas tau kis tus kab mob, tsis txhaj tshuaj, lossis txhaj tshuaj tiv thaiv, pab pom kev cuam tshuam ntawm kev tsis txhaj tshuaj tiv thaiv cov tib neeg txhaj tshuaj.

meej ib

matrixInfected = ; matrixUnvacc = ; rau h = 1: ntev (kab mobMat) yog kis mobMat (1, h) == unvacc matrixUnvacc = [matrixUnvacc, h]; kawg kawg rau tus neeg = 1: NUMOFPEOPLE yog kis mob (2, tus neeg) == 1 matrixInfected = [matrixInfected, tus neeg]; kawg kawg

Kev piav qhia Code

Tsim ob daim ntawv kawm tsis tiav khaws cov lej ntawm cov neeg uas tsis tau txhaj tshuaj thiab kis tus kab mob, feem. Ob qho tib si rau loops khiav 20 zaug thiab yog tias cov lus pom zoo txaus siab, tom qab ntawd tus lej raug ntxiv rau qhov sib thooj uas raug.

Tso zis

matrixUnvacc = cov

matrixInfected =

[1]

Kauj Ruam 6: Plot Initial Graph

Cov phiaj xwm phiaj xwm pib
Cov phiaj xwm phiaj xwm pib

Tom ntej no peb yuav npaj lub matrix nyob ze.

g = graph (adjMatrix);

daim duab (1) p = phiaj (g, 'NodeColor', 'b', 'MarkerSize', 7); highlight (p, matrixUnvacc, 'NodeColor', 'g') highlight (p, matrixInfected, 'NodeColor', 'r') title_unvacc = unvacc_perc*100; title (['Feem pua ntawm cov neeg tsis tau txhaj tshuaj tiv thaiv:', num2str (title_unvacc), '%']); ncua (ceev)

Kev piav qhia txoj cai

Graph txoj kev xav hauv Matlab tau tsim ua lub luag haujlwm. Thaum peb siv daim duab () ua haujlwm, peb muaj peev xwm txhais cov 'adjMatrix' rau hauv daim duab uas tsis tau qhia ncaj qha. Tom qab ntawd peb yuav tsum tsim cov phiaj xwm uas siv cov phiaj xwm () ua haujlwm kom pom qhov zoo li cas. Peb teeb tsa cov phiaj xwm no () mus rau qhov sib txawv kom peb tuaj yeem tswj hwm thiab hloov cov xim ntawm cov phiaj xwm yooj yim dua thaum simulation. Txhua tus tib neeg (lossis cov ntshav) tau pib ua xim 'xiav'. Tom ntej no, txhua tus neeg tsis tau txhaj tshuaj tau teeb tsa xim 'ntsuab'. Cov neeg kis tau raug teeb tsa xim 'liab'. Lub npe raug teeb tsa raws li qhov feem pua tus nqi ntawm cov neeg uas tsis tau txhaj tshuaj tiv thaiv kab mob raug sim. Kev ncua () ua haujlwm ib ntus nres MatLab kev ua tiav. Peb dhau los ntawm qhov sib txawv qhov sib txawv uas tau kis uas tau suav hauv vib nas this.

Saib daim duab (saum toj no) kom pom cov cim xim xim tsis raug.

Kawm paub ntau ntxiv txog qhov tseem ceeb () ua haujlwm hauv MatLab.

Kauj Ruam 7: Simulate Kev Loj Hlob ntawm Kev Sib kis

Tom ntej no peb yuav tsum xam tawm leej twg kis tus kab mob tom qab kev sib cuam tshuam (kaw hauv adjMatrix) thiab hloov kho kab ntawv thaum ib tus neeg kis tus kab mob.

Siv adjMatrix los txiav txim seb leej twg kis tus neeg tom qab lawv cuam tshuam nrog tib neeg hauv ib hnub.

rau txhua kab = 1: ntev (adjMatrix)

yog tias kis mobMat (2, eachRow) == 1 rau txhuaCol = 1: ntev (adjMatrix) yog adjMatrix (eachRow, eachCol) == 1 % eachRow = tus neeg % eachCol = nws tus phooj ywg % txhua tus neeg tus phooj ywg thiab pom tias lawv kis mob. yog infectionMat (3, eachCol)> infectionMat (1, eachCol) infectionMat (2, eachCol) = 1; highlight (p, eachCol, 'NodeColor', 'r') ncua (ceev) kawg kawg kawg kawg kawg kawg

Lub voj loops los ntawm txhua tus neeg. Nws tshuaj xyuas tias yog tus neeg muaj tus kab mob, nws yuav tshuaj xyuas txhua tus neeg/phooj ywg lawv cuam tshuam nrog thiab txheeb xyuas seb tus phooj ywg qib kev tiv thaiv kab mob loj dua li lub zog ntawm tus kab mob. Nov yog qhov uas 'infectionMat' peb tau tsim ua ntej los rau hauv kev ua si. 1st thiab 3rd kab ntawm txhua kab ntawm tus phooj ywg raug muab piv thiab yog tias kab thib 3 loj dua, nws txhais tau tias tus phooj ywg tsis muaj kev tiv thaiv siab txaus kom dim ntawm tus kab mob thiab thaum kawg kis tus kab mob. Peb kuj hloov pauv xim siv qhov tseem ceeb () rau liab yog tias lawv kis mob.

Tam sim no koj cov cai rau kev sim yuav tsum ua haujlwm! thiab rau txhua qhov loj ntawm cov pejxeem, tsuas yog hloov NUMOFPEOPLE!

Kauj Ruam 8: Siv Monte Carlo Theory

Txhawm rau ua qhov no ib kauj ruam ntxiv thiab rho tawm cov ntaub ntawv los ntawm peb qhov kev sim ('infectionSim.m'), peb xav suav thiab teeb tsa cov qauv hauv feem pua ntawm cov neeg tsis tau txhaj tshuaj uas tau kis tus kab mob thiab feem pua ntawm cov neeg txhaj tshuaj tiv thaiv kab mob. Peb xav tias feem pua ntawm cov neeg txhaj tshuaj tiv thaiv kab mob yuav tsum qis dua li feem pua ntawm cov neeg tsis txhaj tshuaj uas tau kis tus kab mob.

Kauj Ruam 9: Ua Cov Ntaub Ntawv ('infectionSim.m') Nrog Simulation rau hauv Txoj Haujlwm

Txhawm rau khiav Monte Carlo, peb xav kom ua qhov simulation ntau zaus thiab khaws cov ntaub ntawv kom peb tuaj yeem siv qhov ntawd los teeb tsa feem pua ntawm cov neeg uas tau kis tus kab mob.

Txoj haujlwm tuaj yeem teeb tsa zoo li no:

muaj nuj nqi tso tawm = kab mob Sim (unvacc, txhaj tshuaj, NUMOFPEOPLE, unvacc_perc, init_infect, nrawm)

Tawm tswv yim tawm qhov hloov pauv hauv koj qhov kev sim txij li tam sim no koj tau hla cov no hauv cov ntaub ntawv tseem ceeb (peb yuav pib sau qhov no hauv qib 12):

unvacc, txhaj tshuaj, NUMOFPEOPLE, unvacc_perc, init_infect

Qhov txawv txav tshiab

ceev

yuav muab rau hauv cov ntawv tseem ceeb (Monte_Carlo.m).

Nco tseg: Tsis txhob hnov qab qhov kawg hauv qab ntawm cov ntawv ua haujlwm kom xaus txoj haujlwm!

Kauj Ruam 10: Xam Xeem Feem Pua ntawm Cov Neeg Tsis Txhaj Tshuaj thiab Txhaj Tshuaj Tiv Thaiv Kab Mob

Qhov no suav qhov feem pua ntawm cov neeg tsis tau txhaj tshuaj uas tau kis tus kab mob. Txoj cai no mus rau hauv qab ntawm cov ntaub ntawv 'infectionSim.m'.

num_of_unvacc = 0;

num_of_infec_unvacc = 0; %suav qhov feem pua ntawm cov neeg tsis tau txhaj tshuaj uas tau kis tus kab mob rau x = 1: ntev (kab mobMat) yog tias kis mobMat (1, x) == unvacc tus lej_of_unvacc = tus lej_of_unvacc+1; kawg yog kis mobMat (1, x) == unvacc & infectionMat (2, x) == 1 tus lej_of_infec_unvacc = tus lej_of_infec_unvacc +1; xaus qhov feem pua_of_unvacc_and_infec = (number_of_infec_unvacc / number_of_unvacc)*100;

Kev piav qhia txoj cai

Hauv lub voj, nws yuav voj dua NUMOFPEOPLE zaug. Txhua lub sijhawm tus naj npawb ntawm kev kis tus kab mob MAT sib raug rau tus lej unvacc (piv txwv li 0.95 == 0.95), tom qab ntawd tus lej ntawm cov neeg tsis tau txhaj tshuaj yuav tau nce ntxiv 1. Txhua lub sijhawm tus naj npawb ntawm tus kab mob tus naj npawb ntawm cov neeg muaj tus kab mob thiab tsis tau txhaj tshuaj tau nce los ntawm 1. Kab kawg tau faib cov naj npawb ntawm cov neeg muaj mob, tsis txhaj tshuaj los ntawm tus naj npawb ntawm cov neeg tsis tau txhaj tshuaj. Tom qab ntawd qhov feem pua yog xam los ntawm qhov no.

Kev sib tw:

Sim suav qhov feem pua ntawm kev txhaj tshuaj tiv thaiv ntawm cov neeg uas tau kis tus kab mob! (Hint: nws zoo ib yam li cov cai saum toj no, txawm li cas los xij qee qhov kev hloov pauv tau hloov pauv thiab cov npe raug kho.)

Tom ntej no feem pua ntawm cov neeg kis tus kab mob raws li tag nrho cov pejxeem raug suav:

pre_per_infect = cumsum (infectionMat (2,:));

per_infect = (pre_per_infect (1, NUMOFPEOPLE)/NUMOFPEOPLE)*100;

Kev piav qhia txoj cai

Qhov suav sau suav nrog siv kab thib ob ntawm tus kab mob sib kis, uas khaws 1s thiab 0s nyob ntawm seb tus neeg muaj tus kabmob lossis tsis yog. Txij li cumsum () muaj nuj nqi muab rov qab rau hauv matrix, peb coj tus nqi kawg hauv matrix ('pre_per_infect (1, NUMOFPEOPLE)'), uas yuav tsum yog qhov tseeb ntawm txhua qhov txiaj ntsig los ntawm 'infectionMat (2,:)'. Los ntawm kev faib cov lej los ntawm NUMOFPEOPLE thiab muab nws suav nrog 100, peb tau txais qhov feem pua kawg ntawm kev kis tus kabmob hauv cov pejxeem.

Kauj Ruam 11: Tsim Kom Muaj Qhov Hloov Pauv Hloov Hauv Koj Txoj Haujlwm 'infectionSim.m'

cov zis = [per_infect, feem pua_of_unvacc_and_infec, feem pua_of_vacc_and_infec];

Kev piav qhia txoj cai

Khaws cov ntaub ntawv no tso tawm, uas yuav xa rov qab mus rau lub ntsiab (Monte_Carlo.m) thaum lub luag haujlwm raug hu thiab ua tiav. Cov ntaub ntawv no yog siv los teeb duab cov ntsiab lus ntawm feem pua ntawm cov neeg tau txhaj tshuaj tiv thaiv thiab tsis txhaj tshuaj.

Koj txoj haujlwm 'infectionSim.m' yuav tsum ua tam sim no! Txawm li cas los xij, nws yuav tsis khiav vim peb tseem xav sau lub ntsiab!

Kauj Ruam 12: Tsim Cov Ntawv Qhia kom Tau Txais Thawj Zaug Ntawm Qhov Simulation Los Ntawm Tus Neeg Siv

Nco ntsoov li cas peb hais qhov sib txawv

ceev

yuav tsim thiab dhau los ntawm txoj haujlwm tseem ceeb? Peb yuav tsum tau txais cov txiaj ntsig kom dhau mus rau txoj haujlwm. Nco tseg, kev txiav txim ntawm qhov muaj txiaj ntsig thaum hu rau kev ua haujlwm muaj teeb meem!

Pib los ntawm kev nug tus neeg siv kom ntaus qee cov lus teb rau hauv lub davhlau ya nyob twg.

> Xaiv tus kab mob. Nco tseg nws yog tus neeg mob hnyav >> Pertussis >> Mob khaub thuas >> Mob Quav >> Kab Mob Xaiv: Mob khaub thuas >> Xaiv cov neeg coob. >> 20 >> 200 >> Cov neeg xaiv: 20 >> Xaiv qhov nrawm ntawm simulation. Pib >> Ceev >> Qhuav >> Ceev xaiv: Ceev

Cov cai hauv qab no nug tus neeg siv kab mob dab tsi lawv xav saib.

disp ('Xaiv tus kab mob. Nco ntsoov nws yog tus neeg mob siab rau')

fprintf ('Pertussis / nFlu / nMeasles / n') kab mob = input ('Kab mob raug xaiv:', 's'); yog qhov sib npaug (kab mob, 'Pertussis') txhaj tshuaj =.85; %15 feem pua muaj feem kis tus kab mob unvacc =.20; %80 feem pua muaj feem kis tus kab mob lwm qhov yog qhov sib npaug (kab mob, 'Flu') txhaj tshuaj tiv thaiv =.75; %25 feem pua muaj feem kis tus kab mob unvacc =.31; %69 feem pua muaj feem kis tus kab mob lwm qhov yog qhov sib npaug (kab mob, 'Measles') txhaj tshuaj =.97; %3 feem pua muaj feem kis tus kab mob unvacc =.10; %90 feem pua muaj feem kis tus kab mob xaus

Kev piav qhia txoj cai:

Kev faib tawm () ua haujlwm luam tawm cov lus rau lub vijtsam thiab nws tseem luam tawm cov kev xaiv sib txawv. Tus kab mob yuav raug xaiv raws li. Cov ntawv no tam sim no tsis suav nrog qhov kev siv tsis raug. Kev tawm tswv yim tsis raug yuav ua rau muaj qhov yuam kev thiab tso tseg txoj haujlwm. Txhua tus kab mob muaj tshuaj tiv thaiv thiab qhov tsis muaj txiaj ntsig cuam tshuam nrog nws. Cov txiaj ntsig no tsis yog random. Peb tau txais cov txiaj ntsig no los ntawm kev tshawb fawb txheeb cais txog kab mob.

Tom ntej no, peb yuav tsum tau nug tus neeg siv yog tias lawv xav kuaj cov neeg loj lossis me rau qhov lawv xaiv kab mob.

disp ('Xaiv cov neeg coob.')

fprintf ('20 / n200 / n ') nrawm = nkag (' Cov pejxeem xaiv: ',' s '); yog isequal (ceev, '20') pejxeem_size = 20; elseif isequal (ceev, '200') pejxeem_size = 200; kawg

Kev piav qhia txoj cai

Qhov no luam tawm nqe lus rau tus neeg siv thiab nug tus neeg siv kom nkag mus rau qhov loj ntawm cov pej xeem nws xav sim. Cov ntawv no tam sim no tsis suav nrog qhov kev siv tsis raug. Kev tawm tswv yim tsis raug yuav ua rau muaj qhov yuam kev thiab tso tseg txoj haujlwm. 20 tau raug xaiv vim nws yog qhov piv txwv me me uas tseem muab lub tswv yim zoo ntawm kev kis tus kab mob kis thoob plaws hauv cov neeg tsawg npaum li cas. 200 tus neeg raug xaiv raws li qhov kev xaiv loj dua vim tias 200 cov ntsiab lus tau npaj tseg hauv kab ntawv tsis tshua muaj qhov sib tshooj ntawm cov ntsiab lus yog li txhua yam tuaj yeem pom tau yooj yim thiab txawv ntawm ib leeg.

Tom ntej no, peb yuav tsum nrhiav qhov nrawm ntawm qhov simulation.

disp ('Xaiv qhov ceev ntawm simulation.')

fprintf ('Ceev / nSlow / n') ceev = input ('Ceev xaiv:', 's'); yog qhov sib npaug (nrawm, 'Ceev') sim_speed = 0; elseif isequal (ceev, 'qeeb') sim_speed = 0.25; kawg

Kev piav qhia txoj cai

Cov txheej txheem no zoo ib yam li tau txais hom kab mob thiab qhov loj ntawm cov neeg. Kom nrawm, yuav tsis muaj ncua. thiab rau qeeb, yuav muaj 0.25 thib ob lag hauv lub voj thaum khiav qhov simulation.

Zoo kawg! Tam sim no peb muaj tag nrho cov tswv yim los ntawm tus neeg siv peb xav tau! Cia peb txav mus rau sau cov ntaub ntawv rau feem pua sib txawv ntawm cov neeg tsis tau txhaj tshuaj.

Kauj Ruam 13: Xaiv ib feem ntawm cov neeg tsis tau txhaj tshuaj thiab suav qhov nruab nrab ntawm Cov tsis tau txhaj tshuaj thiab kis kab mob rau xaiv feem pua

Txoj cai no yog rau 0% ntawm cov neeg tsis tau txhaj tshuaj.

% ------- % 0 Tsis tau txhaj tshuaj ------------

per_infect_av_0 = ; feem pua ntawm cov_unvacc_and_infec_av_0 = ; rau kuv = 1:20 tawm = kis kab mob Sim (unvacc, txhaj tshuaj, pejxeem_size, 0, 1, sim_speed); per_infect_av_0 = [per_infect_av_0, tawm (1, 1)]; percent_of_unvacc_and_infec_av_0 = [feem pua_of_unvacc_and_infec_av_0, tawm (1, 2)]; kawg nruab nrab_infected_0 = txhais tau tias (per_infect_av_0); nruab nrab_unvacc_and_infected_0 = txhais tau tias (feem pua_of_unvacc_and_infec_av_0);

Kev piav qhia txoj cai:

Lub voj rau khiav 20 zaug. Cov txiaj ntsig los ntawm kev ua haujlwm, kab mob Sim (), yog khaws cia hauv. Txhua lub sijhawm rau lub voj ua haujlwm, tom qab ntawd feem pua ntawm cov neeg muaj mob nyob rau hauv tag nrho cov pejxeem tau ntxiv rau hauv cov lej, 'per_infect_av_0'. Ib qho ntxiv, qhov feem pua ntawm tsis tau txhaj tshuaj thiab kis tus kab mob kuj tseem ntxiv txhua lub sijhawm rau hauv 'feem pua_of_unvacc_and_infec_av_0' matrix. Hauv ob kab dhau los, ob qho no, cov lus hais saum toj no tau suav nruab nrab thiab khaws cia hauv qhov sib txawv. Txhawm rau suav, cov feem pua tau khaws cia rau txhua qhov simulation, qhov nruab nrab, thiab nkag siab. Monte Carlo tau siv los qhia qhov nruab nrab tus nqi ntawm kev sim sim thiab qhia qhov tshwm sim. Rau peb lub hom phiaj sim, peb xaiv los ua qhov simulation 20 zaug thiab nruab nrab cov txiaj ntsig ntawd.

Kev sib tw:

Rov ua dua rau txhua feem pua koj xav sim! Qhov no tuaj yeem ua tiav los ntawm kev hloov pauv cov npe raws li cov lej feem pua. Peb kuaj 0%, 5%, 10%, 20%, 30%, thiab 50%.

Hint:

Tsuas yog kab uas yuav tsum tau hloov pauv hauv cov cai tiag tiag yog

tawm = infectionSim (unvacc, txhaj tshuaj, pejxeem_size, 0, 1, sim_speed);

Hloov qhov xoom rau feem pua hauv daim ntawv zauv. Piv txwv li, rau 5% kev sim tsis tau txhaj tshuaj, 0 yuav tsum tau hloov nrog 0.5.

Kauj Ruam 14: Teeb duab: 'Tus Txheej Txheem Ntawm Kev Sib Cais hauv Unvaccinated Vs. Txhaj Tshuaj Tiv Thaiv Kab Mob Tshwj Xeeb

Nov yog txoj cai txhawm rau teeb duab ntawm kev sib kis ntawm cov neeg tsis tau txhaj tshuaj tiv thaiv tus neeg tsis txhaj tshuaj.

graph_mat_y = [nruab nrab_infected_0, nruab nrab_infected_5, nruab nrab_infected_10, nruab nrab_infected_20, nruab nrab_infected_30, nruab nrab_infected_50];

graph_mat_x = [0, 5, 10, 20, 30, 50]; nqes hav = (nruab nrab_infected_5-nruab nrab_infected_0)/5; line_y = [nruab nrab_infected_0, (nqes hav*50)+nruab nrab_infected_0]; line_x = [0, 50]; daim duab (2) phiaj (graph_mat_x, graph_mat_y); kab (line_x, line_y, 'Xim', 'liab', 'LineStyle', '-'); title (['Cuam Tshuam hauv Unvaccination rau', kab mob]); xlabel ('Feem pua ntawm Thawj Qhov Tsis Txhaj Tshuaj'); ylabel ('Feem pua ntawm Qhov Kawg Kawg Nkaus')

Kev piav qhia txoj cai

kab 1: muab y qhov tseem ceeb rau qhov nruab nrab ntawm feem pua kis

kab 2: muab x qhov tseem ceeb rau feem pua ntawm thawj feem pua uas tsis tau txhaj tshuaj

kab 3: xam txoj kab nqes ntawm 0% thiab 5%

kab 4: khaws y qhov tseem ceeb ntawm kab. Nov yog qhov txuas ntxiv ntawm ntu 0% txog 5%.

kab 5: khaws y qhov tseem ceeb ntawm kab. Kab no nthuav dav qhov ntev ntawm kab ntawv.

kab 6: tsim daim duab

kab 7: npaj cov duab x thiab y qhov tseem ceeb ntawm feem pua kis, leej twg tsis tau txhaj tshuaj.

kab 8: phiaj kab. Qhov no yog siv los qhia tias nws tsis nce linearly, tab sis nthuav tawm.

kab 9: Teeb lub npe rau daim duab.

kab 10-11: Teeb x thiab y daim ntawv rau kab ntawv.

Tam sim no koj yuav tsum tuaj yeem pom tias feem pua ntau dua ntawm cov pej xeem tsis tau txhaj tshuaj, muaj ntau dua ntawm kev kis mob. Koj tseem yuav pom tias feem ntau ntawm cov teev uas tig liab yog cov xim ntsuab, qhia tias cov tshuaj tiv thaiv pab tau qee yam! Vam tias koj nyiam qhov kev qhia no. Tawm tswv yim yog tias koj muaj lus nug!

Kauj Ruam 15: Cov Khoom Kawg: Qhov Simulation Zoo Li Cas

Txhua tus lej tuaj yeem pom ntawm no

Pom zoo: