Ejemplo n.º 1
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()
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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()
Ejemplo n.º 7
0
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:
Ejemplo n.º 8
0
 def create_model_instance(self):
     return random_waypoint(self.nr_nodes, (self.MAX_X, self.MAX_Y), velocity=(15, 20))
Ejemplo n.º 9
0
## 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
Ejemplo n.º 10
0
 def create_model_instance(self):
     return random_waypoint(self.nr_nodes, (self.MAX_X, self.MAX_Y),
                            velocity=(15, 20))