Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %Tubes yang tidak selesai
- function mainDriver()
- %This is the main program that drive the simulation
- %First part is to initialize the farm
- infectiousPeriod = 40; %40 hari utk recover
- infectionChance = 0.3125;
- numCattle = 0;
- numIsolated = 0;
- dirX = [1 -1 0 0];
- dirY = [0 0 -1 1];
- initCattleProbability = input('Berapa peluang di atas sebuah petak ada sapi? Masukkan 0 sampai 1: ');
- if((initCattleProbability < 0) || (initCattleProbability > 1))
- error('Invalid Probability');
- end
- farmNum = input('Ada berapa banyak kandang peternakan? ');
- if(farmNum <= 0)
- error('Invalid input')
- end
- farmWidth = 16;
- farmHeight = 95;
- gapWidth = 2; %panjang gap antar farm
- %border kiri farm = (farmKeBerapa-1) * (farmWidth + gapWidth)
- for i = 1:farmNum
- borderKiri = (i-1) * (farmWidth + gapWidth);
- borderKanan = borderKiri + farmWidth;
- for j = borderKiri:borderKanan
- for k = 1:farmHeight
- getSpawned = randi(ceil(1/initCattleProbability));
- if(getSpawned == 1)
- locX = j;
- locY = k;
- numCattle = numCattle + 1;
- %Ini gw ngapain ya Allah
- arraySapi(numCattle).weight = 60 + randi(40)
- arraySapi(numCattle).daySick = 0;
- arraySapi(numCattle).ageDay = 1;
- arraySapi(numCattle).infected = false;
- arraySapi(numCattle).recovered = false;
- arraySapi(numCattle).isolated = false;
- arraySapi(numCattle).susceptible = true;
- arraySapi(numCattle).posX = locX;
- arraySapi(numCattle).posY = locY;
- end
- end
- end
- end
- %Initialize infected cattle
- infectedCattle = randi(numCattle);
- arraySapi(infectedCattle).infected = true;
- arraySapi(infectedCattle).susceptible = false;
- numInfected = 1;
- numSusceptible = numCattle - 1;
- numRecovered = 0;
- %for debugging purpose
- for i = 1:numCattle
- fprintf('Sapi ke-%i beratnya %i\n',i,arraySapi(i).weight);
- fprintf('Dia ada di posisi (%i,%i)\n',arraySapi(i).posX, arraySapi(i).posY);
- end
- %Sekarang cattle scheduler
- dt = 0.25; %tiap iterasi adalah step sebanyak dt hari
- while(true)
- for i = 1:numCattle
- if(arraySapi(i).weight < 600)
- %SIR
- if((arraySapi(i).infected == true) && (arraySapi(i).daySick > infectiousPeriod))
- arraySapi(i).infected = false;
- arraySapi(i).recovered = true;
- numInfected = numInfected - 1;
- numRecovered = numRecovered + 1;
- elseif(arraySapi(i).infected == true)
- arraySapi(i).daySick = arraySapi(i).daySick + dt;
- elseif(arraySapi(i).susceptible == true)
- %INI GIMANA BIAR JALAN AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
- nextToInfected = false;
- for(sapi = 1:numCattle)
- if(nextToInfected == false)
- for(it = 1:4)
- if((arraySapi(sapi).posX == arraySapi(i).posX + dirX(it)) && (arraySapi(sapi).posY == arraySapi(i).posY + dirY(it))
- if(arraySapi(sapi).infected == true)
- nextToInfected = true;
- end
- end
- end
- end
- if(nextToInfected)
- isGetInfected = randi(ceil(1/infectionChance));
- if(isGetInfected == 1)
- arraySapi(i).infected = true;
- arraySapi(i).susceptible = false;
- numInfected = numInfected + 1;
- end
- end
- %inFarm
- dir = randi(4)
- %let's hope they won't stomp another cattle
- %for the love of God please don't
- arraySapi(i).posX = arraySapi(i).posX + dirX(dir);
- arraySapi(i).posY = arraySapi(i).posY + dirY(dir);
- arraySapi(i).weight = arraySapi(i).weight + 0.5 + 0.25 * rand();
- elseif()
- %YA ALLAH BUNTU MAU NULIS APA LAGI AAAAAAAAAAAAAA
- %SOMEBODY PLEASE SAVE ME FROM THIS MONSTROSITY
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement