def __init__(self, name_model, map_x_size, map_y_size, min_step, max_step): #TODO: extract from configuration file #name_model = 'random_waypoint' #map_x_size = 100 #map_y_size = 100 self.name_model = name_model if name_model == 'random_waypoint': self.model = random_waypoint(1, dimensions=(map_x_size, map_y_size), velocity=(min_step, max_step), wt_max=0.) self.pos = None elif name_model == 'random_walk': self.model = random_walk(1, dimensions=(map_x_size, map_y_size)) self.pos = None elif name_model == 'random_direction': self.model = random_direction(1, dimensions=(map_x_size, map_y_size)) self.pos = None elif name_model == 'levy_walk': self.model = truncated_levy_walk(1, dimensions=(map_x_size, map_y_size)) self.pos = None elif name_model == 'none': self.model = None self.pos = (str(random.randint(0, map_x_size)), str(random.randint(0, map_y_size))) else: raise Exception('The model name is not correct: %s'%name_model) self.next()
def __init__(self, configFile): #configPath = "/path/to/fog-vmalloc/python" parser = SafeConfigParser() #parser.read(configPath+"/config.ini") parser.read(configFile) nr_nodes = parser.getint('WayPoint','nr_nodes') MAX_X = parser.getint('WayPoint', 'MAX_X') MAX_Y = parser.getint('WayPoint', 'MAX_Y') MIN_V = parser.getint('WayPoint', 'MIN_V') MAX_V = parser.getint('WayPoint', 'MAX_V') MAX_WT = parser.getint('WayPoint', 'MAX_WT') self.step = 0 #np.random.seed(0xffff) #np.random.seed(parser.get('WayPoint', 'seed')) if parser.has_option('WayPoint', 'seed'): np.random.seed(parser.getint('WayPoint', 'seed')) else: np.random.seed(0xffff) self.rwp = random_waypoint(nr_nodes, dimensions=(MAX_X, MAX_Y), velocity=(MIN_V, MAX_V), wt_max=MAX_WT) FN_x_len = 0.1 * MAX_X FN_y_len = 0.1 * MAX_Y X_CENTER = MAX_X / 2.0 Y_CENTER = MAX_Y / 2.0 self.FN_X_MIN = X_CENTER - FN_x_len / 2.0 self.FN_X_MAX = X_CENTER + FN_x_len / 2.0 self.FN_Y_MIN = Y_CENTER - FN_y_len / 2.0 self.FN_Y_MAX = Y_CENTER + FN_y_len / 2.0
def __init__(self, name_model, map_x_size, map_y_size, min_step, max_step): #TODO: extract from configuration file #name_model = 'random_waypoint' #map_x_size = 100 #map_y_size = 100 self.name_model = name_model if name_model == 'random_waypoint': self.model = random_waypoint(1, dimensions=(map_x_size, map_y_size), velocity=(min_step, max_step), wt_max=0.) self.pos = None elif name_model == 'random_walk': self.model = random_walk(1, dimensions=(map_x_size, map_y_size)) self.pos = None elif name_model == 'random_direction': self.model = random_direction(1, dimensions=(map_x_size, map_y_size)) self.pos = None elif name_model == 'levy_walk': self.model = truncated_levy_walk(1, dimensions=(map_x_size, map_y_size)) self.pos = None elif name_model == 'none': self.model = None self.pos = (str(random.randint(0, map_x_size)), str(random.randint(0, map_y_size))) else: raise Exception('The model name is not correct: %s' % name_model) self.next()
def build_simulation(n_user, n_rrh, n_bbu): global rw global positions global control_network # Instantiation order. Must be respected # 1- Grid # 2- Controller # 3- BBUs # 4- Antennas # 5- Users grid = Grid(size=(1000, 1000)) cntrl = Controller(grid, control_network=control_network) grid.add_controller(cntrl) for b in range(n_bbu): grid.add_bbu( BBU(pos=grid.random_pos(), controller=cntrl, grid=grid) ) rw = random_waypoint(n_user, dimensions=grid.size, velocity=(1.0, 40.0), wt_max=10.0) positions = next(rw) for u in range(n_user): grid.add_user( User( id=u, pos=positions[u], moving_strategy=random_waypoint_strategy, grid=grid ) ) for r in range(n_rrh): grid.add_antenna( Antenna( id=r, type=Antenna.RRH_ID, pos=grid.random_pos(), radius=30, grid=grid, bw=random.choice([1.4, 3, 5, 10, 15, 20]) ) ) return grid
def build_simulation(n_user, n_rrh, n_bbu): global rw global positions # Instantiation order. Must be respected # 1- Grid # 2- Controller # 3- BBUs # 4- Antennas # 5- Users grid = Grid(size=(1000, 1000)) cntrl = Controller(grid, control_network=True) grid.add_controller(cntrl) for b in range(n_bbu): grid.add_bbu( BBU(pos=grid.random_pos(), controller=cntrl, grid=grid) ) rw = random_waypoint(n_user, dimensions=grid.size, velocity=(1.0, 40.0), wt_max=10.0) positions = next(rw) for u in range(n_user): grid.add_user( User( id=u, pos=positions[u], moving_strategy=random_waypoint_strategy, grid=grid ) ) for r in range(n_rrh): grid.add_antenna( Antenna( pos=grid.random_pos(), radius=30, grid=grid, bw=random.choice([1.4, 3, 5, 10, 15, 20]) ) ) return grid
def main(): dimension = 100 gran = 1. plt.figure() plt.title("Random Waypoint Mobility Model") plt.xlabel("number of users") plt.ylabel("expected number of steps to completely cover 100x100 area") # ^ (because users move at varying speeds, "steps" means steps of the model) for users in range(20, 110, 10): print "num users: %d" % users partial_sum = 0 trials = 5 for t in range(trials): visited = np.zeros((dimension, dimension)) # create random waypoint mobility model object rw = random_waypoint(users, dimensions=(1, 1), velocity=(0.1, 1.), wt_max=1.0) # compute num steps for total coverage partial_sum += computeSteps(rw, visited, dimension, gran) plt.plot(users, partial_sum/trials, marker='o', color='blue') plt.show()
MAX_NODES = 25 MAX_RANGE = 100 SIM_TIME = 1000 HOP_COUNT = 5 # Adj. List and Weights G = [[] for i in range(MAX_NODES)] W = {} # Seeds SetSeed(MAX_NODES) # Set a seed to control the randomicity random.seed(MAX_NODES) # Default mobility model X Y mob = random_waypoint(MAX_NODES, dimensions=(1000, 100), velocity=(10.0, 20.0), wt_max=0.5) # check this # Graph object H = Graph(G, W, mob, MAX_NODES, MAX_RANGE) H.Run() def main(): global G global W PRUNING = False T = set() # Using pruning? if len(sys.argv) > 1:
def create_model_instance(self): return random_waypoint(self.nr_nodes, (self.MAX_X, self.MAX_Y), velocity=(15, 20))
## Random Walk model if RANDOM_WALK: mob_model = random_walk(nr_nodes, dimensions=(MAX_X, MAX_Y)) elif TRUNCATED_LEVY_WALK: ## Truncated Levy Walk model mob_model = truncated_levy_walk(nr_nodes, dimensions=(MAX_X, MAX_Y)) elif RANDOM_DIRECTION: ## Random Direction model mob_model = random_direction(nr_nodes, dimensions=(MAX_X, MAX_Y)) elif GAUSS_MARKOV: ## Gauss-Markov model mob_model = gauss_markov(nr_nodes, dimensions=(MAX_X, MAX_Y), alpha=0.99) else: mob_model = random_waypoint(nr_nodes, dimensions=(MAX_X, MAX_Y), velocity=(MIN_V, MAX_V), wt_max=MAX_WT) ''' Open file in write mode ''' file = open("positions.dat", "w") file.write("#node time(s) x y\n") #Header file.write("0 0.0 50 50\n") #First Node -> Fixed node #for positions in rw: for step in range(nr_steps): positions = next(mob_model) for i in range(nr_nodes): file.write(str(i + 1) + " ") #Node