Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2019
164
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.89 KB | None | 0 0
  1. // Agent agent in project TreeSort.mas2j
  2.  
  3.  
  4.  
  5. /* Initial beliefs and rules */
  6. /*
  7. result_ready(0).
  8. send(1).*/
  9.  
  10.  
  11. /* Initial goals */
  12.  
  13.  
  14.  
  15. !start.
  16.  
  17.  
  18.  
  19. /* Plans */
  20. /*
  21.  
  22. +role(list, Name) : true <-
  23. .random(N);
  24. .print(N);
  25. +random_number(N, Name).
  26.  
  27. //@rand2[atomic]
  28. +random_number(N, Source1): random_number(Random, Source2) & Random > N <-
  29. .abolish(random_number(_, _));
  30. +random_number(N, Source1);
  31. -+result_ready(1).
  32.  
  33. //@rand1[atomic]
  34. +random_number(N, Source1): random_number(Random, Source2) & Random < N <-
  35. .abolish(random_number(_, _));
  36. +random_number(Random, Source2);
  37. -+result_ready(1).
  38.  
  39. @result[atomic]
  40. +result_ready(1): random_number(N, Source) <-
  41. .send(Source, achieve, disable(Source));
  42. .abolish(random_number(_,_));
  43. -+result_ready(0).
  44.  
  45. +!start : true <-
  46. .my_name(X).
  47.  
  48.  
  49. +!build_tree(N1, N2, Parent) : N2 - N1 > 1 <-
  50. +parent(Parent);
  51. .my_name(Name);
  52. +role(node, Name);
  53. .concat("agent", N2 - 1, LeftAgent);
  54. +left_node(LeftAgent);
  55. .concat("agent", N2 - ((N2 - N1) / 2) - 1, RightAgent);
  56. +right_node(RightAgent);
  57. .send(LeftAgent, achieve, build_tree(N1 + (N2-N1)/2, N2-1, Name));
  58. .send(RightAgent, achieve, build_tree(N1, N2 - (N2-N1)/2 - 1, Name)).
  59.  
  60. +!build_tree(N1, N2, Parent) : (N2 - N1) == 0 <-
  61. +parent(Parent);
  62. .my_name(Name);
  63. +role(list, Name).
  64.  
  65. // anotace, ktera zajisti atomicke provedeni planu
  66. @random_number[atomic] +!do_cycle(C): parent(P) & random_number(N, Source) <-
  67. .send(P, tell, random_number(N, Source)).
  68.  
  69. @disable[atomic] +!disable(Name): .my_name(Name) <-
  70. .abolish(random_number(_, _)).
  71.  
  72. +!kqml_received(Agent, tell, random_number(N, Source), _) : true <-
  73. +random_number(N, Agent).
  74. */
  75.  
  76. +iam(leaf) : .my_name(agent8) | .my_name(agent9)
  77. <- +parent(agent6).
  78.  
  79. +iam(leaf) : .my_name(agent10)|.my_name(agent11)
  80. <- +parent(agent5).
  81.  
  82. +iam(leaf) : .my_name(agent12) | .my_name(agent13)
  83. <- +parent(agent4).
  84.  
  85. +iam(leaf) : .my_name(agent14) | .my_name(agent7)
  86. <- +parent(agent3).
  87.  
  88. +iam(node) : .my_name(agent6) | .my_name(agent5)
  89. <- +parent(agent2).
  90.  
  91. +iam(node) : .my_name(agent4) | .my_name(agent3)
  92. <- +parent(agent1).
  93.  
  94. +iam(node) : .my_name(agent2) | .my_name(agent1)
  95. <- +parent(manager).
  96.  
  97. @p1 +!start : .my_name(agent8) | .my_name(agent9)| .my_name(agent10)|.my_name(agent11)
  98. | .my_name(agent12) | .my_name(agent13) | .my_name(agent14) | .my_name(agent7)
  99. <- +num(math.round(math.random(100)));
  100. +iam(leaf).
  101.  
  102. @p2 +!start : .my_name(agent1) | .my_name(agent6)| .my_name(agent5) |.my_name(agent4)
  103. | .my_name(agent3) | .my_name(agent2)
  104. <- +iam(node).
  105.  
  106. @s3[atomic] +!do_step(C): parent(P) & num(N)[source(Source)] <-
  107. .send(P, tell, num(N));
  108. .send(Source, achieve, remove(N)).
  109.  
  110. @s1[atomic] +!do_step(C): parent(P) & num(N)[source(Source)] & num(K) & N < K <-
  111. .send(P, tell, num(N));
  112. .send(Source, achieve, remove(N)).
  113.  
  114. +!remove(N) : true <-
  115. .abolish(num(N)).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement