Sunteți pe pagina 1din 5

Moraru Maria Luminita

MPI

Simulation of the activities in the small scale example in C1_L1_MFDA


H1_1. Pentru reprezentarea variabilei boolene am folosit urmatoarea functie:

function [ B ] = plot_boolean( t )

if (nargin == 0)

t = [5, 10, 20, 25 ];

end

k=1;

B=zeros(size(2:50));

for i = 2:50

if i == t(k)

B(i) = mod(B(i - 1) + 1, 2);

k = k + 1;

else

B(i) = B(i - 1);

end

if k > size(t)

if (B(i) == 1)

B(1,i:50)=ones(1,50-i+1);

end

break

end

end

plot(B);

end

Prin apelarea functiei fara parametrii, de tipul : ” plot_boolean()” se obtine un grafic cu valorile
predefinite ale variabilelei boolene.

Prin apelarea functiei cu un parametru care contine momentele de timp in care au loc tranzitii de stare
sau evenimente, se construieste iterativ vectorul cu valorile boolene si apoi se traseaza grafic variabila.

Functia are ca parametru de iesire vectorul cu valorile variabilelei boolene la fiecare moment de timp
din domeniul definit.
Moraru Maria Luminita
MPI

H1_2

function [ ] = plot_evolution( ea, eb , ta, tb )

%initializare parametrii

BG1=zeros(1,100);

BG2=zeros(1,100);

BS=zeros(1,100);

nea=size(ea,2);

neb=size(eb,2);

nta=size(ta,2);

ntb=size(tb,2);

k1=1;

k2=1;

k3=1;

k4=1;

ea=ea*10;

ta=ta*10;

eb=eb*10;

tb=tb*10;

for i = 2:100

if BG1(i-1) == 0 && BG2(i-1) == 0 && BS(i-1) == 0 && ea(k1) == i

BG1(i:end) = ones(1,100-i+1); %daca apare un eveniment ea si G1,G2 nu au activitate, iar


supervizorul o permite, G1 isi incepe activitatea

k1=k1+1;

end

if BG1(i-1) == 1 && BG2(i-1) == 0 && BS(i-1) == 0 && ta(k3) == i

BS(i:end) = ones(1,100-i+1); %daca apare un eveniment de tip ta, G1 proceseaza si supervizorul este
neocupat, supervizorul isi schimba starea

BG1(i:end) = zeros(1,100-i+1);%G1 inceteaza activitatea


Moraru Maria Luminita
MPI

k3=k3+1;

end

if BG1(i-1) == 0 && BG2(i-1) == 0 && BS(i-1) == 1 && eb(k2) == i

BG2(i:end) = ones(1,100-i+1); %daca apare eb, supervizorul permite si amandoi agentii stau, G2
incepe activitatea

k2=k2+1;

end

if BG1(i-1) == 0 && BG2(i-1) == 1 && BS(i-1) == 1 && tb(k4) == i

BG2(i:end) = zeros(1,100-i+1); % daca apare tb, supervizorul permite, G2 termina activitatea

BS(i:end) = zeros(1,100-i+1); %supervizorul isi schimba starea

k4=k4+1;

end

if k1 > nea

k1 = k1 - 1; % folosit pentru a evita erori matlab de parcurgere a vectorului ea

end

if k2 > neb

k2 = k2 - 1; % folosit pentru a evita erori matlab de parcurgere a vectorului eb

end

if k3 > nta

k3 = k3 - 1; % folosit pentru a evita erori matlab de parcurgere a vectorului ta

end

if k4 > ntb

k4 = k4 - 1; % folosit pentru a evita erori matlab de parcurgere a vectorului tb

end

if ea(k1) < i

k1 = k1 +1; % daca elementul curent din vectorul ea este un moment anterior momentului curent i,
se trece mai departe in evaluarea urmatorului moment de timp
Moraru Maria Luminita
MPI

end

if eb(k2) < i

k2 = k2 + 1; % daca elementul curent din vectorul eb este un moment anterior momentului curent i,
se trece mai departe in evaluarea urmatorului moment de timp

end

if ta(k3) < i

k3 = k3+1; % daca elementul curent din vectorul ta este un moment anterior momentului curent i,
se trece mai departe in evaluarea urmatorului moment de timp

end

if tb(k4) < i

k4 =k4+1; % daca elementul curent din vectorul ea este un moment anterior momentului curent i,
se trece mai departe in evaluarea urmatorului moment de timp

end

if k1 > nea

k1 = k1 - 1 ; % folosit pentru a evita erori matlab de parcurgere a vectorului ea

end

if k2 > neb

k2 = k2 - 1; % folosit pentru a evita erori matlab de parcurgere a vectorului eb

end

if k3 > nta

k3 = k3 - 1; % folosit pentru a evita erori matlab de parcurgere a vectorului ta

end

if k4 > ntb

k4 = k4 - 1; % folosit pentru a evita erori matlab de parcurgere a vectorului tb


Moraru Maria Luminita
MPI

end

end

subplot(3,1,1);

plot(BG1)

title('BG1')

subplot(3,1,2);

plot(BG2)

title('BG2')

subplot(3,1,3);

plot(BS)

title('BS')

end

Functia primeste ca parametrii vectori cu momentele de timp cand se petrec evenimentele de tip ea, eb,
ta si tb. Apoi variabilele boolene pentru reprezentarea fiecarui agent se contruiesc la fiecare moment.
Aici se observa interventia supervizorului asupra fiecarui agent. Daca a aparut un eveniment de tip ea,
G1 isi incepe activitatea ( adica trece in 1), iar G2 ramane inactiv, el fiind inhibat de supervizor sa poata
incepe activitatea. Numai dupa ce G1 isi termina activitatea la un eveniment de tip ta, supervizorul va
trece in 1 si ii va permite lui G2 sa isi inceapa activitatea, inhibandu-l pe G1 sa isi inceapa din nou
activitatea. Aceste particularitati se pot observa grafic din trasarea grafica de la finalul functiei.

Pentru reprezentarea intercativitatii se pot da de la tastatura momentele de timp la care apar


evenimentele ea, ta, eb, tb si observa evolutia sistemului in functie de acestea.