def main(simulated_time): random.seed(RANDOM_SEED) """ TOPOLOGY from a json """ t = Topology() t.G = nx.read_graphml("Euclidean.graphml") t.G = nx.convert_node_labels_to_integers(t.G, first_label=0, ordering='default', label_attribute=None) print "Nodes: %i" % len(t.G.nodes()) print "Edges: %i" % len(t.G.edges()) #MANDATORY fields of a link # Default values = {"BW": 1, "PR": 1} valuesOne = dict(itertools.izip(t.G.edges(), np.ones(len(t.G.edges())))) nx.set_edge_attributes(t.G, name='BW', values=valuesOne) nx.set_edge_attributes(t.G, name='PR', values=valuesOne) centrality = nx.betweenness_centrality(t.G) nx.set_node_attributes(t.G, name="centrality", values=centrality) sorted_clustMeasure = sorted(centrality.items(), key=operator.itemgetter(1), reverse=True) top20_devices = sorted_clustMeasure[:20] main_fog_device = copy.copy(top20_devices[0][0]) print "-" * 20 print "Top 20 centralised nodes:" for item in top20_devices: print item print "-" * 20 """ APPLICATION """ app1 = create_application("app1") app2 = create_application("app2") """ PLACEMENT algorithm """ #There are not modules to place. placement = NoPlacementOfModules("NoPlacement") """ POPULATION algorithm """ number_generators = int(len(t.G) * 0.1) print number_generators dDistribution = deterministicDistributionStartPoint(3000, 300, name="Deterministic") dDistributionSrc = deterministicDistribution(name="Deterministic", time=10) pop1 = Evolutive(top20_devices, number_generators, name="top", activation_dist=dDistribution) pop1.set_sink_control({ "app": app1.name, "number": 1, "module": app1.get_sink_modules() }) pop1.set_src_control({ "number": 1, "message": app1.get_message("M.Action"), "distribution": dDistributionSrc }) pop2 = Statical(number_generators, name="Statical") pop2.set_sink_control({ "id": main_fog_device, "number": number_generators, "module": app2.get_sink_modules() }) pop2.set_src_control({ "number": 1, "message": app2.get_message("M.Action"), "distribution": dDistributionSrc }) #In addition, a source includes a distribution function: """-- SELECTOR algorithm """ selectorPath1 = BroadPath() selectorPath2 = CloudPath_RR() """ SIMULATION ENGINE """ s = Sim(t, default_results_path="Results_%s_singleApp1" % (simulated_time)) s.deploy_app(app1, placement, pop1, selectorPath1) # s.deploy_app(app2, placement, pop2, selectorPath2) s.run(simulated_time, test_initial_deploy=False, show_progress_monitor=False)
def main(simulated_time): random.seed(RANDOM_SEED) """ TOPOLOGY from a json """ t = Topology() t.G = nx.read_graphml("Euclidean.graphml") t.G = nx.convert_node_labels_to_integers(t.G, first_label=0, ordering='default', label_attribute=None) print "Nodes: %i" %len(t.G.nodes()) print "Edges: %i" %len(t.G.edges()) #MANDATORY fields of a link # Default values = {"BW": 1, "PR": 1} valuesOne = dict(itertools.izip(t.G.edges(),np.ones(len(t.G.edges())))) nx.set_edge_attributes(t.G, name='BW', values=valuesOne) nx.set_edge_attributes(t.G, name='PR', values=valuesOne) centrality = nx.betweenness_centrality(t.G) nx.set_node_attributes(t.G, name="centrality", values=centrality) sorted_clustMeasure = sorted(centrality.items(), key=operator.itemgetter(1), reverse=True) top20_devices = sorted_clustMeasure[:20] main_fog_device = copy.copy(top20_devices[0][0]) print "-" * 20 print "Top 20 centralised nodes:" for item in top20_devices: print item print "-"*20 """ APPLICATION """ app1 = create_application("app1") """ PLACEMENT algorithm """ #There are not modules to place. placement = NoPlacementOfModules("NoPlacement") """ POPULATION algorithm """ number_generators = int(len(t.G)*0.1) print number_generators #you can use whatever funciton to change the topology dStart = deterministicDistributionStartPoint(0, 100, name="Deterministic") dStart2 = exponentialDistributionStartPoint(500, 100.0, name="Deterministic") pop = Pop_and_Failures(name="mttf-nodes",srcs = number_generators,activation_dist=dStart2 ) pop.set_sink_control({"ids": top20_devices, "number": 1, "module": app1.get_sink_modules()}) dDistribution = deterministicDistribution(name="Deterministic", time=10) pop.set_src_control( {"number": 1, "message": app1.get_message("M.Action"), "distribution": dDistribution}) #In addition, a source includes a distribution function: """-- SELECTOR algorithm """ selectorPath = BroadPath() """ SIMULATION ENGINE """ s = Sim(t, default_results_path="Results_%s_exp" % (simulated_time)) s.deploy_app(app1, placement, pop, selectorPath) s.run(simulated_time,test_initial_deploy=False,show_progress_monitor=False) # s.draw_allocated_topology() # for debugging print "Total nodes available in the toopology %i" %len(s.topology.G.nodes()) print "Total edges available in the toopology %i" %len(s.topology.G.edges()) print pop.nodes_removed
def main(simulated_time): random.seed(RANDOM_SEED) np.random.seed(RANDOM_SEED) """ TOPOLOGY from a json """ t = Topology() t.G = nx.read_graphml("Euclidean.graphml") ls = list(t.G.nodes) li = {x: int(x) for x in ls} nx.relabel_nodes(t.G, li, False) #Transform str-labels to int-labels print "Nodes: %i" % len(t.G.nodes()) print "Edges: %i" % len(t.G.edges()) #MANDATORY fields of a link # Default values = {"BW": 1, "PR": 1} valuesOne = dict(itertools.izip(t.G.edges(), np.ones(len(t.G.edges())))) nx.set_edge_attributes(t.G, name='BW', values=valuesOne) nx.set_edge_attributes(t.G, name='PR', values=valuesOne) centrality = nx.betweenness_centrality(t.G) nx.set_node_attributes(t.G, name="centrality", values=centrality) sorted_clustMeasure = sorted(centrality.items(), key=operator.itemgetter(1), reverse=True) top20_devices = sorted_clustMeasure[0:20] main_fog_device = copy.copy(top20_devices[0][0]) # df = pd.read_csv("pos_network.csv") # pos = {} # for r in df.iterrows(): # lat = r[1].x # lng = r[1].y # pos[r[0]] = (lat, lng) # fig = plt.figure(figsize=(10, 8), dpi=100) # nx.draw(t.G, with_labels=True,pos=pos,node_size=60,node_color="orange", font_size=8) # plt.savefig('labels.png') # exit() print "-" * 20 print "Best top centralized device: ", main_fog_device print "-" * 20 """ APPLICATION """ app1 = create_application("app1") """ PLACEMENT algorithm """ #There are not modules to place. placement = NoPlacementOfModules("NoPlacement") """ POPULATION algorithm """ number_generators = int(len(t.G) * 0.1) print "Number of generators %i" % number_generators #you can use whatever funciton to change the topology dStart = deterministicDistributionStartPoint(500, 400, name="Deterministic") pop = Population_Move(name="mttf-nodes", srcs=number_generators, node_dst=main_fog_device, activation_dist=dStart) pop.set_sink_control({ "id": main_fog_device, "number": number_generators, "module": app1.get_sink_modules() }) dDistribution = deterministicDistribution(name="Deterministic", time=100) pop.set_src_control({ "number": 1, "message": app1.get_message("M.Action"), "distribution": dDistribution }) #In addition, a source includes a distribution function: """-- SELECTOR algorithm """ selectorPath = CloudPath_RR() """ SIMULATION ENGINE """ s = Sim(t, default_results_path="Results_%s" % (simulated_time)) s.deploy_app(app1, placement, pop, selectorPath) s.run(simulated_time, test_initial_deploy=False, show_progress_monitor=False) # s.draw_allocated_topology() # for debugging s.print_debug_assignaments()