Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 2

function [q, prosek] = semafor(LambdaDol, VremeSim, tcr, tzu, tze, n)

dolasci = poissrnd(LambdaDol, 1, VremeSim);


dolasci = cumsum(dolasci);
d = dolasci (dolasci<=VremeSim); % dolasci za svaki trenutak
period=tcr+tzu+tze;
i=1;
pz=[tcr+tzu];
while (pz(i)+n <= VremeSim)
pz=[pz pz(i)+period];
i=i+1;
end;

%trazenje vremena kada ce prvi otici


%ako smo uboli trenutak u kojem traje zeleno onda to uzimamo
%a ako ne onda trazimo prvi naredni trenutak zelenog i njega uzimamo kao
%vreme polaska
for i=1:length(pz)
if ((dolasci(1)+n>=pz(i))&&(dolasci(1)+n<pz(i)+tze))
odlazak(1)=dolasci(1)+n;
break;
elseif (dolasci(1)+n<pz(i))
odlazak(1)=pz(i);
break;
end;
end;

%trazenje vremena kada ce ostali otici


%naredni automobil odlazi n trenutaka od trenutka kada je prethodni otisao
%ako je zeleno, a ako nije zeleno onda prvo naredno zeleno
for i=2:length(dolasci)
j=1;
for j=1:length(pz)
if ((odlazak(i-1)+n>=pz(j))&&(odlazak(i-1)+n<pz(j)+tze))
odlazak=[odlazak odlazak(i-1)+n];
break;
elseif (odlazak(i-1)+n<pz(j))
odlazak=[odlazak pz(j)];
break;
end;
end;
end;

q(1)=0;
for t=1:VremeSim
dosli=sum(dolasci==i);
otisli=sum(odlazak==i);
q(i+1)=q(i)+dosli-otisli;
end;

prosek=sum(odlazak-dolasci)/length(odlazak);

end

%za ovakav poziv funkcije:


%[q,prosek]=semafor(2,1000,5,7,1,1);

%izbacuje:
%??? Attempted to access odlazak(78); index out of bounds because
%numel(odlazak)=77.
%
%Error in ==> semafor at 28
% if ((odlazak(i-1)+n>=pz(j))&&(odlazak(i-1)+n<pz(j)+tze))

%Zasto jebem mu 28 majki???

You might also like