Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Agent agent in project TreeSort.mas2j
- /* Initial beliefs and rules */
- /*
- result_ready(0).
- send(1).*/
- /* Initial goals */
- !start.
- /* Plans */
- /*
- +role(list, Name) : true <-
- .random(N);
- .print(N);
- +random_number(N, Name).
- //@rand2[atomic]
- +random_number(N, Source1): random_number(Random, Source2) & Random > N <-
- .abolish(random_number(_, _));
- +random_number(N, Source1);
- -+result_ready(1).
- //@rand1[atomic]
- +random_number(N, Source1): random_number(Random, Source2) & Random < N <-
- .abolish(random_number(_, _));
- +random_number(Random, Source2);
- -+result_ready(1).
- @result[atomic]
- +result_ready(1): random_number(N, Source) <-
- .send(Source, achieve, disable(Source));
- .abolish(random_number(_,_));
- -+result_ready(0).
- +!start : true <-
- .my_name(X).
- +!build_tree(N1, N2, Parent) : N2 - N1 > 1 <-
- +parent(Parent);
- .my_name(Name);
- +role(node, Name);
- .concat("agent", N2 - 1, LeftAgent);
- +left_node(LeftAgent);
- .concat("agent", N2 - ((N2 - N1) / 2) - 1, RightAgent);
- +right_node(RightAgent);
- .send(LeftAgent, achieve, build_tree(N1 + (N2-N1)/2, N2-1, Name));
- .send(RightAgent, achieve, build_tree(N1, N2 - (N2-N1)/2 - 1, Name)).
- +!build_tree(N1, N2, Parent) : (N2 - N1) == 0 <-
- +parent(Parent);
- .my_name(Name);
- +role(list, Name).
- // anotace, ktera zajisti atomicke provedeni planu
- @random_number[atomic] +!do_cycle(C): parent(P) & random_number(N, Source) <-
- .send(P, tell, random_number(N, Source)).
- @disable[atomic] +!disable(Name): .my_name(Name) <-
- .abolish(random_number(_, _)).
- +!kqml_received(Agent, tell, random_number(N, Source), _) : true <-
- +random_number(N, Agent).
- */
- +iam(leaf) : .my_name(agent8) | .my_name(agent9)
- <- +parent(agent6).
- +iam(leaf) : .my_name(agent10)|.my_name(agent11)
- <- +parent(agent5).
- +iam(leaf) : .my_name(agent12) | .my_name(agent13)
- <- +parent(agent4).
- +iam(leaf) : .my_name(agent14) | .my_name(agent7)
- <- +parent(agent3).
- +iam(node) : .my_name(agent6) | .my_name(agent5)
- <- +parent(agent2).
- +iam(node) : .my_name(agent4) | .my_name(agent3)
- <- +parent(agent1).
- +iam(node) : .my_name(agent2) | .my_name(agent1)
- <- +parent(manager).
- @p1 +!start : .my_name(agent8) | .my_name(agent9)| .my_name(agent10)|.my_name(agent11)
- | .my_name(agent12) | .my_name(agent13) | .my_name(agent14) | .my_name(agent7)
- <- +num(math.round(math.random(100)));
- +iam(leaf).
- @p2 +!start : .my_name(agent1) | .my_name(agent6)| .my_name(agent5) |.my_name(agent4)
- | .my_name(agent3) | .my_name(agent2)
- <- +iam(node).
- @s3[atomic] +!do_step(C): parent(P) & num(N)[source(Source)] <-
- .send(P, tell, num(N));
- .send(Source, achieve, remove(N)).
- @s1[atomic] +!do_step(C): parent(P) & num(N)[source(Source)] & num(K) & N < K <-
- .send(P, tell, num(N));
- .send(Source, achieve, remove(N)).
- +!remove(N) : true <-
- .abolish(num(N)).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement