mobicen / util / milanoMob.py @ b6158841
History | View | Annotate | Download (1.87 KB)
1 |
# https://treyhunner.com/2018/06/how-to-make-an-iterator-in-python/
|
---|---|
2 |
|
3 |
from pymobility.models.mobility import gauss_markov, reference_point_group, \ |
4 |
tvc, truncated_levy_walk, random_direction, random_waypoint, random_walk |
5 |
import numpy as np |
6 |
import numpy |
7 |
import code |
8 |
|
9 |
|
10 |
def milano_mob(): |
11 |
return iter(Milano()) |
12 |
|
13 |
|
14 |
class Milano(object): |
15 |
|
16 |
def __init__(self): |
17 |
# simulation area (units)
|
18 |
MAX_X, MAX_Y = 100, 100 |
19 |
|
20 |
# max and min velocity
|
21 |
MIN_V, MAX_V = 0.1, 1. |
22 |
|
23 |
# max waiting time
|
24 |
MAX_WT = 0.
|
25 |
|
26 |
# Random Waypoint model
|
27 |
rwp = random_waypoint(nr_nodes=100, dimensions=(
|
28 |
MAX_X, MAX_Y), velocity=(MIN_V, MAX_V), wt_max=MAX_WT) |
29 |
|
30 |
# Reference Point Group model
|
31 |
# In tutto 150 nodi = 10x(5+4+3) + 15x(2)
|
32 |
# 10 gruppi X 5
|
33 |
groups = [5 for _ in range(10)] |
34 |
nr_nodes = sum(groups)
|
35 |
rpg5 = reference_point_group( |
36 |
groups, dimensions=(MAX_X, MAX_Y), aggregation=0.5)
|
37 |
|
38 |
# 10 gruppi X 4
|
39 |
groups = [4 for _ in range(10)] |
40 |
nr_nodes = sum(groups)
|
41 |
rpg4 = reference_point_group( |
42 |
groups, dimensions=(MAX_X, MAX_Y), aggregation=0.5)
|
43 |
|
44 |
# 10 gruppi X 3
|
45 |
groups = [3 for _ in range(10)] |
46 |
nr_nodes = sum(groups)
|
47 |
rpg3 = reference_point_group( |
48 |
groups, dimensions=(MAX_X, MAX_Y), aggregation=0.5)
|
49 |
|
50 |
# 15 gruppi X 2
|
51 |
groups = [2 for _ in range(15)] |
52 |
nr_nodes = sum(groups)
|
53 |
rpg2 = reference_point_group( |
54 |
groups, dimensions=(MAX_X, MAX_Y), aggregation=0.5)
|
55 |
|
56 |
self.movers = [rwp, rpg2, rpg3, rpg4, rpg5]
|
57 |
|
58 |
def __iter__(self): |
59 |
|
60 |
while True: |
61 |
pos = [] |
62 |
for mob in self.movers: |
63 |
pos.extend(next(mob))
|
64 |
yield np.array(pos)
|
65 |
|
66 |
|
67 |
if __name__ == '__main__': |
68 |
m = milano_mob() |
69 |
next(m)
|
70 |
code.interact(local=dict(globals(), **locals())) |