From 33f2e89e44382c1d11158bab020414ab773a4576 Mon Sep 17 00:00:00 2001
From: shinedday <shinedday@gmail.com>
Date: Tue, 14 Jun 2022 15:36:19 +0200
Subject: [PATCH] Update to 0.0.7

---
 ant.zip                        | Bin 2029 -> 2097 bytes
 ant/agent.py                   |  10 +++++++-
 ant/amas.py                    |   2 +-
 ant/config.json                |   5 ++--
 ant/env.py                     |   2 +-
 ant/scheduler.py               |   2 +-
 ant_communicating.zip          | Bin 2279 -> 2341 bytes
 ant_communicating/agent.py     |  11 +++++++--
 ant_communicating/amas.py      |   2 +-
 ant_communicating/config.json  |   5 ++--
 ant_communicating/env.py       |   2 +-
 ant_communicating/scheduler.py |   2 +-
 demonstrator.zip               | Bin 1894 -> 2075 bytes
 demonstrator/agent.py          |  42 ++++++++++++++++++++++++++-------
 demonstrator/config.json       |   8 ++++++-
 15 files changed, 68 insertions(+), 25 deletions(-)

diff --git a/ant.zip b/ant.zip
index 64f65499b46aa579f4afbf1c9ddb7ad78e624126..d80181d9e9a677256bae64057edba365daca45d9 100644
GIT binary patch
delta 1783
zcmaFMzfoX<dHq7yb0PK@r3?F*7#Mc3GcfQlFfb(MmFOp?r{<OD6;w_Qz1??PL7=vO
zO8tx~`D+<_!#2I#7va0~k3+pemq7Mooh%+fwUu{Q{lCZfX2uQAt*4vypYxoNOk;B?
z4Y}2jwkhChjoP35yVpM7tO?5sZ45{Y-Z)?Lc5&t(VXMu(e>c{*eU7Y4DCL#TOk$su
zW5+DxB$Xv{_NrrM#9{gVTN_U(R7LC%RAt_?r698Jp?H37r$F4-?kTDK|G(-#zqred
z^?ILvoN<JT;+@K~2{U7&t=CKLQF-ioA)9UW!HxelDmX>{aye(le0HA6aQSy|>+PWQ
z0O`B=eX`U1r9*Z|B);XXUvvMMHwR<ARgvuEFOPman$)suO39uC_K&kA7cLR@c<|Hu
zPrxMhLwz&OUp%wtEdQK+ANT&aVj?oFxbRu|^Bp%-#D9M`Uz**so>|IS|HTn2mBLeH
z=AWWI#E5*ay?5bc(dYV3UYoVM{XE}tdu!L#`963#)o0RoM(@CHr|S;qNqjg^e?OG-
z%eS|-zt^R(J!8E6pyliPS7{Bujc(~JIKtl*n|1VE<)5i<*o;pb-hT7x+Pr?29j4oF
z{Lj2m`EuUu8Kv(}7z!#{@3uZ2kakvG$uO#YiIdo#PVH+)-pv>Iv1y-dz5Mi0K{=aq
zyTvQgPs(y$mARsS;{MDtmJ+O2PZ}Iv-_mPTzuP0B^R9=1{^|4Fv-P$qJ)ZY<?(x)*
z53AN)oDp^>W8!bi#<lIa^LIKkhpPIidmfHdS)<aQyIAek*S|M?Zk8q7)_i@rext<G
z=;Go_n~eFCH_kr#Wad@pH?1dp&1Oo?`B>(%=)mQhJB3`09?hDUb<F3s@!J_6e{FX7
zd*slvmD?xe*WY@cYfu#4vSE93is*8YYuOb`wj?<P{kq|Lq-Nofiohck{L3pQ%-?=m
z_NCX9rN2~ii~cbNcr&wzFfcH1Fn|(ol7{c@EsP8dJ6ISPxM7JmH?df+pmJ%*!MxiB
zJbT$s*bD5uk{8Tu`$kBIwd!V}eSk<y&S}12@2q;&$_~RX_r0zB-lX_OC)jWp{QM%P
zYdi5w_h&&T@n@S)Su?vG<-IVW_G_V?G}n_y&4K4<8fkqw&3N>t!it}3GD0{$B(O>d
zMP8cvq;c^TQH4oMJ7%!l4e<`xm)E<^aE*e?ewNwQA*Sjn;yj8M)|^i&iKtk+sO@XV
zT!q`>Zzr2r*RPWKc{x+~+_%!8v-1?*c%HnuZ|%ymr#1=`Sl8#Qo!lQa^U(3K(?#d!
z>P+eF7Ov#VFugka&el2$_N0>i&w|ZX{bE{kz4oQg@z*!1xc7$$e>pjC<H-g$cmJb{
zFW7LNzrX!|^2z;&jjol|_)oueGVAQ}&CyE=ssrD2NNVoZ*W8^SP+#_Vs>c+OMIScZ
zo-7+veBWHBg!isX#gF51zl7h_&9PkdqRTCLUA9yV%l7XdZb$B&#nn0g#Toyw_ew#P
z@01(!+%<F`8gFrVm{VynS9tQrd%3^#=jBIkt2v-z`0>|tAMuaTWu?31c~#cm*IF!i
z)H%GvZKCTQsV~gi>m+1sc!cEYJtX(vx9>0ae>v%V^#tCT`MHPW-=jwG93?LKWCjL?
zMg|53erN<I=jWwmrt4)D=jZ93cI0YM5NLf^dqK7>vU^A8g3}!<o&-cLkrcdZs~)xQ
z{qwuI%ne)8HqY=B->)8}%-7(hb#w8LqD=>PCoi+GeN~e?uXxv@r@u<GlMGjWI=k8F
zgGpPDfy44CKR&8VKb-Hwzkj|ss)JnKObwsKz`*d6VX_XZe*K%bxi?GHo=p0GdVb5J
z87j?sRW?`NsJbqgvirq-y$><nDuq0A8pD3<+J0@}@du#`AIFG%UVh6vbm0->FAW|(
zk{2^1ehF7p`ifriIw)q<>)2CjU$*>OXh`ji;|(0S+`LI&j&z(&TXdn0|Dw*aKTo@k
z)>z+PdzV99So$|OCkP|50>jnkZ^{@L7&cG-#A+Snv_Zs3@l<mnlY;NeOs<a~D?4|t
z{P>Y;+cvIOA3yHwoLTwt<EyYeF<cH4RwQ&^SP&S)bY$w$s!rFJsTbQe&a&dtP;!${
zI<|4vtbpb(U0$C}Oc*DZuzB)<@*JYVn0%T|Cjumdo(&lo7#J8C6c`v7o-#pe6iB8F
z@MdHZVL&(<J$exu4^8%Gmy-t>jtFrE1}=~SxZy#Qd)OrvKx*KgXJB9uKv5&YHu)&K
K659?okSG94xg@Iq

delta 1719
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

diff --git a/ant/agent.py b/ant/agent.py
index 6492e4d..4b376f8 100644
--- a/ant/agent.py
+++ b/ant/agent.py
@@ -1,7 +1,7 @@
 import random
 import sys
 
-from iotAmak.agent import Agent
+from iotAmak.agent.agent import Agent
 
 
 class Ant(Agent):
@@ -67,6 +67,14 @@ class Ant(Agent):
         metric["color"] = self.color
         return metric
 
+    def to_canvas(self) -> dict:
+        return {
+            "id": self.id,
+            "x": self.x,
+            "y": self.y,
+            "color": self.color,
+            "cycle": self.nbr_cycle
+        }
 
 if __name__ == '__main__':
     a = Ant(str(sys.argv[1]))
diff --git a/ant/amas.py b/ant/amas.py
index db8368d..822eb7a 100644
--- a/ant/amas.py
+++ b/ant/amas.py
@@ -1,7 +1,7 @@
 import sys
 from math import sqrt
 
-from iotAmak.amas import Amas
+from iotAmak.amas.amas import Amas
 
 
 class AntAmas(Amas):
diff --git a/ant/config.json b/ant/config.json
index d96ea1d..bb33cfc 100644
--- a/ant/config.json
+++ b/ant/config.json
@@ -1,7 +1,6 @@
 {
-  "iotamak_version": "0.0.4",
-
-  "seed" : 0,
+  "iotamak_version": "0.0.7",
+  "scheduling_type": "sync",
 
   "canvas": {
     "height" : 500,
diff --git a/ant/env.py b/ant/env.py
index ebadace..5487a7b 100644
--- a/ant/env.py
+++ b/ant/env.py
@@ -1,7 +1,7 @@
 import sys
 
 
-from iotAmak.environment import Environment
+from iotAmak.env.environment import Environment
 
 
 class AntEnv(Environment):
diff --git a/ant/scheduler.py b/ant/scheduler.py
index 01638e3..4a21e61 100644
--- a/ant/scheduler.py
+++ b/ant/scheduler.py
@@ -1,6 +1,6 @@
 import sys
 
-from iotAmak.scheduler import Scheduler
+from iotAmak.scheduler.scheduler import Scheduler
 
 if __name__ == '__main__':
     a = Scheduler(str(sys.argv[1]), str(sys.argv[2]), str(sys.argv[3]))
diff --git a/ant_communicating.zip b/ant_communicating.zip
index 2db59209b24cdbea563f93791e888e8b9e7a2e14..f125378b6c59172994475573018d535ed5586d03 100644
GIT binary patch
delta 1733
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
Wz`!5}Q3thp+2jozhHMe+AVB~=Bng}V

delta 1674
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
ObMiY5LpCXPkRSkgbjFzg

diff --git a/ant_communicating/agent.py b/ant_communicating/agent.py
index e6a074d..58bd335 100644
--- a/ant_communicating/agent.py
+++ b/ant_communicating/agent.py
@@ -1,7 +1,7 @@
 import random
 import sys
 
-from iotAmak.communicating_agent import CommunicatingAgent
+from iotAmak.agent.communicating_agent import CommunicatingAgent
 
 
 class Ant(CommunicatingAgent):
@@ -65,13 +65,20 @@ class Ant(CommunicatingAgent):
         for n in self.neighbors:
             self.send_mail(n.get("id"), {"color": self.color})
 
+    def to_canvas(self) -> dict:
+        return {
+            "id": self.id,
+            "x": self.x,
+            "y": self.y,
+            "color": self.color,
+            "cycle": self.nbr_cycle
+        }
 
     def send_metric(self):
         metric = super(Ant, self).send_metric()
 
         metric["x"] = self.x
         metric["y"] = self.y
-        metric["color"] = self.color
         return metric
 
 
diff --git a/ant_communicating/amas.py b/ant_communicating/amas.py
index f79ec7a..cc5ce22 100644
--- a/ant_communicating/amas.py
+++ b/ant_communicating/amas.py
@@ -1,7 +1,7 @@
 import sys
 from math import sqrt
 
-from iotAmak.amas import Amas
+from iotAmak.amas.amas import Amas
 
 
 class AntAmas(Amas):
diff --git a/ant_communicating/config.json b/ant_communicating/config.json
index d96ea1d..bb33cfc 100644
--- a/ant_communicating/config.json
+++ b/ant_communicating/config.json
@@ -1,7 +1,6 @@
 {
-  "iotamak_version": "0.0.4",
-
-  "seed" : 0,
+  "iotamak_version": "0.0.7",
+  "scheduling_type": "sync",
 
   "canvas": {
     "height" : 500,
diff --git a/ant_communicating/env.py b/ant_communicating/env.py
index ebadace..5487a7b 100644
--- a/ant_communicating/env.py
+++ b/ant_communicating/env.py
@@ -1,7 +1,7 @@
 import sys
 
 
-from iotAmak.environment import Environment
+from iotAmak.env.environment import Environment
 
 
 class AntEnv(Environment):
diff --git a/ant_communicating/scheduler.py b/ant_communicating/scheduler.py
index 01638e3..4a21e61 100644
--- a/ant_communicating/scheduler.py
+++ b/ant_communicating/scheduler.py
@@ -1,6 +1,6 @@
 import sys
 
-from iotAmak.scheduler import Scheduler
+from iotAmak.scheduler.scheduler import Scheduler
 
 if __name__ == '__main__':
     a = Scheduler(str(sys.argv[1]), str(sys.argv[2]), str(sys.argv[3]))
diff --git a/demonstrator.zip b/demonstrator.zip
index 035d3cff04ceab08e99d3f5296d749f0af940548..986fcb0cf7f061607b934e5721516a50504782be 100644
GIT binary patch
delta 966
zcmaFHH(OwW1D{gpsgTEZ1sBgVF);k$oaiTAzclP*-faVcz0x1-c}hA(PH&pK_#%rz
z)vKktRWDQpINTPADhXu<YzqGV`n2NKAfZiD+O|$G&fj)?VMXDjRZOm~THQ~ZZeRZt
zr6+#+Xy8ev9c%blYdbTJxrnN6(m2<ozU7gUavERO()E9rGOtrORy6U+7M+K)+YVaR
z>xjJx<oQzXaZ`}vVN-a^57pECiUCvSa_fe?Tev2K<B@0N=IRGwqOTf1T`Z7%XI<(3
z!RfQH_SOT*Z`NG+)Veg7yQ#4JS549>{zccGU%S0Pev(Mq+{<(RUrqE*OyW-X%W!{b
zLLN_0^Cd5>+%wlyz2>R<&-njh?H++Wrg3>6H+_7Rpta6VIKSRX@Sk4G-D{;<JJl?e
z{dFFHmYZAhQO5Lb+@T+>y(Ly_ucyy5J~8v?(KD<cSl?CcSbJD<bw|SbU+4cW=r@dC
zw)mW{W92&UoTVS0dj2bX@bjXFt9sR0)vKy|+2053`{U+ueqt`~tXJ+|N|Kbm8WyuH
zx{~iBIFIdMK>yR=u)2*-arO5$E$q3lJ7-D`->GNmPx9aTJlM3@FJ$idyg>Gc0%_eX
zH`yf4<*my3nwBw7etY4Y3o5Cc{>N1^1JpWPCufDlRNr|1-8N_Wo+|O*#|!u+wEO-a
z&5_K1opkB>rhSHYbBoW;xT+H=_1QLJZcYTRTG_{d+ZT#*QvU{Ozdj$a^Y4nO^|#MQ
z-1Lc*oFck#*^Em)m2$f$8C!2)o!Oaf+?DN6e!H&l{<(>A(sMI*&&iYy<~e%Ku^{`m
z(wmtj=Jk5U_n9yMOW>CaS`lQsi*3WKj*HFm_R=5g1l3&FpL_3LKl?}3yxU8pE#{S7
z{&r=>@{L7N=Q^)v^;J(@8((}a``)`dFJ3!^ypG;o`DL^6mD4JZ6W{NUXi2mFo|3}n
z<-IyqX4~;YJ?YL|kNO{9pRj;cnPqdKvp|SIQLyxqsI`CB8ExJ3YOzDAc&;ADN9Gl?
zcXrP{+~D>~=fjG>?3<4>sWb9(Ft~)B3i-DsEFz78fuVWwUuO9<)iaJ<4GIFS4{IOD
z9w}{E+oY$Ql<c|EFihdn-Qt|z^~UQr^c6pRv~=&itIRWEc#@tu@fFQ*xo<I(ciQiQ
z#L#fNMvJEj9<yh^xZ3sW&MFbDtv7d{y`p~M$NMW?34%g*dna8wz3V&kW;>SCjA(gn
zvN&5XlLhnS95w|dG?y_jFi0>!03(9}0|P@i%j9)zE{vZie`a%F+&|fbU571)4Ws}7
D1E0;h

delta 794
zcmbO&@QiPQ1D}lhiI8tDCN6PI3=FH;C;Ca(&kc24zsNvf-|QdqYB6%5F7vmW77A}(
zzIV^v%W*xKS|M@DTi7maf4Bbr%%&#RxJR!Uou1F0nZNH`z|^@uaZY+AIh#Iugw8*@
zRigjcV&^=gfMs`59!Ye$yfW(XnKpN8m&?kMLvQ7-_}SlD#v7?|tU_ezB8>;?Z3}Jp
zb0=#zF|MnRkZUMj8hUbP{E06D4JRfSw=GCwb)Ct+;CtoNGS*c^tyO|{H71959kf2s
z?QwpS!-2Br5iW&OHfCGQPkFcbgWo&9?yWnebKiO`c_n`>eT#0>!8g`>Bz0pqu{C#H
zdNN~;Rf9p5xz?nA*Jf8SRv1_LyfFM;wq||9vB_}}8~1ZOh_2rnlXlV6OZEO~7v9T3
z?QU+}?O&zDbQ#t%8-;1;FZElpKc#Q(v}s&BZ$@ann`M7b^w_$yQ<y*62F~)ht0mtr
zo%Z3>E=HXd6Re)i3|QH}G2o1E;UDKmmCk%CJ!{_k*4?;sPvm!>%}i~Ld2uRNUF+&j
z?Co_E5>gJjxadW4{y!_J`Uiy*6m2@Qvsy$~CEi~getG{wi@6(e<{#Ol=)p3xSk!oV
z)=aS?jgX^zg;y^-d}rF4?iJa!7qq5L>}sEC^-%xNM}fefk+YX=di7|QvU2XU*q?JO
zo&PRtK6F=Ym1x=S8wbB6J}&+KLih4Loz3Z+&+MC&`YC7H$?#2Q=ASispYrmjU{atv
z?_B-f_I>Buax>bStZz7KFTFjjY|cSG-ZcjnGav2Ddzg6Z^XrcfuD_SwqwC2(B~*Ow
zqSM~pK1F`J_7*%^W?8>-CwIuJI^HO*@HuO3b}n$yS@3(+&B%9omsJn_SyTJx2mfXZ
zW_3n>28O+!he8hDb$+eHz`&q1IgdqNshXEdK|v`qza%j?F+092wWv5VKTpX@LCHYR
zK+jBxm#cR3XO`29XsLGc8Ma`i<4ltk*%g$~Ol4qTkYIoSMg|2228L(Mlatw9nCw_4
c^RtRh-p8)R#Kk)KHmmexRt^ES?W`cB0F$R@8~^|S

diff --git a/demonstrator/agent.py b/demonstrator/agent.py
index 6c256d0..ba63bcf 100644
--- a/demonstrator/agent.py
+++ b/demonstrator/agent.py
@@ -10,34 +10,44 @@ class IotAgent(CommunicatingAgent):
         self.nbr_agent: int = nbr_agent
         self.values = []
         self.asked = []
+        self.nei = []
         super().__init__(arguments)
 
     def on_initialization(self) -> None:
         self.operator = random.choice(["+", "-", "*", "/"])
-        self.value = random.randint(0, 9999999)
+        self.value = random.randint(1, 10)
 
     def on_cycle_begin(self) -> None:
-        if self.nbr_cycle == 0:
-            for i in range(2):
-                nei = self.id
-                while self.id == nei:
-                    nei = random.randint(0, self.nbr_agent - 1)
-                self.send_mail(nei, "AskValue")
-                self.log("New nei "+str(nei))
+        pass
 
     def on_perceive(self) -> None:
+
+        while len(self.nei) < 2:
+            self.get_new_nei()
+
         self.values = []
         for mail in self.mailbox:
             if mail.payload == "AskValue":
                 self.asked.append(int(mail.sender_id))
+            elif mail.payload == "Remove":
+                self.asked.remove(int(mail.sender_id))
             else:
                 self.values.append(int(mail.payload))
         self.mailbox = []
 
+        if random.randint(0, 100) == 1:
+            self.nei = [self.nei[0]]
+
     def on_decide(self) -> None:
         pass
 
     def on_act(self) -> None:
+        if self.value == 0:
+            self.value = random.randint(1, 10)
+
+        if self.value > 1000000:
+            self.value = random.randint(1, 10)
+
         if len(self.values) == 2:
             if self.operator == "+":
                 self.value = self.values[0] + self.values[1]
@@ -46,7 +56,10 @@ class IotAgent(CommunicatingAgent):
             elif self.operator == "*":
                 self.value = self.values[0] * self.values[1]
             elif self.operator == "/":
-                self.value = self.values[0] / self.values[1]
+                if self.values[1] == 0:
+                    self.nei = [self.nei[0]]
+                else:
+                    self.value = self.values[0] / self.values[1]
 
     def on_cycle_end(self) -> None:
         for n in self.asked:
@@ -55,6 +68,17 @@ class IotAgent(CommunicatingAgent):
                  " OP : " + self.operator
                  )
 
+    def get_new_nei(self):
+        nei = self.id
+        while self.id == nei:
+            nei = random.randint(0, self.nbr_agent - 1)
+        self.nei = [nei] + self.nei
+        self.send_mail(nei, "AskValue")
+
+    def remove_nei(self):
+        self.send_mail(self.nei[1], "Remove")
+        self.nei = [self.nei[0]]
+
 
 if __name__ == '__main__':
     a = IotAgent(str(sys.argv[1]), int(sys.argv[2]))
diff --git a/demonstrator/config.json b/demonstrator/config.json
index 6c22a08..4bb3bf2 100644
--- a/demonstrator/config.json
+++ b/demonstrator/config.json
@@ -1,3 +1,9 @@
 {
-  "iotamak_version": "0.0.6"
+  "iotamak_version": "0.0.7",
+  "scheduling_type": "sync",
+
+  "com_graph": {
+    "fun": "linear",
+    "refresh": 10
+  }
 }
\ No newline at end of file
-- 
GitLab