From 2c853d175d43f6ceac09a0d04f09a09cd1d12407 Mon Sep 17 00:00:00 2001 From: shinedday <shinedday@gmail.com> Date: Thu, 19 May 2022 16:12:35 +0200 Subject: [PATCH] update to 0.0.3 --- ant.zip | Bin 0 -> 1946 bytes ant/__init__.py | 0 ant/agent.py | 57 ++++++++++++++++++++++++++++++++++++++ ant/amas.py | 43 ++++++++++++++++++++++++++++ ant/config.json | 13 +++++++++ ant/env.py | 15 ++++++++++ ant/scheduler.py | 7 +++++ philosophers.zip | Bin 0 -> 3181 bytes philosophers/config.json | 10 +++---- philosophers/scheduler.py | 2 +- 10 files changed, 141 insertions(+), 6 deletions(-) create mode 100644 ant.zip create mode 100644 ant/__init__.py create mode 100644 ant/agent.py create mode 100644 ant/amas.py create mode 100644 ant/config.json create mode 100644 ant/env.py create mode 100644 ant/scheduler.py create mode 100644 philosophers.zip diff --git a/ant.zip b/ant.zip new file mode 100644 index 0000000000000000000000000000000000000000..7f598ed6dbbf36c137aa684b8571ad27ef2c45db GIT binary patch literal 1946 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 LBr`HFD1vzanw<xQ literal 0 HcmV?d00001 diff --git a/ant/__init__.py b/ant/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/ant/agent.py b/ant/agent.py new file mode 100644 index 0000000..0d1d88c --- /dev/null +++ b/ant/agent.py @@ -0,0 +1,57 @@ +import random +import sys + +from iotAmak.agent import Agent + + +class Ant(Agent): + + def __init__(self, identifier: int, broker_ip: str): + self.x = 250 + self.y = 250 + self.color = 0 + super().__init__(identifier, broker_ip) + + def on_initialization(self) -> None: + pass + + def on_cycle_begin(self) -> None: + pass + + def on_perceive(self) -> None: + self.neighbors = self.next_neighbors + self.next_neighbors = [] + + def on_decide(self) -> None: + pass + + def on_act(self) -> None: + self.x += random.randint(-5, +5) + self.y += random.randint(-5, +5) + + # count color + color = [0 for _ in range(5)] + for ant in self.next_neighbors: + color[ant.get("color")] += 1 + # set color + if color.index(max(color)) != 0: + self.color = color[color.index(max(color))] + # low chance to mutate + if random.randint(0, 1000) < 10: + self.color = random.randint(0, 4) + + def on_cycle_end(self) -> None: + pass + + def send_metric(self): + metric = super(Ant, self).send_metric() + + metric["x"] = self.x + metric["y"] = self.y + metric["color"] = self.color + return metric + + +if __name__ == '__main__': + a = Ant(int(sys.argv[1]), str(sys.argv[2])) + a.run() diff --git a/ant/amas.py b/ant/amas.py new file mode 100644 index 0000000..267f805 --- /dev/null +++ b/ant/amas.py @@ -0,0 +1,43 @@ +import sys +from math import sqrt + +from iotAmak.amas import Amas + + +class AntAmas(Amas): + + def __init__(self, broker_ip: str, clients, nbr_agent): + self.agent_to_create = nbr_agent + super().__init__(broker_ip, clients) + + def on_initial_agents_creation(self): + for _ in range(self.agent_to_create): + self.add_agent("ant") + + def is_neighbour(self, id_a, id_b): + if id_a == id_b: + return False + if self.agents_metric[id_a] == {}: + return False + if self.agents_metric[id_b] == {}: + return False + + x = self.agents_metric[id_a].get("x") - self.agents_metric[id_b].get("x") + y = self.agents_metric[id_a].get("y") - self.agents_metric[id_b].get("y") + + dist = sqrt(x * x + y * y) + return dist < 15 + + def on_cycle_begin(self) -> None: + + for i in range(self.next_id): + for j in range(i, self.next_id): + cond = self.is_neighbour(i, j) + if cond: + self.agent_neighbour(i, j) + self.agent_neighbour(j, i) + + +if __name__ == '__main__': + s = AntAmas(str(sys.argv[1]), sys.argv[2], 50) + s.run() diff --git a/ant/config.json b/ant/config.json new file mode 100644 index 0000000..d9cf6ab --- /dev/null +++ b/ant/config.json @@ -0,0 +1,13 @@ +{ + "iotamak_version": "0.0.3", + + "seed" : 0, + + "canvas": { + "height" : 500, + "width" : 500, + "x" : "x", + "y": "y" + } + +} \ No newline at end of file diff --git a/ant/env.py b/ant/env.py new file mode 100644 index 0000000..a4f1c42 --- /dev/null +++ b/ant/env.py @@ -0,0 +1,15 @@ +import sys + + +from iotAmak.environment import Environment + + +class AntEnv(Environment): + + def __init__(self, broker_ip): + super().__init__(broker_ip) + + +if __name__ == '__main__': + s = AntEnv(str(sys.argv[1])) + s.run() \ No newline at end of file diff --git a/ant/scheduler.py b/ant/scheduler.py new file mode 100644 index 0000000..9aac6b6 --- /dev/null +++ b/ant/scheduler.py @@ -0,0 +1,7 @@ +import sys + +from iotAmak.scheduler import Scheduler + +if __name__ == '__main__': + a = Scheduler(str(sys.argv[1])) + a.run() \ No newline at end of file diff --git a/philosophers.zip b/philosophers.zip new file mode 100644 index 0000000000000000000000000000000000000000..36a06f59b5c16b862e0b44f85cc23505f35b0377 GIT binary patch literal 3181 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 O2ZIa~1A{dehz9_Z1{22s literal 0 HcmV?d00001 diff --git a/philosophers/config.json b/philosophers/config.json index 84fb1a9..9d9ff15 100644 --- a/philosophers/config.json +++ b/philosophers/config.json @@ -1,23 +1,23 @@ { - "broker" : "192.168.153.209", + "broker" : "192.168.71.209", "clients_ssh" : [ { - "hostname" : "192.168.153.18", + "hostname" : "192.168.71.18", "user" : "pi", "password" : "raspberry" }, { - "hostname" : "192.168.153.227", + "hostname" : "192.168.71.227", "user" : "pi", "password" : "raspberry" }, { - "hostname" : "192.168.153.61", + "hostname" : "192.168.71.61", "user" : "pi", "password" : "raspberry" }, { - "hostname" : "192.168.153.75", + "hostname" : "192.168.71.75", "user" : "pi", "password" : "raspberry" } diff --git a/philosophers/scheduler.py b/philosophers/scheduler.py index 05c5b41..9aac6b6 100644 --- a/philosophers/scheduler.py +++ b/philosophers/scheduler.py @@ -3,5 +3,5 @@ import sys from iotAmak.scheduler import Scheduler if __name__ == '__main__': - a = Scheduler(int(sys.argv[1]), str(sys.argv[2])) + a = Scheduler(str(sys.argv[1])) a.run() \ No newline at end of file -- GitLab