diff --git a/ant.zip b/ant.zip index 64f65499b46aa579f4afbf1c9ddb7ad78e624126..d80181d9e9a677256bae64057edba365daca45d9 100644 Binary files a/ant.zip and b/ant.zip differ diff --git a/ant/agent.py b/ant/agent.py index 6492e4d766e821c54d18b4be05b8e386cd6aec39..4b376f8c4f57fba0a0f84c6233d3d12310649dc1 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 db8368d8207df44e39b0ad50a3ecc276ad1c46a8..822eb7a76abf8d78cf2c47c77cabbd5cc2156239 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 d96ea1da6a3d94a4476be1f68478f457da459350..bb33cfc06802f0d9338ab482dcc1d0a7792a3b9f 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 ebadace645176216389d4ca3475162e0336649a8..5487a7b59c9d03eab5df8693c77da5c9e9d5be56 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 01638e3b3187abb5977e9544ebb4792b9c590abc..4a21e6145b8e0e84aa01b33f92a886f235a7d9d7 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 Binary files a/ant_communicating.zip and b/ant_communicating.zip differ diff --git a/ant_communicating/agent.py b/ant_communicating/agent.py index e6a074d613b299701659b77db9b3b73a0cb0ee37..58bd335d10ec734262ad0b54fabf3ad95b7fca76 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 f79ec7a10d5ec1140a2e519097335c0a214f3b04..cc5ce223226e8b4d10e0c2b2c2e40799475e5c4c 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 d96ea1da6a3d94a4476be1f68478f457da459350..bb33cfc06802f0d9338ab482dcc1d0a7792a3b9f 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 ebadace645176216389d4ca3475162e0336649a8..5487a7b59c9d03eab5df8693c77da5c9e9d5be56 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 01638e3b3187abb5977e9544ebb4792b9c590abc..4a21e6145b8e0e84aa01b33f92a886f235a7d9d7 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 Binary files a/demonstrator.zip and b/demonstrator.zip differ diff --git a/demonstrator/agent.py b/demonstrator/agent.py index 6c256d0c2c1a60b53169000b4f80f2873fb7faa7..ba63bcfac7e8e8874576e5e648af8b95a52d04ea 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 6c22a082082886c132268731cac474811fdd6403..4bb3bf2933863c21252e292b5a9f3bbe4bf28cfb 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