diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md old mode 100644 new mode 100755 diff --git a/Ahc.py b/Ahc.py old mode 100644 new mode 100755 diff --git a/Broadcasting/Broadcasting.py b/Broadcasting/Broadcasting.py old mode 100644 new mode 100755 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md old mode 100644 new mode 100755 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md old mode 100644 new mode 100755 diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md old mode 100644 new mode 100755 diff --git a/Channels.py b/Channels.py old mode 100644 new mode 100755 diff --git a/FailureDetectors/FailureDetectors.py b/FailureDetectors/FailureDetectors.py old mode 100644 new mode 100755 diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/LinkLayers/GenericLinkLayer.py b/LinkLayers/GenericLinkLayer.py old mode 100644 new mode 100755 diff --git a/MutualExclusion/RicartAgrawala.py b/MutualExclusion/RicartAgrawala.py old mode 100644 new mode 100755 diff --git a/NetworkLayers/AllSeeingEyeNetworkLayer.py b/NetworkLayers/AllSeeingEyeNetworkLayer.py old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/Routing/FredericksonAlgorithmAdvanced/CaseStudy/ApplicationComponent.py b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/ApplicationComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..64b005b9e84d9cd1f7ce2b19c834d4b3897d3ad1 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/ApplicationComponent.py @@ -0,0 +1,230 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, Thread, Lock +import torch.nn as nn +import torch.optim as optim +import torch +from sklearn import datasets, svm, metrics +from sklearn.model_selection import train_test_split +from sklearn.datasets import fetch_openml +from mnist import MNIST +import numpy as np +import pickle +from sklearn import tree + +import torch.nn.functional as F + +class RNNModel(nn.Module): + def __init__(self, input_dim, hidden_dim, layer_dim, output_dim): + super(RNNModel, self).__init__() + self.hidden_dim = hidden_dim + self.layer_dim = layer_dim + self.rnn = nn.RNN(input_dim, hidden_dim, layer_dim, batch_first=True, nonlinearity='relu') + self.fc = nn.Linear(hidden_dim, output_dim) + + self.queries = {} + + def forward(self, x): + out, hn = self.rnn(x) + out = self.fc(out[:, -1, :]) + return out + +class LSTMModel(nn.Module): + def __init__(self, input_dim, hidden_dim, layer_dim, output_dim): + super(LSTMModel, self).__init__() + self.hidden_dim = hidden_dim + self.layer_dim = layer_dim + self.lstm = nn.LSTM(input_dim, hidden_dim, layer_dim, batch_first=True) + self.fc = nn.Linear(hidden_dim, output_dim) + + def forward(self, x): + out, (hn, cn) = self.lstm(x) + out = self.fc(out[:, -1, :]) + return out + +class GRUModel(nn.Module): + def __init__(self, input_dim, hidden_dim, layer_dim, output_dim): + super(GRUModel, self).__init__() + self.hidden_dim = hidden_dim + + self.layer_dim = layer_dim + self.gru = nn.GRU(input_dim, hidden_dim, batch_first=True) + self.fc = nn.Linear(hidden_dim, output_dim) + + def forward(self, x): + out, hn = self.gru(x) + out = self.fc(out[:, -1, :]) + return out + +class CNNMNIST(torch.nn.Module): + def __init__(self): + super(CNNMNIST, self).__init__() + self.first_cnn_layer = nn.Conv2d(1, 16, 3) + self.first_pool = nn.MaxPool2d(3, 3) + self.first_layer = nn.Linear(16*8*8, 10) + self.output_function = nn.Softmax(dim=1) + + def forward(self, input): + first_cnn_layer = self.first_cnn_layer(input) + first_cnn_out = F.leaky_relu(first_cnn_layer) + first_pool = self.first_pool(first_cnn_out) + # print(first_pool.shape) + first_layer_output = self.first_layer(torch.flatten(first_pool, 1)) + if self.training == False: + output = self.output_function(first_layer_output) + else: + output = first_layer_output + return output + +class MLPMNIST(nn.Module): + def __init__(self): + super(MLPMNIST, self).__init__() + self.first_layer = nn.Linear(28*28, 64) + self.second_layer = nn.Linear(64, 10) + self.output_function = nn.Softmax(dim=1) + + def forward(self, input): + first_layer_output = self.first_layer(input) + # print(first_layer_output.shape) + first_output = F.leaky_relu(first_layer_output) + second_layer_output = self.second_layer(first_output) + if self.training == False: + output = self.output_function(second_layer_output) + else: + output = second_layer_output + return output + +# where the machine learning model is loaded... The top entity for the Node... +class ApplicationComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(ApplicationComponent, self).__init__(componentname, componentid) + self.node_to_model={1: "SVM", 4: "DecisionTree", 3: "RandomForest", 7: "MLP", 9: "CNN", + 10: "LSTM", 12: "RNN", 8: "GRU"} + self.model_to_node={self.node_to_model[a]: a for a in self.node_to_model} + self.queries = {} + self.query_lock = Lock() + + if self.componentinstancenumber == 1: + self.classifier = pickle.load(open("TrainedModels/SVM/svm.model", "rb")) + elif self.componentinstancenumber == 4: + self.classifier = pickle.load(open("TrainedModels/DecisionTree/decisiontree.model", "rb")) + elif self.componentinstancenumber == 3: + self.classifier = pickle.load(open("TrainedModels/RandomForest/randomforest.model", "rb")) + elif self.componentinstancenumber == 7: + self.classifier = MLPMNIST() + file_dir="TrainedModels/MLP/mlp.nn" + self.classifier.load_state_dict(torch.load(file_dir)) + self.classifier.eval() + elif self.componentinstancenumber == 9: + self.classifier = CNNMNIST() + file_dir="TrainedModels/CNN/cnn.nn" + self.classifier.load_state_dict(torch.load(file_dir)) + self.classifier.eval() + elif self.componentinstancenumber == 10: + self.classifier = LSTMModel(28, 32, 1, 10) + file_dir="TrainedModels/LSTM/lstm.nn" + self.classifier.load_state_dict(torch.load(file_dir)) + self.classifier.eval() + elif self.componentinstancenumber == 12: + self.classifier = RNNModel(28, 32, 1, 10) + file_dir="TrainedModels/RNN/rnn.nn" + self.classifier.load_state_dict(torch.load(file_dir)) + self.classifier.eval() + elif self.componentinstancenumber == 8: + self.classifier = GRUModel(28, 32, 1, 10) + file_dir="TrainedModels/GRU/gru.nn" + self.classifier.load_state_dict(torch.load(file_dir)) + self.classifier.eval() + + + + def detect(self, input): + if self.componentinstancenumber in (1, 3, 4): + return self.classifier.predict([input]) + elif self.componentinstancenumber == 7: + output = self.classifier(torch.from_numpy(np.array([input], dtype=np.float32))) + return torch.argmax(output, dim=1) + elif self.componentinstancenumber == 9: # , 10, 12, 8): + output = self.classifier(torch.from_numpy(np.array([input], dtype=np.float32)).reshape((-1, 1, 28, 28))) + return torch.argmax(output, dim=1) + elif self.componentinstancenumber == 10: # , 10, 12, 8): + output = self.classifier(torch.from_numpy(np.array([input], dtype=np.float32)).reshape((-1, 28, 28))) + return torch.argmax(output, dim=1) + elif self.componentinstancenumber == 12: # , 10, 12, 8): + output = self.classifier(torch.from_numpy(np.array([input], dtype=np.float32)).reshape((-1, 28, 28))) + return torch.argmax(output, dim=1) + elif self.componentinstancenumber == 8: # , 10, 12, 8): + output = self.classifier(torch.from_numpy(np.array([input], dtype=np.float32)).reshape((-1, 28, 28))) + return torch.argmax(output, dim=1) + + def job(self, *args): + mndata = MNIST("./datasets/mnist/") + images, labels = mndata.load_training() + images = np.array(images, dtype=np.float32) + labels = np.array(labels, dtype=np.long) + images /= (images.max(axis=0) + 1) # Scale values... + images = images.reshape((-1, 28 * 28)) + while True: + data = input("Information to send : ") + try: + number = int(data) + except: + number = 0 + message_header = GenericMessageHeader("APPQUERY", + "ApplicationComponent-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + + for machine_learning_models in self.model_to_node: + message = GenericMessage(message_header, (self.model_to_node[machine_learning_models], images[number])) + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + self.query_lock.acquire() + self.queries[machine_learning_models] = [self.model_to_node[machine_learning_models], None] + self.query_lock.release() + + def on_init(self, eventobj: Event): + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATE", "ApplicationComponent-"+str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + print(f"App {self.componentinstancenumber} sends an INITIATE to Coordinator") + + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + # self.send_down(event) + # print(f"{self.componentname+str(self.componentinstancenumber)} receives onInit {eventobj}") + + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == "ApplicationComponent": + if message_type == "APPQUERY": + source, content = message + # print(f"App {self.componentinstancenumber} has received {message} from {source}") + message_header = GenericMessageHeader("APPRESPONSE", + "ApplicationComponent-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + resp = self.detect(content) + print(f"Response {resp}") + message = GenericMessage(message_header, (source, "Hellooooooooo "+str(resp))) + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + + elif message_type == "APPRESPONSE": + source, content = message + # print(f"App {self.componentinstancenumber} has received APPRESPONSE {message} from {source}") + self.query_lock.acquire() + self.queries[self.node_to_model[source]][1] = content + all_responded = True + for machine_models in self.queries: + if self.queries[machine_models][1] is None: + all_responded = False + + if all_responded: + print("********************All responded*********************") + for machine_models in self.queries: + print(f"{machine_models} responded {self.queries[machine_models][1]}") + self.query_lock.release() diff --git a/Routing/FredericksonAlgorithmAdvanced/CaseStudy/CaseStudyRun.py b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/CaseStudyRun.py new file mode 100755 index 0000000000000000000000000000000000000000..a82e667b4e2ee13c56bab3a7c122b58c04fecac2 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/CaseStudyRun.py @@ -0,0 +1,25 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Channels import P2PFIFOPerfectChannel, Channel +import time +import networkx as nx +import numpy as np +from Routing.FredericksonAlgorithmAdvanced.CaseStudy.MachineLearningNodeComponent import MachineLearningNode + +edges = [(0, 1, {"weight": 1}), (0, 2, {"weight": 1}), (1, 3, {"weight": 1}), (2, 4, {"weight": 1}), (4, 5, {"weight": 1}), + (3, 5, {"weight": 1}), (1, 4, {"weight": 1}), (4, 6, {"weight": 1}), (4, 7, {"weight": 1}), + (6, 8, {"weight": 1}), (8, 9, {"weight": 1}), (7, 10, {"weight": 1}), (7, 11, {"weight": 1}), + (11, 13, {"weight": 1}), (2, 12, {"weight": 1}), + (7, 9, {"weight": 1})] + +# undirected graph +graph = nx.Graph() +graph.add_edges_from(edges) + +topology = Topology() +topology.construct_from_graph(graph, MachineLearningNode, P2PFIFOPerfectChannel) +# process1 = MachineLearningNode("MachineLearningNode", 0) +# ComponentRegistry().init() + +topology.start() +while True: pass + diff --git a/Routing/FredericksonAlgorithmAdvanced/CaseStudy/CoordinatorComponent.py b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/CoordinatorComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..be814222c036032786b17edf4de5111ba2a9857c --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/CoordinatorComponent.py @@ -0,0 +1,108 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + +class Coordinator(ComponentModel): + def __init__(self, componentname, componentid): + super(Coordinator, self).__init__(componentname, componentid) + self.RoutingTable = {} + self.Response_Record = {} + + def on_message_from_top(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + # print(f"Coordinator receives message from top {messageto} {message_type} {message}") + if messageto == Coordinator.__name__: + if sender == "ApplicationComponent" and message_type == "INITIATE": + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATEBFSCONSTRUCTION", + "Coordinator-" + str(self.componentinstancenumber), + "FredericksonAlgorithmAdvancedComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRP, message) + self.send_peer(kickstarter) + print("Coordinator -> Frederickson") + elif sender == "ApplicationComponent" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + if message_type == "APPRESPONSE" or len(self.RoutingTable) > 0: + dest, info = message + path_to_follow = None + for i in self.RoutingTable: + if dest in i: + path_to_follow = i + break + if message_type == "APPRESPONSE": + path_to_follow = self.Response_Record[dest] + + temp = [] + for k in range(len(path_to_follow)): + temp.append(path_to_follow[k]) + if path_to_follow[k] == dest: + break + path_to_follow = temp + neighbor_id = path_to_follow[1] + if message_type == "APPRESPONSE": + print("Neighbor : ", neighbor_id) + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (path_to_follow[1:], (path_to_follow), dest, self.componentinstancenumber, info)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"Coordinator {self.componentinstancenumber} sends APPQUERY {neighbor_id} to relay it {dest} - {self.RoutingTable}") + + + def on_message_from_peer(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + # print(f"*****Coordinator {sender} {messageto} {message_type} {message}") + if messageto == Coordinator.__name__: + if sender == "FredericksonAlgorithmAdvancedComponent" and message_type == "BFSTREECONSTRUCTED": + self.RoutingTable = message + print(f"Coordinator {self.componentinstancenumber} has received BFS Tree {self.RoutingTable}") + + + def on_init(self, eventobj: Event): + pass + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + # print(f"Coordinator receives message from bottom {messageto}") + if messageto == Coordinator.__name__: + if sender == "Coordinator" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + curr_, path_to_follow, dest, source, content = message + print(f"Coordinator {self.componentinstancenumber} has received APPQUERY {curr_, path_to_follow, dest, source}") + + if dest == self.componentinstancenumber: + message_header = GenericMessageHeader(message_type, + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message_ = GenericMessage(message_header, (source, content)) + kickstarter = Event(self, EventTypes.MFRB, message_) + self.send_up(kickstarter) + self.Response_Record[source] = list(reversed(path_to_follow)) + print(f"Response Record : ", self.Response_Record) + # send to app layer + pass + else: + neighbor_id = curr_[1] + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (curr_[1:], path_to_follow, dest, source, content)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"*****Routing from {self.componentinstancenumber} to {neighbor_id} - {self.RoutingTable}*****") + + diff --git a/Routing/FredericksonAlgorithmAdvanced/CaseStudy/FredericksonAlgorithmAdvancedComponent.py b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/FredericksonAlgorithmAdvancedComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..21f54927db0e4c79c5499bd2704fbe8d16d4a400 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/FredericksonAlgorithmAdvancedComponent.py @@ -0,0 +1,233 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +import time +import numpy as np + +class FredericksonAlgorithmAdvancedComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(FredericksonAlgorithmAdvancedComponent, self).__init__(componentname, componentid) + self.queue_lock = Lock() + self.message_queue = [] + self.l_parameter = 1 + if self.componentinstancenumber == 0: + self.is_initiator = True + else: + self.is_initiator = False + + def on_init(self, eventobj: Event): + super(FredericksonAlgorithmAdvancedComponent, self).on_init(eventobj) + if not self.is_initiator: + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def on_message_from_bottom(self, eventobj: Event): + message_destination = eventobj.eventcontent.header.messageto.split("-")[0] + print(f"{self.componentinstancenumber} received {message_destination}") + if message_destination == FredericksonAlgorithmAdvancedComponent.__name__: # process only the messages targeted to this component... + message_source_id = eventobj.eventcontent.header.messagefrom.split("-")[1] + message_type = eventobj.eventcontent.header.messagetype + content = eventobj.eventcontent.payload + if message_type == "EXPLORE" or message_type == "FORWARD" or message_type=="REVERSE": + self.queue_lock.acquire() # protect message_queue, both component thread and Toueg thread are trying to access data + self.message_queue.append((int(message_source_id), message_type, content)) + self.queue_lock.release() + + def on_message_from_peer(self, eventobj: Event): + message_header = eventobj.eventcontent.header + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == FredericksonAlgorithmAdvancedComponent.__name__: + if self.is_initiator: + if message_header.messagetype == "INITIATEBFSCONSTRUCTION": + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def job(self, *arg): + self.neighbors = Topology().get_neighbors(self.componentinstancenumber) # retrieve all neighbor ids... + self.neighbor_weights = {a: 1 for a in self.neighbors} # for the time being each edge weight is 1... + if self.componentinstancenumber == 0: + self.is_initiator = True + else: + self.is_initiator = False + + tree = self.FredericksonAlgorithmAdvanced() + def getPaths(data): + if len(data) == 0: + return [[]] + if len(data) == 1: + ret = getPaths(data[list(data.keys())[0]]) + for i in ret: + i.insert(0, list(data.keys())[0]) + return ret + if len(data) > 1: + ret = getPaths(data[list(data.keys())[0]]) + for kl in range(len(ret)): + ret[kl].insert(0, list(data.keys())[0]) + + return ret + getPaths({a: data[a] for a in list(data.keys()) if a != list(data.keys())[0]}) + + message_payload= getPaths(tree) + + message_header = GenericMessageHeader("BFSTREECONSTRUCTED", + self.componentname + "-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, message_payload) + event = Event(self, EventTypes.MFRP, message) + self.send_peer(event) + print("Info sent to Coordinator") + + def FredericksonAlgorithmAdvanced(self): + self.process_id = self.componentinstancenumber + self.positively_responded_nodes = [] + + self.level_u = np.inf + self.neighbor_level_u = {} + self.parent_u = None + self.children_u = {} + self.expectedreplies = {} + for neighbor in self.neighbors: + self.neighbor_level_u[neighbor] = np.inf + self.expectedreplies[neighbor] = 0 + + bvalue_u = False + sendreverse_u = True + + if self.is_initiator: + self.level_u = 0 + k = 0 + for n in self.neighbors: + if not n in self.children_u: + self.children_u[n] = [] + self.sendMessageToNeighbor(n, "EXPLORE", (k + 1, self.l_parameter)) + self.expectedreplies[n] = 1 + + while True: + new_message = self.waitNewMessage() + sender, message_type, f = new_message + search_depth = f + + if message_type == "FORWARD": + bvalue_u = False + for n in self.neighbors: + self.expectedreplies[n] = 0 + if self.level_u < f: + message_count = 0 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", f) + self.expectedreplies[c] = 1 + message_count += 1 + self.positively_responded_nodes = [] + + + if self.level_u == f: + message_count = 0 + for n in self.neighbors: + if self.neighbor_level_u[n] != f - 1: + self.sendMessageToNeighbor(n, "EXPLORE", (f + 1, self.l_parameter)) + self.expectedreplies[n] = 1 + message_count += 1 + if message_count == 0: + self.message_queue.append((-1, "REVERSE", (False, self.children_u))) + print(f"**********{self.process_id} sends loop back itsel... ") + + elif message_type == "EXPLORE": + f = search_depth[0] + m = search_depth[1] + + if self.neighbor_level_u[sender] != f - 1: + self.neighbor_level_u[sender] = f - 1 + + if self.level_u > f: + bvalue_u = True + if not sendreverse_u: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (False, self.children_u)) + sendreverse_u = True + + self.parent_u = sender + self.level_u = f + + self.children_u = {} + if m > 1: + sendreverse_u = False + message_count = 0 + for n in self.neighbors: + if n != self.parent_u: + self.sendMessageToNeighbor(n, "EXPLORE", (f + 1, m - 1)) + self.expectedreplies[n] += 1 + message_count += 1 + + else: + self.sendMessageToNeighbor(sender, "REVERSE", (True, self.children_u)) + elif self.level_u == f or self.level_u == f - 1: + if sender in self.children_u: + del self.children_u[sender] + if sender in self.positively_responded_nodes: + self.positively_responded_nodes.remove(sender) + + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + elif self.level_u < f - 1: + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + + elif message_type == "REVERSE": + b = f[0] + if sender in self.expectedreplies: + self.expectedreplies[sender] -= 1 + if sender in self.neighbor_level_u and self.neighbor_level_u[sender] <= self.level_u: + b = False + if b == True: + if sender not in self.positively_responded_nodes: + self.positively_responded_nodes.append(sender) + if self.process_id != sender: + self.children_u[sender] = f[1] + bvalue_u = True + + all_responded = True + for i in self.expectedreplies: + if self.expectedreplies[i] != 0: + all_responded = False + break + + if all_responded == True: + if self.parent_u != None: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (bvalue_u, self.children_u)) + sendreverse_u = False + elif bvalue_u == True: + bvalue_u = False + k = k + 1 + message_count = 0 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", k) + self.expectedreplies[c] = 1 + message_count += 1 + self.positively_responded_nodes = [] + + if message_count == 0: + print("BFS Completed....") + print(f"**********{self.process_id} has problem {new_message}") + print(self.children_u) + else: + print("BFS Completed....") + break + + print(self.children_u) + return {self.componentinstancenumber: self.children_u} + + def sendMessageToNeighbor(self, neighbor_id, message_type, message): + print(f"{self.componentinstancenumber} sends {message_type} message to neighbor {neighbor_id}") + message_header = GenericMessageHeader(message_type, FredericksonAlgorithmAdvancedComponent.__name__+"-"+str(self.componentinstancenumber), + FredericksonAlgorithmAdvancedComponent.__name__+"-"+str(neighbor_id), interfaceid=str(self.componentinstancenumber)+"-"+str(neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + + def waitNewMessage(self): + self.queue_lock.acquire() + if len(self.message_queue) > 0: + message = self.message_queue.pop() + sender = message[0] + message_type = message[1] + last_part = message[2] + self.queue_lock.release() + return (sender, message_type, last_part) + else: + self.queue_lock.release() + return None, None, None \ No newline at end of file diff --git a/Routing/FredericksonAlgorithmAdvanced/CaseStudy/MachineLearningNodeComponent.py b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/MachineLearningNodeComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..c0185fa84076e70bb4797912080461d8d619f1c7 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/MachineLearningNodeComponent.py @@ -0,0 +1,40 @@ +from Ahc import ComponentModel, Event, GenericMessage, ConnectorTypes, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Routing.FredericksonAlgorithmAdvanced.CaseStudy.ApplicationComponent import ApplicationComponent +from Routing.FredericksonAlgorithmAdvanced.CaseStudy.CoordinatorComponent import Coordinator +from Routing.FredericksonAlgorithmAdvanced.CaseStudy.FredericksonAlgorithmAdvancedComponent import FredericksonAlgorithmAdvancedComponent +from Routing.FredericksonAlgorithmAdvanced.CaseStudy.MiddlewareStubComponent import MiddlewareMessageStub + +# Encapsulator for the Application Node +class MachineLearningNode(ComponentModel): + def __init__(self, componentname, componentid): + super(MachineLearningNode, self).__init__(componentname, componentid) + self.Application = ApplicationComponent(ApplicationComponent.__name__, componentid) + self.Coordinator = Coordinator(Coordinator.__name__, componentid) + self.FrederickAlgorithmAdvancedComponent = FredericksonAlgorithmAdvancedComponent(FredericksonAlgorithmAdvancedComponent.__name__, componentid) + self.MiddlewareStub = MiddlewareMessageStub(MiddlewareMessageStub.__name__, componentid) + + # Application layer only talks with Coordinator, + # Coordinator coordinates all demands of the application by triggering other components if necessary... + self.Application.connect_me_to_component(ConnectorTypes.DOWN, self.Coordinator) + self.Coordinator.connect_me_to_component(ConnectorTypes.UP, self.Application) + self.Coordinator.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + + self.Coordinator.connect_me_to_component(ConnectorTypes.PEER, self.FrederickAlgorithmAdvancedComponent) + self.FrederickAlgorithmAdvancedComponent.connect_me_to_component(ConnectorTypes.PEER, self.Coordinator) + + self.FrederickAlgorithmAdvancedComponent.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.FrederickAlgorithmAdvancedComponent) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.Coordinator) + + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.DOWN, self) + self.connect_me_to_component(ConnectorTypes.UP, self.MiddlewareStub) + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + self.send_up(eventobj) # send incoming messages to upper components + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) # send incoming messages from upper components to a channel + diff --git a/Routing/FredericksonAlgorithmAdvanced/CaseStudy/MiddlewareStubComponent.py b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/MiddlewareStubComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..4b3c195b16d27d6efc7c1a6eb59210d97fe50955 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/CaseStudy/MiddlewareStubComponent.py @@ -0,0 +1,18 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + +class MiddlewareMessageStub(ComponentModel): + def __init__(self, componentname, componentid): + super(MiddlewareMessageStub, self).__init__(componentname, componentid) + pass + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "FredericksonAlgorithmAdvancedComponent" or message_target == "Coordinator": + self.send_up(eventobj) + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) + diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/ApplicationComponent.py b/Routing/FredericksonAlgorithmAdvanced/Experiments/ApplicationComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..b130c338ff2be179f7b8195a28a7766f506897ec --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/Experiments/ApplicationComponent.py @@ -0,0 +1,50 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, Thread, Lock +# where the machine learning model is loaded... The top entity for the Node... +from timeit import default_timer as timer +from Routing.FredericksonAlgorithmAdvanced.Experiments.ExperimentDataCollector import ExperimentCollector + +class ApplicationComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(ApplicationComponent, self).__init__(componentname, componentid) + self.start_time = None + self.end_time = None + pass + + def on_init(self, eventobj: Event): + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATE", "ApplicationComponent-"+str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + print(f"App {self.componentinstancenumber} sends an INITIATE to Coordinator") + self.start_time = timer() + + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == "ApplicationComponent": + if message_type == "APPQUERY": + source, content = message + print(f"App {self.componentinstancenumber} has received {message} from {source}") + message_header = GenericMessageHeader("APPRESPONSE", + "ApplicationComponent-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, (source, "Hellooooooooo "+content)) + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + + elif message_type == "APPRESPONSE": + source, content = message + print(f"App {self.componentinstancenumber} has received APPRESPONSE {message} from {source}") + elif message_type == "ROUTINGCOMPLETED": + self.end_time = timer() + print(f"In {self.getDuration()} secs App {self.componentinstancenumber} has received RoutingTable {message}") + ExperimentCollector().route_table = message + print("Route : ", message) + ExperimentCollector().COMPLETION["INIT"] = self.getDuration() + + def getDuration(self): + return self.end_time - self.start_time \ No newline at end of file diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/CoordinatorComponent.py b/Routing/FredericksonAlgorithmAdvanced/Experiments/CoordinatorComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..115e41340b61a1a259adf1584ec76db6773caebd --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/Experiments/CoordinatorComponent.py @@ -0,0 +1,109 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + +class Coordinator(ComponentModel): + def __init__(self, componentname, componentid): + super(Coordinator, self).__init__(componentname, componentid) + self.RoutingTable = {} + self.Response_Record = {} + + def on_message_from_top(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + print(f"Coordinator receives message from top {messageto} {message_type} {message}") + if messageto == Coordinator.__name__: + if sender == "ApplicationComponent" and message_type == "INITIATE": + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATEBFSCONSTRUCTION", + "Coordinator-" + str(self.componentinstancenumber), + "FredericksonAlgorithmAdvancedComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRP, message) + self.send_peer(kickstarter) + print("Coordinator -> Frederickson") + elif sender == "ApplicationComponent" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + if message_type == "APPRESPONSE" or len(self.RoutingTable) > 0: + dest, info = message + path_to_follow = None + for i in self.RoutingTable: + if dest in i: + path_to_follow = i + break + if message_type == "APPRESPONSE": + path_to_follow = self.Response_Record[dest] + + neighbor_id = path_to_follow[1] + if message_type == "APPRESPONSE": + print("Neighbor : ", neighbor_id) + + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (path_to_follow[1:], (path_to_follow), dest, self.componentinstancenumber, info)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"Coordinator {self.componentinstancenumber} sends APPQUERY {neighbor_id} to relay it {dest} - {self.RoutingTable}") + + + def on_message_from_peer(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "FredericksonAlgorithmAdvancedComponent" and message_type == "BFSTREECONSTRUCTED": + self.RoutingTable = message + print(f"Coordinator {self.componentinstancenumber} has received BFS Tree {self.RoutingTable}") + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("ROUTINGCOMPLETED", + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, self.RoutingTable) + kickstarter = Event(self, EventTypes.MFRB, message) + self.send_up(kickstarter) + + + + def on_init(self, eventobj: Event): + pass + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "Coordinator" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + curr_, path_to_follow, dest, source, content = message + print(f"Coordinator {self.componentinstancenumber} has received APPQUERY {curr_, path_to_follow, dest, source}") + + if dest == self.componentinstancenumber: + message_header = GenericMessageHeader(message_type, + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message_ = GenericMessage(message_header, (source, content)) + kickstarter = Event(self, EventTypes.MFRB, message_) + self.send_up(kickstarter) + self.Response_Record[source] = list(reversed(path_to_follow)) + print(f"Response Record : ", self.Response_Record) + # send to app layer + pass + else: + neighbor_id = curr_[1] + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (curr_[1:], path_to_follow, dest, source, content)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"*****Routing from {self.componentinstancenumber} to {neighbor_id} - {self.RoutingTable}*****") + + diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Execute.sh b/Routing/FredericksonAlgorithmAdvanced/Experiments/Execute.sh new file mode 100755 index 0000000000000000000000000000000000000000..9995f8fc1230c329a855daa9f49cdc5e38966718 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/Experiments/Execute.sh @@ -0,0 +1,5 @@ +for i in {1..40} +do +echo $i +python FredericksonAlgorithmAdvancedTesting.py +done \ No newline at end of file diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/ExperimentDataCollector.py b/Routing/FredericksonAlgorithmAdvanced/Experiments/ExperimentDataCollector.py new file mode 100755 index 0000000000000000000000000000000000000000..c5bbb355125215ed44d64c07afa16960844aa2b2 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/Experiments/ExperimentDataCollector.py @@ -0,0 +1,31 @@ +from Ahc import Lock, Thread +from timeit import default_timer as timer +import os +import pickle +def singleton(cls): + instance = [None] + def wrapper(*args, **kwargs): + if instance[0] is None: + instance[0] = cls(*args, **kwargs) + return instance[0] + return wrapper + +@singleton +class ExperimentCollector: + MESSAGE_COUNT = {} + network_graph = None + COMPLETION = {} + l_parameter = None + route_table = None + def getMessageCounts(self): + return self.MESSAGE_COUNT + def getNetworkGraph(self): + return self.network_graph + + def storeResult(self): + files = [a for a in os.listdir("Results") if ".exp"] + pickle.dump((self.network_graph, self.MESSAGE_COUNT, self.COMPLETION, self.route_table), + open("Temp/" + str(timer()) + ".exp", "wb")) + + + diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/FredericksonAlgorithmAdvancedComponent.py b/Routing/FredericksonAlgorithmAdvanced/Experiments/FredericksonAlgorithmAdvancedComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..d278f6dc2cfe8cbb601e3b8d9d7e4fc58384ed06 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/Experiments/FredericksonAlgorithmAdvancedComponent.py @@ -0,0 +1,235 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +import time +import numpy as np +from Routing.FredericksonAlgorithmAdvanced.Experiments.ExperimentDataCollector import ExperimentCollector + +class FredericksonAlgorithmAdvancedComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(FredericksonAlgorithmAdvancedComponent, self).__init__(componentname, componentid) + self.queue_lock = Lock() + self.message_queue = [] + self.l_parameter = 1 + if self.componentinstancenumber == 0: + self.is_initiator = True + else: + self.is_initiator = False + + def on_init(self, eventobj: Event): + super(FredericksonAlgorithmAdvancedComponent, self).on_init(eventobj) + if not self.is_initiator: + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def on_message_from_bottom(self, eventobj: Event): + message_destination = eventobj.eventcontent.header.messageto.split("-")[0] + print(f"{self.componentinstancenumber} received {message_destination}") + if message_destination == FredericksonAlgorithmAdvancedComponent.__name__: # process only the messages targeted to this component... + message_source_id = eventobj.eventcontent.header.messagefrom.split("-")[1] + message_type = eventobj.eventcontent.header.messagetype + content = eventobj.eventcontent.payload + if message_type == "EXPLORE" or message_type == "FORWARD" or message_type=="REVERSE": + self.queue_lock.acquire() # protect message_queue, both component thread and Toueg thread are trying to access data + self.message_queue.append((int(message_source_id), message_type, content)) + self.queue_lock.release() + + def on_message_from_peer(self, eventobj: Event): + message_header = eventobj.eventcontent.header + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == FredericksonAlgorithmAdvancedComponent.__name__: + if self.is_initiator: + if message_header.messagetype == "INITIATEBFSCONSTRUCTION": + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def job(self, *arg): + self.neighbors = Topology().get_neighbors(self.componentinstancenumber) # retrieve all neighbor ids... + self.neighbor_weights = {a: 1 for a in self.neighbors} # for the time being each edge weight is 1... + if self.componentinstancenumber == 0: + self.is_initiator = True + else: + self.is_initiator = False + + tree = self.FredericksonAlgorithmAdvanced() + def getPaths(data): + if len(data) == 0: + return [[]] + if len(data) == 1: + ret = getPaths(data[list(data.keys())[0]]) + for i in ret: + i.insert(0, list(data.keys())[0]) + return ret + if len(data) > 1: + ret = getPaths(data[list(data.keys())[0]]) + for kl in range(len(ret)): + ret[kl].insert(0, list(data.keys())[0]) + + return ret + getPaths({a: data[a] for a in list(data.keys()) if a != list(data.keys())[0]}) + + message_payload= getPaths(tree) + + message_header = GenericMessageHeader("BFSTREECONSTRUCTED", + self.componentname + "-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, message_payload) + event = Event(self, EventTypes.MFRP, message) + self.send_peer(event) + print("Info sent to Coordinator") + + def FredericksonAlgorithmAdvanced(self): + self.process_id = self.componentinstancenumber + self.positively_responded_nodes = [] + + self.level_u = np.inf + self.neighbor_level_u = {} + self.parent_u = None + self.children_u = {} + self.expectedreplies = {} + for neighbor in self.neighbors: + self.neighbor_level_u[neighbor] = np.inf + self.expectedreplies[neighbor] = 0 + + bvalue_u = False + sendreverse_u = True + + if self.is_initiator: + self.level_u = 0 + k = 0 + for n in self.neighbors: + if not n in self.children_u: + self.children_u[n] = [] + self.sendMessageToNeighbor(n, "EXPLORE", (k + 1, self.l_parameter)) + self.expectedreplies[n] = 1 + + while True: + new_message = self.waitNewMessage() + sender, message_type, f = new_message + search_depth = f + + if message_type == "FORWARD": + bvalue_u = False + for n in self.neighbors: + self.expectedreplies[n] = 0 + if self.level_u < f: + message_count = 0 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", f) + self.expectedreplies[c] = 1 + message_count += 1 + self.positively_responded_nodes = [] + + + if self.level_u == f: + message_count = 0 + for n in self.neighbors: + if self.neighbor_level_u[n] != f - 1: + self.sendMessageToNeighbor(n, "EXPLORE", (f + 1, self.l_parameter)) + self.expectedreplies[n] = 1 + message_count += 1 + if message_count == 0: + self.message_queue.append((-1, "REVERSE", (False, self.children_u))) + print(f"**********{self.process_id} sends loop back itsel... ") + + elif message_type == "EXPLORE": + f = search_depth[0] + m = search_depth[1] + + if self.neighbor_level_u[sender] != f - 1: + self.neighbor_level_u[sender] = f - 1 + + if self.level_u > f: + bvalue_u = True + if not sendreverse_u: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (False, self.children_u)) + sendreverse_u = True + + self.parent_u = sender + self.level_u = f + + self.children_u = {} + if m > 1: + sendreverse_u = False + message_count = 0 + for n in self.neighbors: + if n != self.parent_u: + self.sendMessageToNeighbor(n, "EXPLORE", (f + 1, m - 1)) + self.expectedreplies[n] += 1 + message_count += 1 + + else: + self.sendMessageToNeighbor(sender, "REVERSE", (True, self.children_u)) + elif self.level_u == f or self.level_u == f - 1: + if sender in self.children_u: + del self.children_u[sender] + if sender in self.positively_responded_nodes: + self.positively_responded_nodes.remove(sender) + + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + elif self.level_u < f - 1: + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + + elif message_type == "REVERSE": + b = f[0] + if sender in self.expectedreplies: + self.expectedreplies[sender] -= 1 + if sender in self.neighbor_level_u and self.neighbor_level_u[sender] <= self.level_u: + b = False + if b == True: + if sender not in self.positively_responded_nodes: + self.positively_responded_nodes.append(sender) + if self.process_id != sender: + self.children_u[sender] = f[1] + bvalue_u = True + + all_responded = True + for i in self.expectedreplies: + if self.expectedreplies[i] != 0: + all_responded = False + break + + if all_responded == True: + if self.parent_u != None: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (bvalue_u, self.children_u)) + sendreverse_u = False + elif bvalue_u == True: + bvalue_u = False + k = k + 1 + message_count = 0 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", k) + self.expectedreplies[c] = 1 + message_count += 1 + self.positively_responded_nodes = [] + + if message_count == 0: + print("BFS Completed....") + print(f"**********{self.process_id} has problem {new_message}") + print(self.children_u) + break + else: + print("BFS Completed....") + break + + print(self.children_u) + return {self.componentinstancenumber: self.children_u} + + def sendMessageToNeighbor(self, neighbor_id, message_type, message): + print(f"{self.componentinstancenumber} sends {message_type} {message} message to neighbor {neighbor_id}") + message_header = GenericMessageHeader(message_type, FredericksonAlgorithmAdvancedComponent.__name__+"-"+str(self.componentinstancenumber), + FredericksonAlgorithmAdvancedComponent.__name__+"-"+str(neighbor_id), interfaceid=str(self.componentinstancenumber)+"-"+str(neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + + def waitNewMessage(self): + self.queue_lock.acquire() + if len(self.message_queue) > 0: + message = self.message_queue.pop() + sender = message[0] + message_type = message[1] + last_part = message[2] + self.queue_lock.release() + return (sender, message_type, last_part) + else: + self.queue_lock.release() + return None, None, None \ No newline at end of file diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/FredericksonAlgorithmAdvancedTesting.py b/Routing/FredericksonAlgorithmAdvanced/Experiments/FredericksonAlgorithmAdvancedTesting.py new file mode 100755 index 0000000000000000000000000000000000000000..90a3044cde9c406b6146bce4a14d0d676a6ffb3b --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/Experiments/FredericksonAlgorithmAdvancedTesting.py @@ -0,0 +1,80 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Channels import P2PFIFOPerfectChannel, Channel +import time +import matplotlib.pyplot as plt + +import networkx as nx +import numpy as np +from Routing.FredericksonAlgorithmAdvanced.Experiments.MachineLearningNodeComponent import MachineLearningNode +from Routing.FredericksonAlgorithmAdvanced.Experiments.ExperimentDataCollector import ExperimentCollector +edges = [(0, 1, {"weight": 1}), (0, 2, {"weight": 1}), (1, 3, {"weight": 1}), (2, 4, {"weight": 1}), (4, 5, {"weight": 1}), + (3, 5, {"weight": 1})] + +# undirected graph +def draw_random_graph(n): + """ + Draw a random graph with 2**i nodes, + and p=i/(2**i) + """ + k = True + while k == True: + k = False + g_random = nx.gnp_random_graph(n, 0.3) + if not nx.is_connected(g_random): + k = True + + nx.draw(g_random, node_size=20) + # for e in g_random.edges: + # print(f"{e}") + # plt.show() + # plt.close() + return g_random +import pickle +# network_graph, MESSAGE_COUNT, COMPLETION, route_table = pickle.load(open("Temp/51416.619156172.exp", "rb")) +NODE_COUNT = 40 +graph = draw_random_graph(NODE_COUNT) # nx.Graph() +experimenter = ExperimentCollector() +import math +l = len(graph.nodes) / math.sqrt(len(graph.edges)) +if int(l) == 0: + l = 1 +else: + l = int(l) + +experimenter.l_parameter = 1 +node_list = graph.nodes; +print(f"List : {node_list}") + +topology = Topology() +topology.construct_from_graph(graph, MachineLearningNode, P2PFIFOPerfectChannel) +# process1 = MachineLearningNode("MachineLearningNode", 0) +# ComponentRegistry().init() +# topology.plot() +# plt.show() +experimenter.network_graph = graph + + +topology.start() + +while True: + all_completed = True + + if not "INIT" in experimenter.COMPLETION: + all_completed = False + + if all_completed: + print(experimenter.network_graph) + print(experimenter.MESSAGE_COUNT) + print(experimenter.COMPLETION) + break + pass + +experimenter.storeResult() +lst = [] +for a in experimenter.route_table: + for k in a: + if not k in lst: + lst.append(k) +print(sorted(lst)) +print(len(lst) == NODE_COUNT) + diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/MachineLearningNodeComponent.py b/Routing/FredericksonAlgorithmAdvanced/Experiments/MachineLearningNodeComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..b2a59aa55cbe701359bf2d717f9caf8612e507e7 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/Experiments/MachineLearningNodeComponent.py @@ -0,0 +1,40 @@ +from Ahc import ComponentModel, Event, GenericMessage, ConnectorTypes, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Routing.FredericksonAlgorithmAdvanced.Experiments.ApplicationComponent import ApplicationComponent +from Routing.FredericksonAlgorithmAdvanced.Experiments.CoordinatorComponent import Coordinator +from Routing.FredericksonAlgorithmAdvanced.Experiments.FredericksonAlgorithmAdvancedComponent import FredericksonAlgorithmAdvancedComponent +from Routing.FredericksonAlgorithmAdvanced.Experiments.MiddlewareStubComponent import MiddlewareMessageStub + +# Encapsulator for the Application Node +class MachineLearningNode(ComponentModel): + def __init__(self, componentname, componentid): + super(MachineLearningNode, self).__init__(componentname, componentid) + self.Application = ApplicationComponent(ApplicationComponent.__name__, componentid) + self.Coordinator = Coordinator(Coordinator.__name__, componentid) + self.FrederickAlgorithmAdvancedComponent = FredericksonAlgorithmAdvancedComponent(FredericksonAlgorithmAdvancedComponent.__name__, componentid) + self.MiddlewareStub = MiddlewareMessageStub(MiddlewareMessageStub.__name__, componentid) + + # Application layer only talks with Coordinator, + # Coordinator coordinates all demands of the application by triggering other components if necessary... + self.Application.connect_me_to_component(ConnectorTypes.DOWN, self.Coordinator) + self.Coordinator.connect_me_to_component(ConnectorTypes.UP, self.Application) + self.Coordinator.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + + self.Coordinator.connect_me_to_component(ConnectorTypes.PEER, self.FrederickAlgorithmAdvancedComponent) + self.FrederickAlgorithmAdvancedComponent.connect_me_to_component(ConnectorTypes.PEER, self.Coordinator) + + self.FrederickAlgorithmAdvancedComponent.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.FrederickAlgorithmAdvancedComponent) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.Coordinator) + + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.DOWN, self) + self.connect_me_to_component(ConnectorTypes.UP, self.MiddlewareStub) + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + self.send_up(eventobj) # send incoming messages to upper components + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) # send incoming messages from upper components to a channel + diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/MiddlewareStubComponent.py b/Routing/FredericksonAlgorithmAdvanced/Experiments/MiddlewareStubComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..3285d3c0c0caca9115f1f7a1edce1488d81b987c --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/Experiments/MiddlewareStubComponent.py @@ -0,0 +1,23 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes +from Routing.FredericksonAlgorithmAdvanced.Experiments.ExperimentDataCollector import ExperimentCollector +class MiddlewareMessageStub(ComponentModel): + def __init__(self, componentname, componentid): + super(MiddlewareMessageStub, self).__init__(componentname, componentid) + pass + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "FredericksonAlgorithmAdvancedComponent" or message_target == "Coordinator": + self.send_up(eventobj) + + + def on_message_from_top(self, eventobj: Event): + if self.componentinstancenumber not in ExperimentCollector().MESSAGE_COUNT: + ExperimentCollector().MESSAGE_COUNT[self.componentinstancenumber] = 1 + else: + ExperimentCollector().MESSAGE_COUNT[self.componentinstancenumber] += 1 + self.send_down(eventobj) + diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10330.841530042.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10330.841530042.exp new file mode 100755 index 0000000000000000000000000000000000000000..adde1c4394e12b2719b36599f04bd3c294f441f9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10330.841530042.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10357.428869992.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10357.428869992.exp new file mode 100755 index 0000000000000000000000000000000000000000..e9ddf086d957057f1d8585183914a77881f1c00e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10357.428869992.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10370.350908581.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10370.350908581.exp new file mode 100755 index 0000000000000000000000000000000000000000..734b934217a76be45b3ad9a4cc61e94e70d333b9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10370.350908581.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10390.785733672.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10390.785733672.exp new file mode 100755 index 0000000000000000000000000000000000000000..b7a0fee23a8b1dba9d621c5787fad952d1dec19f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10390.785733672.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10408.778520205.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10408.778520205.exp new file mode 100755 index 0000000000000000000000000000000000000000..bd596d7a8211838e31da7668dee3e5d148369253 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10408.778520205.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10422.378380026.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10422.378380026.exp new file mode 100755 index 0000000000000000000000000000000000000000..9c0d108302e4a4e09e74dcce9ac2941357f1e24e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10422.378380026.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10436.007161348.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10436.007161348.exp new file mode 100755 index 0000000000000000000000000000000000000000..320a17a8f78915698be0ffc544d275d67893308a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10436.007161348.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10465.026122313.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10465.026122313.exp new file mode 100755 index 0000000000000000000000000000000000000000..27684c89c9298a149b16a35e900b83054eae50f0 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10465.026122313.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10478.097175924.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10478.097175924.exp new file mode 100755 index 0000000000000000000000000000000000000000..ff0b8d279d39f9a233d06f86f586989b1769059f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10478.097175924.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10498.612986184.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10498.612986184.exp new file mode 100755 index 0000000000000000000000000000000000000000..9539101a458671e5359dbc1e06aace7a8979f047 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10498.612986184.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10509.766782264.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10509.766782264.exp new file mode 100755 index 0000000000000000000000000000000000000000..a1809910253f1680c2a81c41a937bb25252910d1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10509.766782264.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10522.388727515.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10522.388727515.exp new file mode 100755 index 0000000000000000000000000000000000000000..1fd185821784c54eba3ee845bae3cfa9c9bdccfb Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10522.388727515.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10534.651994811.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10534.651994811.exp new file mode 100755 index 0000000000000000000000000000000000000000..2838cd61152f09f6560ec28bae7e230c34ebfca3 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10534.651994811.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10545.80770389.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10545.80770389.exp new file mode 100755 index 0000000000000000000000000000000000000000..6f3a20cd1b0ca942b913412b67e95df17b452984 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10545.80770389.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10565.05697271.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10565.05697271.exp new file mode 100755 index 0000000000000000000000000000000000000000..e1681d0019b3f9f99471cc2634ab793c0c9abcce Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10565.05697271.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10583.241195987.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10583.241195987.exp new file mode 100755 index 0000000000000000000000000000000000000000..f0ed8455623666ae9a07a68370483ffc319b1ef6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10583.241195987.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10599.758410788.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10599.758410788.exp new file mode 100755 index 0000000000000000000000000000000000000000..d747e787ce668a45f2bc6d373099049c74b42373 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10599.758410788.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10610.517360708.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10610.517360708.exp new file mode 100755 index 0000000000000000000000000000000000000000..dc4586e2b273c93cb9e93c5f8046b00dfea32f28 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10610.517360708.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10641.495916467.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10641.495916467.exp new file mode 100755 index 0000000000000000000000000000000000000000..415b0a6844290fbd4c84fdc87b60a12f07a029cf Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10641.495916467.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10654.609581659.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10654.609581659.exp new file mode 100755 index 0000000000000000000000000000000000000000..a177dbbd614ac24f43392cf45d324a597e96729f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10654.609581659.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10670.603120666.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10670.603120666.exp new file mode 100755 index 0000000000000000000000000000000000000000..49c780d884c76180fa41464c22474e9e4a95ebbb Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10670.603120666.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10690.505438636.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10690.505438636.exp new file mode 100755 index 0000000000000000000000000000000000000000..cedcc69fb2739c00fd299c76f12c48a9e90a93b7 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10690.505438636.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10705.281510549.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10705.281510549.exp new file mode 100755 index 0000000000000000000000000000000000000000..6c25c3599fa417b2c8bd099689378372dc92ed8c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10705.281510549.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10716.396889644.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10716.396889644.exp new file mode 100755 index 0000000000000000000000000000000000000000..8a682e377e303c69015ba54cb6118c74b55214a4 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10716.396889644.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10729.942768676.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10729.942768676.exp new file mode 100755 index 0000000000000000000000000000000000000000..23a0a0f485c8c2142c544592849d78b581470f45 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10729.942768676.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10747.087121993.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10747.087121993.exp new file mode 100755 index 0000000000000000000000000000000000000000..f1c1ccc3742a0e71e1a017c8e0a4ee7b0396a034 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10747.087121993.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10768.725424313.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10768.725424313.exp new file mode 100755 index 0000000000000000000000000000000000000000..a745ce74ef939ffb9a4011d62a8efa840bff49bd Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10768.725424313.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10779.512539603.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10779.512539603.exp new file mode 100755 index 0000000000000000000000000000000000000000..a02758524e18e1eaa9a5ccba544983004f6a8d86 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10779.512539603.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10799.135063493.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10799.135063493.exp new file mode 100755 index 0000000000000000000000000000000000000000..720fa353033fb3244525fc08668239c3607fec67 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10799.135063493.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10825.912881692.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10825.912881692.exp new file mode 100755 index 0000000000000000000000000000000000000000..c7053493eb0098dfa96e979a0c2f5570765853e6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10825.912881692.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10840.11700587.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10840.11700587.exp new file mode 100755 index 0000000000000000000000000000000000000000..d4ab6a5e6b8db7519f2e35674e6bf83b41f84d51 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10840.11700587.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10862.07292367.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10862.07292367.exp new file mode 100755 index 0000000000000000000000000000000000000000..6c3f2864c638053de375252dfe57edfa84bc78e1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10862.07292367.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10874.593038433.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10874.593038433.exp new file mode 100755 index 0000000000000000000000000000000000000000..b71a34bf159a9d53b75050a6777c5ca0a516fa97 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10874.593038433.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10910.416951363.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10910.416951363.exp new file mode 100755 index 0000000000000000000000000000000000000000..af2b6bdc830577aa8379d9e0d677abf1584eb46b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10910.416951363.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10927.093334745.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10927.093334745.exp new file mode 100755 index 0000000000000000000000000000000000000000..1742738310650ab9822e6549c30dd64314922d7c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10927.093334745.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10941.751720744.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10941.751720744.exp new file mode 100755 index 0000000000000000000000000000000000000000..9c4dad3c0c988ee6b88096966fe6be19676c5ba9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10941.751720744.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10956.464690691.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10956.464690691.exp new file mode 100755 index 0000000000000000000000000000000000000000..50e88aaeae73fbd2d87aa343eec8aeb7407157e9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10956.464690691.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10968.551411095.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10968.551411095.exp new file mode 100755 index 0000000000000000000000000000000000000000..cc982998a4d5404b25ed70705ab588646a7123c5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10968.551411095.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10988.49195979.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10988.49195979.exp new file mode 100755 index 0000000000000000000000000000000000000000..0b9779c70b329394f5810cc0f8960a20b7732fb3 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/10988.49195979.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11017.218683418.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11017.218683418.exp new file mode 100755 index 0000000000000000000000000000000000000000..d64c670f8edf6ca3bde6a1a9fe442d86c1106514 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11017.218683418.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11035.315333579.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11035.315333579.exp new file mode 100755 index 0000000000000000000000000000000000000000..e5536d364d4760038639f225db0e763f716b95e0 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11035.315333579.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11073.481545081.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11073.481545081.exp new file mode 100755 index 0000000000000000000000000000000000000000..0787a957140d5ab5c559f82eefd861ce93a09379 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11073.481545081.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11095.356790423.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11095.356790423.exp new file mode 100755 index 0000000000000000000000000000000000000000..170ea98be925de626a31df25b95fb777c3a34f1c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11095.356790423.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11132.269006325.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11132.269006325.exp new file mode 100755 index 0000000000000000000000000000000000000000..9a1a3a7ca4b072ccce6cedf2e8e24f82dd23de9c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11132.269006325.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11148.273941924.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11148.273941924.exp new file mode 100755 index 0000000000000000000000000000000000000000..f260620b798105c45bb15e29487fe1a29228ee51 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11148.273941924.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11168.126960234.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11168.126960234.exp new file mode 100755 index 0000000000000000000000000000000000000000..b9e86322f5fa37974107b092eb8d407c9152a296 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11168.126960234.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11187.732367164.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11187.732367164.exp new file mode 100755 index 0000000000000000000000000000000000000000..2993b0106a43c8c3cd12db53fd1cd0f7646adec1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11187.732367164.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11215.039778323.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11215.039778323.exp new file mode 100755 index 0000000000000000000000000000000000000000..b866c7580e32a733d647ebe5549039b14875d460 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11215.039778323.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11226.321918092.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11226.321918092.exp new file mode 100755 index 0000000000000000000000000000000000000000..1bc7779942233c1f730e42330c6ca63c791eb4ea Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11226.321918092.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11246.380460787.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11246.380460787.exp new file mode 100755 index 0000000000000000000000000000000000000000..90dafaf7c3ca0631315c6ca8b1d82cdfa5a7cb93 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11246.380460787.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11266.405459884.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11266.405459884.exp new file mode 100755 index 0000000000000000000000000000000000000000..7812592e0c7086c38c47f928d23ac885cf5193f1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11266.405459884.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11301.89441929.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11301.89441929.exp new file mode 100755 index 0000000000000000000000000000000000000000..3dff7edab6e055271fbe816759a33afbf7075c51 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11301.89441929.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11330.06608604.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11330.06608604.exp new file mode 100755 index 0000000000000000000000000000000000000000..a707e98d96d7f879072c22b156acb64eef213576 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11330.06608604.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11348.534804708.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11348.534804708.exp new file mode 100755 index 0000000000000000000000000000000000000000..c71764df9cbe84a1ee036e7b38f94a4c7d08137d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11348.534804708.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11368.180580068.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11368.180580068.exp new file mode 100755 index 0000000000000000000000000000000000000000..439483a67c46ebf5bc541258b68eb203104b08d0 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11368.180580068.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11390.496033161.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11390.496033161.exp new file mode 100755 index 0000000000000000000000000000000000000000..d52c904e4b57419b478e1c6e4c81ada4087bf564 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11390.496033161.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11410.98397206.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11410.98397206.exp new file mode 100755 index 0000000000000000000000000000000000000000..3e7f402cf2fb8b778db6cbbbb79fcce18939e48c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11410.98397206.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11439.186223703.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11439.186223703.exp new file mode 100755 index 0000000000000000000000000000000000000000..ecc48e83460dc862d8c36bc377d360e14168ec5e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11439.186223703.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11456.229759837.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11456.229759837.exp new file mode 100755 index 0000000000000000000000000000000000000000..434394e641ae161e182c6538cdf491115f6d433d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11456.229759837.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11482.019832974.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11482.019832974.exp new file mode 100755 index 0000000000000000000000000000000000000000..3f2c7dd62caf35628220f9138382a08ec9a44166 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11482.019832974.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11509.038107571.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11509.038107571.exp new file mode 100755 index 0000000000000000000000000000000000000000..4564b394c81aa4b7b6a054efc9a19c070cb6d8a2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11509.038107571.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11529.182842968.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11529.182842968.exp new file mode 100755 index 0000000000000000000000000000000000000000..d397c948fbd54dc59f5d2b646b15a1f5d2694b96 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11529.182842968.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11543.698679343.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11543.698679343.exp new file mode 100755 index 0000000000000000000000000000000000000000..a2225e53437830d359892108f0b03c56b9c0cee2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11543.698679343.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11569.513739614.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11569.513739614.exp new file mode 100755 index 0000000000000000000000000000000000000000..23b894176d120d5f258aa1e23401369244d48e5b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11569.513739614.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11597.65341503.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11597.65341503.exp new file mode 100755 index 0000000000000000000000000000000000000000..7b2bff40ca76cc7b729af20e7fb83ae467cf9e4d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11597.65341503.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11619.674078856.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11619.674078856.exp new file mode 100755 index 0000000000000000000000000000000000000000..f4a6678cbe9df8166e1a65a3f21146e8a3490b2f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11619.674078856.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11638.134923517.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11638.134923517.exp new file mode 100755 index 0000000000000000000000000000000000000000..0ded341d267d6779f390b2863b410ec43708e8fe Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11638.134923517.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11656.393784921.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11656.393784921.exp new file mode 100755 index 0000000000000000000000000000000000000000..dbdc5e041f4efd1f925e817ce6fadd1cf507d6dd Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11656.393784921.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11683.171434873.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11683.171434873.exp new file mode 100755 index 0000000000000000000000000000000000000000..e11881e7a3863ae0a23aea1ba5d30fa02a611fc0 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11683.171434873.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11704.958710844.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11704.958710844.exp new file mode 100755 index 0000000000000000000000000000000000000000..5813786647768442a07e4a6d1f8b06736216a0c2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/11704.958710844.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/51416.619156172.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/51416.619156172.exp new file mode 100755 index 0000000000000000000000000000000000000000..ff3c6495388729e9f5edf6eda75aa7aa75a6f7fd Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/51416.619156172.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5357.849172506.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5357.849172506.exp new file mode 100755 index 0000000000000000000000000000000000000000..b6fb011def2ffa6cb7cad6eae1971ec5f35b9d6b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5357.849172506.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5370.382545361.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5370.382545361.exp new file mode 100755 index 0000000000000000000000000000000000000000..fc8effb260ab958c963d4eb35e0be0fb3de83c5d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5370.382545361.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5387.521036597.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5387.521036597.exp new file mode 100755 index 0000000000000000000000000000000000000000..3f8235242f2aeeeb007685a384c706b37716487f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5387.521036597.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5406.121710978.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5406.121710978.exp new file mode 100755 index 0000000000000000000000000000000000000000..a6c6dc1556dbcb2702c65b4c83811aa9a8e663f7 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5406.121710978.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5418.655756255.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5418.655756255.exp new file mode 100755 index 0000000000000000000000000000000000000000..1e817e22413064ac1bdd652f80f694151217c67b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5418.655756255.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5435.165669396.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5435.165669396.exp new file mode 100755 index 0000000000000000000000000000000000000000..275021322871562132424dc88f5ebd95d08e310b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5435.165669396.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5453.297265702.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5453.297265702.exp new file mode 100755 index 0000000000000000000000000000000000000000..7f390ff5aa93949bca9215a5a582eb63e1ae8207 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5453.297265702.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5474.332542368.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5474.332542368.exp new file mode 100755 index 0000000000000000000000000000000000000000..d1fe870ea1d864e18ab58a9d7d6b6284f8688e7b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5474.332542368.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5493.876569186.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5493.876569186.exp new file mode 100755 index 0000000000000000000000000000000000000000..180b8a873379dece9cefefca97bd0b7b62154c03 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5493.876569186.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5521.221524981.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5521.221524981.exp new file mode 100755 index 0000000000000000000000000000000000000000..6e575413a125da6481f9c83d1cef82896ec4affd Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5521.221524981.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5540.960543981.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5540.960543981.exp new file mode 100755 index 0000000000000000000000000000000000000000..4a53be63c93d230bc3feff2c6389595f41989c9f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5540.960543981.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5554.950431465.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5554.950431465.exp new file mode 100755 index 0000000000000000000000000000000000000000..35a9e519ed13b34e66494fd5811f5636e87745f8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5554.950431465.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5569.37780737.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5569.37780737.exp new file mode 100755 index 0000000000000000000000000000000000000000..8743fd8984c2acc779747c9e0cb853f621bde537 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5569.37780737.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5609.041547442.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5609.041547442.exp new file mode 100755 index 0000000000000000000000000000000000000000..d4a644fad1cf7f6e607e75c9258421fcbb963427 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5609.041547442.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5636.847796653.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5636.847796653.exp new file mode 100755 index 0000000000000000000000000000000000000000..1233344063e44dc6ca43ddbe42b490f4aa0bb1fe Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5636.847796653.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5661.640342513.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5661.640342513.exp new file mode 100755 index 0000000000000000000000000000000000000000..9cb4bcd6794afc919a9466327aa0925590a77e97 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5661.640342513.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5696.079284426.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5696.079284426.exp new file mode 100755 index 0000000000000000000000000000000000000000..d9a5977f1a4d302fb615a51a59de9872741c901d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5696.079284426.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5726.861200815.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5726.861200815.exp new file mode 100755 index 0000000000000000000000000000000000000000..a05dc6688586c119b41b523331f83450a4df1310 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5726.861200815.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5742.369546854.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5742.369546854.exp new file mode 100755 index 0000000000000000000000000000000000000000..a042989e8729ff7e76eb52a1a177819c725d3cfb Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5742.369546854.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5773.894430017.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5773.894430017.exp new file mode 100755 index 0000000000000000000000000000000000000000..6479ca9db96b9a5ea8b840cd154c0ba844ffb920 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5773.894430017.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5798.241493049.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5798.241493049.exp new file mode 100755 index 0000000000000000000000000000000000000000..cd6e19e29cca168c202266573f375c18ab9eef4a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5798.241493049.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5833.046453465.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5833.046453465.exp new file mode 100755 index 0000000000000000000000000000000000000000..dc5d1eb3d1de26b898a1034ae9d33c89a129316e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5833.046453465.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5853.295760678.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5853.295760678.exp new file mode 100755 index 0000000000000000000000000000000000000000..d9fcd8a5ed4977edbfa68ff4bf6ce206ff354737 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5853.295760678.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5870.914635633.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5870.914635633.exp new file mode 100755 index 0000000000000000000000000000000000000000..5073c9f545c5c0339f55ad088fd5c2456ae4d50e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5870.914635633.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5890.384030064.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5890.384030064.exp new file mode 100755 index 0000000000000000000000000000000000000000..0ed285946adb9de30160d7fd7645df07980fd06e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5890.384030064.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5916.404543375.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5916.404543375.exp new file mode 100755 index 0000000000000000000000000000000000000000..9b05e84b00ae7e11ad271e7d15a245b5f922b18b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5916.404543375.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5934.443568984.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5934.443568984.exp new file mode 100755 index 0000000000000000000000000000000000000000..e704da5159137791cd6dde393362f0063f729066 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5934.443568984.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5954.094643034.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5954.094643034.exp new file mode 100755 index 0000000000000000000000000000000000000000..cea5d301da7d9dc61e233d2fb843b06c0e247b64 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5954.094643034.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5975.37653345.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5975.37653345.exp new file mode 100755 index 0000000000000000000000000000000000000000..ebbc1106bdae8b90479a84a89a3bd83f1ea70788 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5975.37653345.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5996.095436378.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5996.095436378.exp new file mode 100755 index 0000000000000000000000000000000000000000..3832209866215fd80f9687b296de22bf1db32c98 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/10Nodes(l=1)/5996.095436378.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13156.708476934.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13156.708476934.exp new file mode 100755 index 0000000000000000000000000000000000000000..369ad56807d640a5a7ce812ed4a0347085095432 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13156.708476934.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13230.024590402.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13230.024590402.exp new file mode 100755 index 0000000000000000000000000000000000000000..f7d6f411fc4628258a39214bbb5cd3f4eab48889 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13230.024590402.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13283.872560628.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13283.872560628.exp new file mode 100755 index 0000000000000000000000000000000000000000..2840c4fe9da70edcc5d55c27329cb0fc590a288f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13283.872560628.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13355.593566442.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13355.593566442.exp new file mode 100755 index 0000000000000000000000000000000000000000..21a886fdc4a78535b7800d6c385c9e07e3bb410e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13355.593566442.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13417.329371766.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13417.329371766.exp new file mode 100755 index 0000000000000000000000000000000000000000..f66dbf9bb3ad04a91e42fb3da35cef787e7041d8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13417.329371766.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13465.758808853.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13465.758808853.exp new file mode 100755 index 0000000000000000000000000000000000000000..11f74304502a04e798350edfbb3c79466478b56b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13465.758808853.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13521.860270241.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13521.860270241.exp new file mode 100755 index 0000000000000000000000000000000000000000..42d8977c87128794a720284b035e50bb054af600 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13521.860270241.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13576.407856427.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13576.407856427.exp new file mode 100755 index 0000000000000000000000000000000000000000..4d9c13ece8476d42f30feae42757a0320364cfd1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13576.407856427.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13625.018574054.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13625.018574054.exp new file mode 100755 index 0000000000000000000000000000000000000000..7bf00ded47f8319fa1370947999d590bd8673e2d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13625.018574054.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13681.951706743.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13681.951706743.exp new file mode 100755 index 0000000000000000000000000000000000000000..e82482073899760440e071a8e99676e9f42c7494 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13681.951706743.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13741.979515923.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13741.979515923.exp new file mode 100755 index 0000000000000000000000000000000000000000..fe11c285f375901d67314ef94fefdb5618a98416 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13741.979515923.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13796.008751203.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13796.008751203.exp new file mode 100755 index 0000000000000000000000000000000000000000..a461842d621bd6221828a1797930aebfd0620f55 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13796.008751203.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13841.815352077.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13841.815352077.exp new file mode 100755 index 0000000000000000000000000000000000000000..4ac6bb0a8c546f841cbdbc9cb9b957aebddd713f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13841.815352077.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13900.337868956.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13900.337868956.exp new file mode 100755 index 0000000000000000000000000000000000000000..5757d6902ddf0e45c1b93db289e048c84fd29c46 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13900.337868956.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13951.686535873.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13951.686535873.exp new file mode 100755 index 0000000000000000000000000000000000000000..226677126d3d73816dc9bec2d570094424d0ffb2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/13951.686535873.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14010.611236062.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14010.611236062.exp new file mode 100755 index 0000000000000000000000000000000000000000..d0ec169bcc6163b649fe0e777526269630b9e3d5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14010.611236062.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14080.752905616.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14080.752905616.exp new file mode 100755 index 0000000000000000000000000000000000000000..9fcd686ba2eda3f5b65423cdd434cf35904be6f7 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14080.752905616.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14144.909923212.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14144.909923212.exp new file mode 100755 index 0000000000000000000000000000000000000000..f5d1f3781396619d9b58344acce691890789886d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14144.909923212.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14193.8087217.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14193.8087217.exp new file mode 100755 index 0000000000000000000000000000000000000000..f3885c092ba4585e02874ef9b6a7a1c690dace04 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14193.8087217.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14250.614564844.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14250.614564844.exp new file mode 100755 index 0000000000000000000000000000000000000000..5e173824147a9fa091c8fa89444fa107eab64dc3 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14250.614564844.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14306.190589085.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14306.190589085.exp new file mode 100755 index 0000000000000000000000000000000000000000..fcbc4cd15e44f6832608ef4eca0aab44b0744cee Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14306.190589085.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14347.065431353.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14347.065431353.exp new file mode 100755 index 0000000000000000000000000000000000000000..f11e101d194e3e4e206152f27886e14ee79bd0a5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14347.065431353.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14386.733199981.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14386.733199981.exp new file mode 100755 index 0000000000000000000000000000000000000000..1c41a5a01c62b52daea2a228e1ffe196bede5cd4 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14386.733199981.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14440.329688405.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14440.329688405.exp new file mode 100755 index 0000000000000000000000000000000000000000..bc5da4fc20352b8baf6733ec7d5115e57e7fb49d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14440.329688405.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14492.611174146.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14492.611174146.exp new file mode 100755 index 0000000000000000000000000000000000000000..bcca26044c56c9fa707a7a2a17dffa987627d57d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14492.611174146.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14558.822801667.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14558.822801667.exp new file mode 100755 index 0000000000000000000000000000000000000000..4bd023386fa6d53e4279dfb908b73f74b2134bd4 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14558.822801667.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14612.193066417.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14612.193066417.exp new file mode 100755 index 0000000000000000000000000000000000000000..43711088deef77000778abdf9895ba6e8fd9bc08 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14612.193066417.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14656.838688783.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14656.838688783.exp new file mode 100755 index 0000000000000000000000000000000000000000..415907db0ccd56e693158d6f534dcb36a3ad98c1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14656.838688783.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14714.339116496.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14714.339116496.exp new file mode 100755 index 0000000000000000000000000000000000000000..0a8b438285cc67ff86a313e59520a84adeb57d81 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14714.339116496.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14769.017480142.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14769.017480142.exp new file mode 100755 index 0000000000000000000000000000000000000000..be8d12a477eabf1bf4a352e5f75da7a15ad6fa5a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14769.017480142.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14819.880790914.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14819.880790914.exp new file mode 100755 index 0000000000000000000000000000000000000000..0fc96c0846060cc8c768afd3cc733c0ac14f7607 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14819.880790914.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14873.798213768.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14873.798213768.exp new file mode 100755 index 0000000000000000000000000000000000000000..05f8cf0bd7a666c02a6f49462feb9c326babc275 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14873.798213768.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14946.706707941.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14946.706707941.exp new file mode 100755 index 0000000000000000000000000000000000000000..cc809448734792a60a13f9655c09b4a0e2b8de96 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/14946.706707941.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15000.073158473.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15000.073158473.exp new file mode 100755 index 0000000000000000000000000000000000000000..5dcb80ca2a95d0fd62205872e505c54b704b3d03 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15000.073158473.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15066.315780857.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15066.315780857.exp new file mode 100755 index 0000000000000000000000000000000000000000..971945757799911ae82e3f66684587c344fa5b0c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15066.315780857.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15149.935291034.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15149.935291034.exp new file mode 100755 index 0000000000000000000000000000000000000000..8de72fb98cef0fa91bf15ba92b79335a4e4e8d6f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15149.935291034.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15205.45799881.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15205.45799881.exp new file mode 100755 index 0000000000000000000000000000000000000000..6c6e55fff0c19fbcf958c6523a25fb198a8db738 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15205.45799881.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15267.811497409.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15267.811497409.exp new file mode 100755 index 0000000000000000000000000000000000000000..240bb8b41f505fe892bf156199d681beb7d8b030 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15267.811497409.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15316.214593053.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15316.214593053.exp new file mode 100755 index 0000000000000000000000000000000000000000..7ecbf575898e5f31fa7de324b3c1aa46abab886b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15316.214593053.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15368.801710616.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15368.801710616.exp new file mode 100755 index 0000000000000000000000000000000000000000..1b4dd68aa2dd5977cef99e2fcb2f7b91628b5336 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15368.801710616.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15435.753945358.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15435.753945358.exp new file mode 100755 index 0000000000000000000000000000000000000000..6c871fa5676dd000407cee575ddfa0502f74b10d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15435.753945358.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15493.323540737.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15493.323540737.exp new file mode 100755 index 0000000000000000000000000000000000000000..d06c0c960076edd7a8db7597ee2afaa4f59a3dea Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15493.323540737.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15546.73049859.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15546.73049859.exp new file mode 100755 index 0000000000000000000000000000000000000000..78c31651083b6616b7b1b037762bc0ae17d2fb26 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15546.73049859.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15605.566992984.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15605.566992984.exp new file mode 100755 index 0000000000000000000000000000000000000000..08f518099555871680c5cafe4dd0940813b0fc23 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15605.566992984.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15660.301859827.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15660.301859827.exp new file mode 100755 index 0000000000000000000000000000000000000000..0067a02ef57f36713ae5f35494907be57f7b4f84 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15660.301859827.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15716.83125758.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15716.83125758.exp new file mode 100755 index 0000000000000000000000000000000000000000..614a2aaeef68710aeafe855fcb1833de46cae8f9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15716.83125758.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15770.142993968.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15770.142993968.exp new file mode 100755 index 0000000000000000000000000000000000000000..92ad6f3855f73fdc886180d4749655a399bc1e30 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15770.142993968.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15830.628231058.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15830.628231058.exp new file mode 100755 index 0000000000000000000000000000000000000000..6d9843c98b5fbbf1a8d6476d063e53322e89ce5a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15830.628231058.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15889.72739371.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15889.72739371.exp new file mode 100755 index 0000000000000000000000000000000000000000..2a2d496a51de9a0ff03cb70afd373e9362c4c372 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15889.72739371.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15960.103982239.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15960.103982239.exp new file mode 100755 index 0000000000000000000000000000000000000000..e163ce0cf11e9d7d83ffb302219cc87b5fa17767 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/15960.103982239.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16028.879661593.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16028.879661593.exp new file mode 100755 index 0000000000000000000000000000000000000000..9f935b40784016296fa1798a5544926b6a549c6c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16028.879661593.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16093.828631951.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16093.828631951.exp new file mode 100755 index 0000000000000000000000000000000000000000..372f9a8e0d2101426a914e6d482e9651d0cb3186 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16093.828631951.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16144.714480961.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16144.714480961.exp new file mode 100755 index 0000000000000000000000000000000000000000..48201f35b7aea379240483682798e77b20954193 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16144.714480961.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16202.632559974.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16202.632559974.exp new file mode 100755 index 0000000000000000000000000000000000000000..f06cfa23330f6db6abb2685282e6c971b4548fe1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16202.632559974.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16253.902657593.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16253.902657593.exp new file mode 100755 index 0000000000000000000000000000000000000000..80a23c6e30005149793b2fb7ca7db4c395e119fd Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16253.902657593.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16297.20697877.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16297.20697877.exp new file mode 100755 index 0000000000000000000000000000000000000000..22d12c88290f41ce6ca4b601b167b4211b70774d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16297.20697877.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16357.551263582.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16357.551263582.exp new file mode 100755 index 0000000000000000000000000000000000000000..ec8b83a34e76aff6ab8fb6153c0d5248aa57baad Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16357.551263582.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16398.785772991.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16398.785772991.exp new file mode 100755 index 0000000000000000000000000000000000000000..c3c88b87ee89345e17e7b71490d36451298450b9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16398.785772991.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16448.484197806.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16448.484197806.exp new file mode 100755 index 0000000000000000000000000000000000000000..59593a3e2b62b5e852f784ed11da21b20fdcada6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16448.484197806.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16505.007000779.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16505.007000779.exp new file mode 100755 index 0000000000000000000000000000000000000000..ed5ed8e52b4f630ae2e035345d7e19791c4c37ae Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16505.007000779.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16561.72014117.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16561.72014117.exp new file mode 100755 index 0000000000000000000000000000000000000000..616c1a89f9556d560fb16ae7f529963587f78b96 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16561.72014117.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16619.400225694.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16619.400225694.exp new file mode 100755 index 0000000000000000000000000000000000000000..0e0907b045e11d16619700e936a7470f7be291f4 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16619.400225694.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16682.116687024.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16682.116687024.exp new file mode 100755 index 0000000000000000000000000000000000000000..741c8ed27640f0978bde4089c1a2cb75982c304a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16682.116687024.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16741.389850298.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16741.389850298.exp new file mode 100755 index 0000000000000000000000000000000000000000..b286a08a45ec258e23981cde2e685639a5a24442 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16741.389850298.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16792.102541287.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16792.102541287.exp new file mode 100755 index 0000000000000000000000000000000000000000..8bfa5362ec114967c257acb3d9c314861f88e619 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16792.102541287.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16844.963581644.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16844.963581644.exp new file mode 100755 index 0000000000000000000000000000000000000000..18885bd2a3cbea89b848780a42d740e3a76822af Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16844.963581644.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16884.461453701.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16884.461453701.exp new file mode 100755 index 0000000000000000000000000000000000000000..9b0d5176f09f3b5a1305d14a161646ba452c96ad Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16884.461453701.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16934.336730598.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16934.336730598.exp new file mode 100755 index 0000000000000000000000000000000000000000..1317a8c833ada949bec493458f76ef0405846f2c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16934.336730598.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16984.242693953.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16984.242693953.exp new file mode 100755 index 0000000000000000000000000000000000000000..30ec573398dce27622a0ddf468b6402e358ba9eb Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/16984.242693953.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/17034.418033107.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/17034.418033107.exp new file mode 100755 index 0000000000000000000000000000000000000000..5bd364c70e9b6ed11163cf2b6093bb4f378915d3 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/17034.418033107.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/17085.365831252.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/17085.365831252.exp new file mode 100755 index 0000000000000000000000000000000000000000..8f9f5f95e7538f57bd1c28b41cfb3aa87f5de4f5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/17085.365831252.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19783.693937621.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19783.693937621.exp new file mode 100755 index 0000000000000000000000000000000000000000..375d6d5c3c8b9ca5e56f79ea8d8565ece3bf7b43 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19783.693937621.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19836.956856474.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19836.956856474.exp new file mode 100755 index 0000000000000000000000000000000000000000..5c9838d1c5ee5e6ca444076b161017b67c98a1d4 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19836.956856474.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19889.239597938.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19889.239597938.exp new file mode 100755 index 0000000000000000000000000000000000000000..5da264af509b4d43455be96402ac3d7fd41cc4d6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19889.239597938.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19938.949362952.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19938.949362952.exp new file mode 100755 index 0000000000000000000000000000000000000000..f136e2f31742708b90fe1d6fb1abcdf431052ee4 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19938.949362952.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19988.363069948.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19988.363069948.exp new file mode 100755 index 0000000000000000000000000000000000000000..7d693c7801b77e337724b0c381da37a2df2f0e84 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/19988.363069948.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20042.381450193.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20042.381450193.exp new file mode 100755 index 0000000000000000000000000000000000000000..095bb971fe497974487ddd1cdc6656fb90171c13 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20042.381450193.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20096.157481891.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20096.157481891.exp new file mode 100755 index 0000000000000000000000000000000000000000..60d817fdac5f7c201dd9af8613edd78326492963 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20096.157481891.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20147.289283293.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20147.289283293.exp new file mode 100755 index 0000000000000000000000000000000000000000..fa31d88ca1b29f02d64024ebf7617fe4b2ad9ddd Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20147.289283293.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20202.087070159.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20202.087070159.exp new file mode 100755 index 0000000000000000000000000000000000000000..bee5ba621a28dcd694e07957d192dc06f34fcd36 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20202.087070159.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20256.705552222.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20256.705552222.exp new file mode 100755 index 0000000000000000000000000000000000000000..696862515349aed79c8ba7f88c3ddc73febe3de2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20256.705552222.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20322.610298185.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20322.610298185.exp new file mode 100755 index 0000000000000000000000000000000000000000..860f10c6a4cbdad918184dc32bc138cf454f34e3 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20322.610298185.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20377.961869177.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20377.961869177.exp new file mode 100755 index 0000000000000000000000000000000000000000..c5ebca8a77638efe32b28b76fe8400a82ed0a5c5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20377.961869177.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20429.173663592.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20429.173663592.exp new file mode 100755 index 0000000000000000000000000000000000000000..fc5a213f9bb37255c482d960890fe5763085c1da Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20429.173663592.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20475.611971821.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20475.611971821.exp new file mode 100755 index 0000000000000000000000000000000000000000..21663202c17a3f70a1ed0d1ba4564cab1a7652b8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20475.611971821.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20541.296064337.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20541.296064337.exp new file mode 100755 index 0000000000000000000000000000000000000000..1b49e5a12640a7afeff486d0dbe72b9e40be1c69 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20541.296064337.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20597.479929708.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20597.479929708.exp new file mode 100755 index 0000000000000000000000000000000000000000..dc58c884dbba0d0154ae07c3d40aee0a97a605ae Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20597.479929708.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20647.675448381.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20647.675448381.exp new file mode 100755 index 0000000000000000000000000000000000000000..a93c6e4c2fd5d0c09641eff483874e0edc855282 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20647.675448381.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20699.366661323.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20699.366661323.exp new file mode 100755 index 0000000000000000000000000000000000000000..92f2950596d1c912d11fcb73bcb429716c7c7312 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20699.366661323.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20751.33121208.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20751.33121208.exp new file mode 100755 index 0000000000000000000000000000000000000000..073cf601a63d0d7defd0350ee4f32c6debbda968 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20751.33121208.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20807.411007253.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20807.411007253.exp new file mode 100755 index 0000000000000000000000000000000000000000..83fde1bc1080ab4389cc7ac56517a21146834ebf Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20807.411007253.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20864.005677084.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20864.005677084.exp new file mode 100755 index 0000000000000000000000000000000000000000..ef1c4c2dd88abdd6099fc4da567c6a6241d647d1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20864.005677084.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20912.566512459.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20912.566512459.exp new file mode 100755 index 0000000000000000000000000000000000000000..ff5cf9f9794de45520f064aa179d44b48d5683d6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20912.566512459.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20952.967626271.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20952.967626271.exp new file mode 100755 index 0000000000000000000000000000000000000000..63012a5883bf4667c351b5d50d196970e3022aaf Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/20952.967626271.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21016.416222792.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21016.416222792.exp new file mode 100755 index 0000000000000000000000000000000000000000..83ff2616e4e0a1390464a69b4c1565bb0e723944 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21016.416222792.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21076.336547775.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21076.336547775.exp new file mode 100755 index 0000000000000000000000000000000000000000..46a454338426e26712f37981ffa2048203cc49b0 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21076.336547775.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21129.216546179.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21129.216546179.exp new file mode 100755 index 0000000000000000000000000000000000000000..e0df2bae1cf551d7a43f2189e64c4c43d7220db9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21129.216546179.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21181.629712696.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21181.629712696.exp new file mode 100755 index 0000000000000000000000000000000000000000..6e623554b42252e738d7618d30c08aa35661db28 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21181.629712696.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21246.939674963.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21246.939674963.exp new file mode 100755 index 0000000000000000000000000000000000000000..967010576bc8a7a9c18f3e2b03b02942339883a2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21246.939674963.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21311.138765757.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21311.138765757.exp new file mode 100755 index 0000000000000000000000000000000000000000..88406a8612fef536c4605a86b9274614c9643fd3 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21311.138765757.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21375.728804778.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21375.728804778.exp new file mode 100755 index 0000000000000000000000000000000000000000..c1de2733adf3e035c0c550324a84cd6672ebd37a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/20Nodes(l=1)/21375.728804778.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/23834.479950069.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/23834.479950069.exp new file mode 100755 index 0000000000000000000000000000000000000000..ad6e0a25ae2792ca185a7be12a6a7c9397a02045 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/23834.479950069.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/24790.258181484.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/24790.258181484.exp new file mode 100755 index 0000000000000000000000000000000000000000..af7424db56919e9732b6cdf032481889bb8eab54 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/24790.258181484.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/24919.904489867.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/24919.904489867.exp new file mode 100755 index 0000000000000000000000000000000000000000..4c8641e3895cc315551fc587d419d481884fd621 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/24919.904489867.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25034.652846152.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25034.652846152.exp new file mode 100755 index 0000000000000000000000000000000000000000..323126a910989f9e6dd0c8ce0387da9c91243e1f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25034.652846152.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25167.395470885.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25167.395470885.exp new file mode 100755 index 0000000000000000000000000000000000000000..78df98cc07d8f8755ef169ea4062e82b9a5a6ada Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25167.395470885.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25315.098948819.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25315.098948819.exp new file mode 100755 index 0000000000000000000000000000000000000000..f422582854ea57177b11bb988880ddf1969a8795 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25315.098948819.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25479.699923319.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25479.699923319.exp new file mode 100755 index 0000000000000000000000000000000000000000..43c3d174f8d27bd4b7737c65983e138346977e75 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25479.699923319.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25621.291452227.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25621.291452227.exp new file mode 100755 index 0000000000000000000000000000000000000000..f63b7e875c1f4a1abff4b979351b1b38bd81c5f6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25621.291452227.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25742.495844701.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25742.495844701.exp new file mode 100755 index 0000000000000000000000000000000000000000..5f3c2502f2e4d297c3b8d410ab4a8c1e3dd82374 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25742.495844701.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25876.443400817.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25876.443400817.exp new file mode 100755 index 0000000000000000000000000000000000000000..41ec179411065d049c95628c39d1882ebb26ce5c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/25876.443400817.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26014.002456162.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26014.002456162.exp new file mode 100755 index 0000000000000000000000000000000000000000..1efab5cf9e9023695d31942bf852aeee8608e663 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26014.002456162.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26151.719240532.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26151.719240532.exp new file mode 100755 index 0000000000000000000000000000000000000000..302bf9a9bbee4ade20f1920e9bf06de878460a9f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26151.719240532.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26294.340178367.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26294.340178367.exp new file mode 100755 index 0000000000000000000000000000000000000000..99dd4e59bbc91d45bdf5f7c09d6c6a6724ff3723 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26294.340178367.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26415.259298082.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26415.259298082.exp new file mode 100755 index 0000000000000000000000000000000000000000..0fc975b270231e3ecac3a9052a9e1f56a129e94b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26415.259298082.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26587.835023052.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26587.835023052.exp new file mode 100755 index 0000000000000000000000000000000000000000..259d8f0b18573e6bc5ff828c5e3abdb054beda5b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26587.835023052.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26714.832617525.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26714.832617525.exp new file mode 100755 index 0000000000000000000000000000000000000000..9a0cbe834d492510e9e41895387df86d84c8b2b1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26714.832617525.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26843.126734673.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26843.126734673.exp new file mode 100755 index 0000000000000000000000000000000000000000..b2ff3332a0d68d9bb4596ec2af547773f8bd0eb4 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26843.126734673.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26955.412744439.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26955.412744439.exp new file mode 100755 index 0000000000000000000000000000000000000000..53c6f9b3b19e9e587ef768cd93f722c751522765 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/26955.412744439.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27114.11514903.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27114.11514903.exp new file mode 100755 index 0000000000000000000000000000000000000000..ac7f0a2d96d0355ca74e90267836a9f8aded5778 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27114.11514903.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27260.844027736.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27260.844027736.exp new file mode 100755 index 0000000000000000000000000000000000000000..461902f0316daed87b2d0a4e9c4b70dd7c1bf78f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27260.844027736.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27426.738245372.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27426.738245372.exp new file mode 100755 index 0000000000000000000000000000000000000000..8dcbb2c5bae582563dab261b729d905ede460927 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27426.738245372.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27555.803961573.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27555.803961573.exp new file mode 100755 index 0000000000000000000000000000000000000000..deb320870b7ea396e7b21f1aff891950455053d6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27555.803961573.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27703.437703891.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27703.437703891.exp new file mode 100755 index 0000000000000000000000000000000000000000..24ad820eb00e7881d4ee55504c25cec1d925bf5c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27703.437703891.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27845.353349473.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27845.353349473.exp new file mode 100755 index 0000000000000000000000000000000000000000..1e4b95a325b0a2d82b8a841ec557de975441bcd5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/27845.353349473.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28057.601236862.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28057.601236862.exp new file mode 100755 index 0000000000000000000000000000000000000000..4a0fe4dd0898669f18bf0ebf6d2bfe06be43357d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28057.601236862.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28238.420642136.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28238.420642136.exp new file mode 100755 index 0000000000000000000000000000000000000000..288090d70b40665a1e44114a6e4dfc8a7c043755 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28238.420642136.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28422.113597002.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28422.113597002.exp new file mode 100755 index 0000000000000000000000000000000000000000..4ee477da9567816ab6d16ee6597d16f23da34406 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28422.113597002.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28592.277990579.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28592.277990579.exp new file mode 100755 index 0000000000000000000000000000000000000000..df816ee9351ee03b25bdd560c2d5f5e267706519 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28592.277990579.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28752.122338652.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28752.122338652.exp new file mode 100755 index 0000000000000000000000000000000000000000..7b1ce51b9491c97d972006bc8ea40fee22defb0a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28752.122338652.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28894.953948062.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28894.953948062.exp new file mode 100755 index 0000000000000000000000000000000000000000..1f66934a4dfea83314a0c8f17f59808a63ea993b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/28894.953948062.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/29096.898272671.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/29096.898272671.exp new file mode 100755 index 0000000000000000000000000000000000000000..9f5b374b1edd9f44385a0a6e87d3aa365357b88e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/29096.898272671.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/30705.53845121.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/30705.53845121.exp new file mode 100755 index 0000000000000000000000000000000000000000..187deb583b9742f4dc400bfe2ae167b68197b16e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/30705.53845121.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/30893.853868455.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/30893.853868455.exp new file mode 100755 index 0000000000000000000000000000000000000000..f99eecb5f804f5a2cca11a9da4c5bb0ead26a4d8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/30893.853868455.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31119.886347249.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31119.886347249.exp new file mode 100755 index 0000000000000000000000000000000000000000..eece39789fe0337de9fed9a3ce18d8e44449ff76 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31119.886347249.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31309.705018504.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31309.705018504.exp new file mode 100755 index 0000000000000000000000000000000000000000..138d15a2b4eb3c73f6df76e71c1a5f87570d4db2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31309.705018504.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31535.308337412.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31535.308337412.exp new file mode 100755 index 0000000000000000000000000000000000000000..ecc00f743b1df12049fe5d4bf699efcd36a94b6a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31535.308337412.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31756.160968144.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31756.160968144.exp new file mode 100755 index 0000000000000000000000000000000000000000..0ba29536ee6447d0ae57a58b319651f2a44ca91b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31756.160968144.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31931.497103482.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31931.497103482.exp new file mode 100755 index 0000000000000000000000000000000000000000..7a59cad951cc9aed8f9e582b78d3a720c61649d8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/31931.497103482.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32144.42529304.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32144.42529304.exp new file mode 100755 index 0000000000000000000000000000000000000000..2240dc4549e4a22ecde68c24b1e0c4c7c0a1693c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32144.42529304.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32342.550388649.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32342.550388649.exp new file mode 100755 index 0000000000000000000000000000000000000000..e3776fcadb2f9ce6cc09aff53c1be888b72fb3a2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32342.550388649.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32566.979747084.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32566.979747084.exp new file mode 100755 index 0000000000000000000000000000000000000000..83de1cf277a52b957b1d86aeaa8b55f3f6c6a938 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32566.979747084.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32745.830801255.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32745.830801255.exp new file mode 100755 index 0000000000000000000000000000000000000000..0572fe0e9da0cc0cebf6d566be6c3260b94c882f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32745.830801255.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32936.223987766.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32936.223987766.exp new file mode 100755 index 0000000000000000000000000000000000000000..9416536bf38d7dbefd05dd61a20ba01363ded136 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/32936.223987766.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33103.364228547.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33103.364228547.exp new file mode 100755 index 0000000000000000000000000000000000000000..33d6cd7fc2256519114e09a9a65fed892d9fa2c5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33103.364228547.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33326.361583612.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33326.361583612.exp new file mode 100755 index 0000000000000000000000000000000000000000..81b4bef7dc5b66dc3ebd34c972834b9c144707b8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33326.361583612.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33518.135767976.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33518.135767976.exp new file mode 100755 index 0000000000000000000000000000000000000000..976ba42df939674078c9bcac9ce7272bb2a4f587 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33518.135767976.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33698.886424478.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33698.886424478.exp new file mode 100755 index 0000000000000000000000000000000000000000..fab1b0869e90557bd02d00416847ad441d90359a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33698.886424478.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33934.151359533.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33934.151359533.exp new file mode 100755 index 0000000000000000000000000000000000000000..00885d0c9dc76a136e7d061fe7b3e88b79929047 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/33934.151359533.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34108.405968301.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34108.405968301.exp new file mode 100755 index 0000000000000000000000000000000000000000..f97d0d1add55a71bc0090dd7b07749644ee1f330 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34108.405968301.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34335.229029692.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34335.229029692.exp new file mode 100755 index 0000000000000000000000000000000000000000..7f0d8f86f0e3c8b3d4d53d3884adf3b280d5cfec Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34335.229029692.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34523.196043531.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34523.196043531.exp new file mode 100755 index 0000000000000000000000000000000000000000..97bec0373b1bf7af829402f047cf15f259b4fd31 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34523.196043531.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34695.829522127.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34695.829522127.exp new file mode 100755 index 0000000000000000000000000000000000000000..bc55d9c6c3d8ae1d415b31c65e568f04e702af12 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34695.829522127.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34941.784327946.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34941.784327946.exp new file mode 100755 index 0000000000000000000000000000000000000000..275614e75456f2f7e00ab1ea6fa080cd681b14d5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/34941.784327946.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35117.031575901.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35117.031575901.exp new file mode 100755 index 0000000000000000000000000000000000000000..e9718319e9dd50b796d3ae537a294a3c114faed4 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35117.031575901.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35300.169320189.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35300.169320189.exp new file mode 100755 index 0000000000000000000000000000000000000000..c6cf8a31342ee703dda5290f0adf09aef82ba140 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35300.169320189.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35495.502850246.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35495.502850246.exp new file mode 100755 index 0000000000000000000000000000000000000000..81551096d9b4169e7daabfaf6fe0de7a6146da83 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35495.502850246.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35678.119088623.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35678.119088623.exp new file mode 100755 index 0000000000000000000000000000000000000000..73e4d449e8090a1464be3869bf23245f057a35d1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35678.119088623.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35851.634043865.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35851.634043865.exp new file mode 100755 index 0000000000000000000000000000000000000000..11b63603760f0c5510c0c33c7e6ac89cfb3d5e62 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/35851.634043865.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/36021.943851546.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/36021.943851546.exp new file mode 100755 index 0000000000000000000000000000000000000000..94828dec4d7ff5a0e39c80f0d7d20fed58b2b740 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/36021.943851546.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/36222.109388545.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/36222.109388545.exp new file mode 100755 index 0000000000000000000000000000000000000000..96106ae6c82a628c154b387e429299707aed3572 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/36222.109388545.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/36409.619211912.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/36409.619211912.exp new file mode 100755 index 0000000000000000000000000000000000000000..10eec8d9f1aee440d11f0ef847547c1684a7ece8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/36409.619211912.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/38746.001878841.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/38746.001878841.exp new file mode 100755 index 0000000000000000000000000000000000000000..af393484af33c6144aa18f27bfcd248c09578f07 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/38746.001878841.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/38871.366466125.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/38871.366466125.exp new file mode 100755 index 0000000000000000000000000000000000000000..8e87bb8c52a751ff88288e2c5f1637c2050e1438 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/38871.366466125.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/38996.300873264.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/38996.300873264.exp new file mode 100755 index 0000000000000000000000000000000000000000..a8baf899f4a04eb76cef731fdb340224ae92aaac Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/38996.300873264.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39114.723637971.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39114.723637971.exp new file mode 100755 index 0000000000000000000000000000000000000000..42f2d4844a4d09c675168005e823d8ffbed16325 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39114.723637971.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39239.493229321.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39239.493229321.exp new file mode 100755 index 0000000000000000000000000000000000000000..f77aff462b27b895330b5e6c1cf223f670709a0b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39239.493229321.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39379.812822899.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39379.812822899.exp new file mode 100755 index 0000000000000000000000000000000000000000..b8afc1ef4684632ae717856ff24e62c251d10f94 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39379.812822899.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39504.4794203.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39504.4794203.exp new file mode 100755 index 0000000000000000000000000000000000000000..8c0de2569231ceb64344c71955cfea1369cd23dc Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39504.4794203.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39640.99339542.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39640.99339542.exp new file mode 100755 index 0000000000000000000000000000000000000000..9c9609529fa87d24a95aa298a2af7c00162e654b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39640.99339542.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39777.979113251.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39777.979113251.exp new file mode 100755 index 0000000000000000000000000000000000000000..7b7861bfbcc544747c95c344682e9915a1e949e0 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39777.979113251.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39926.520659718.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39926.520659718.exp new file mode 100755 index 0000000000000000000000000000000000000000..3354719369140dfceec0c548e4c48447e93210e4 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/39926.520659718.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40083.119982865.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40083.119982865.exp new file mode 100755 index 0000000000000000000000000000000000000000..b5b107c0729d37df203d2dfde9197731f8e3980b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40083.119982865.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40211.811092216.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40211.811092216.exp new file mode 100755 index 0000000000000000000000000000000000000000..a8e52c722c0ea2d4762f91bee93283366b058e16 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40211.811092216.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40340.007051021.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40340.007051021.exp new file mode 100755 index 0000000000000000000000000000000000000000..0c92d903c586c1709d01af89402574192307195e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40340.007051021.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40457.587720762.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40457.587720762.exp new file mode 100755 index 0000000000000000000000000000000000000000..2cd5e1e3b97c1560c017824c16a7709b403657d2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40457.587720762.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40608.390956745.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40608.390956745.exp new file mode 100755 index 0000000000000000000000000000000000000000..daf653ab5c71c69f7877a59ec5e3f456b9de1a8c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40608.390956745.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40732.731459245.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40732.731459245.exp new file mode 100755 index 0000000000000000000000000000000000000000..f9d3ad4bc9cd078058c4fd5876efca47783967aa Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40732.731459245.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40876.215215556.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40876.215215556.exp new file mode 100755 index 0000000000000000000000000000000000000000..43e24cf8a0647f14caafabe74a312628a8035d0a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/40876.215215556.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41009.198771658.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41009.198771658.exp new file mode 100755 index 0000000000000000000000000000000000000000..bffab3bd96be3d842174c2cf4e9a4b97a9aaeb79 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41009.198771658.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41142.538248955.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41142.538248955.exp new file mode 100755 index 0000000000000000000000000000000000000000..86f0c94707674034ec9ad4f96fa1636a74f337b8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41142.538248955.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41309.11315253.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41309.11315253.exp new file mode 100755 index 0000000000000000000000000000000000000000..18d99e4584a400d15098658980dceaba09c044d5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41309.11315253.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41439.610408576.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41439.610408576.exp new file mode 100755 index 0000000000000000000000000000000000000000..1483df2aa7deee9150ff72007a0a80f5afdfb01c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41439.610408576.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41566.382178565.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41566.382178565.exp new file mode 100755 index 0000000000000000000000000000000000000000..ba6dcaad67d45381b686f914eaa242a12da12862 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41566.382178565.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41702.518706252.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41702.518706252.exp new file mode 100755 index 0000000000000000000000000000000000000000..556356a269b0e243758aca3a4387fe237abc1e57 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41702.518706252.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41813.413483661.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41813.413483661.exp new file mode 100755 index 0000000000000000000000000000000000000000..3e7bf218c4e451e5249426794bc2e0241640ddd7 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41813.413483661.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41940.656815855.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41940.656815855.exp new file mode 100755 index 0000000000000000000000000000000000000000..d8914f0f2a40592e997ea678ea4f0689618e37b8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/41940.656815855.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42089.521773307.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42089.521773307.exp new file mode 100755 index 0000000000000000000000000000000000000000..56265885f2465c9742fa85f0a83b835de928f345 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42089.521773307.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42221.623515614.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42221.623515614.exp new file mode 100755 index 0000000000000000000000000000000000000000..57285f0699ae8dee830cf8fade6d5c6d72d940b9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42221.623515614.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42349.056920156.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42349.056920156.exp new file mode 100755 index 0000000000000000000000000000000000000000..49c7c59e6a5822f31728f3daaaaab535ac5bb4d2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42349.056920156.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42499.114498562.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42499.114498562.exp new file mode 100755 index 0000000000000000000000000000000000000000..c0f3b4c724485bc156c6439940a42be3516c31b1 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42499.114498562.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42649.277057778.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42649.277057778.exp new file mode 100755 index 0000000000000000000000000000000000000000..f7ddfc221021745a27d9f5bd64892ea747d00743 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42649.277057778.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42780.535407076.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42780.535407076.exp new file mode 100755 index 0000000000000000000000000000000000000000..f32a2a577a93f4b7d8986253b07146c9bb164eac Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42780.535407076.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42940.950729069.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42940.950729069.exp new file mode 100755 index 0000000000000000000000000000000000000000..3393fd38f73ff7225287a364e6b386b98aa02b1e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/42940.950729069.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43121.945473709.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43121.945473709.exp new file mode 100755 index 0000000000000000000000000000000000000000..e859918323e53650e3b8c428ef1381ccd026c836 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43121.945473709.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43266.798484629.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43266.798484629.exp new file mode 100755 index 0000000000000000000000000000000000000000..bf1063caea19f82420a8afa25bc8b28d27b3e2ff Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43266.798484629.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43424.151504973.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43424.151504973.exp new file mode 100755 index 0000000000000000000000000000000000000000..e84999f0cedd1abc4d7fa4453ddb2a4e7052db47 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43424.151504973.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43561.427636176.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43561.427636176.exp new file mode 100755 index 0000000000000000000000000000000000000000..526366da47885caea674b2c03680c01a9257f016 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43561.427636176.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43691.254444971.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43691.254444971.exp new file mode 100755 index 0000000000000000000000000000000000000000..aba2ecaf7ab7ae5c15d85a3a662653233003846d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43691.254444971.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43861.270243035.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43861.270243035.exp new file mode 100755 index 0000000000000000000000000000000000000000..2345be1849b11aeb7c8943141e14c1978ae94c62 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43861.270243035.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43976.706302091.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43976.706302091.exp new file mode 100755 index 0000000000000000000000000000000000000000..4e3ded18aa06c6800468814dd4f79a3862c92f9f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/43976.706302091.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/44119.897251604.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/44119.897251604.exp new file mode 100755 index 0000000000000000000000000000000000000000..475254412a53f996640dcb97b789e46bbfdf3940 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/30Nodes(l=1)/44119.897251604.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/10971.610308488.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/10971.610308488.exp new file mode 100755 index 0000000000000000000000000000000000000000..ba6328afb6ba9649b5f1ae6ea7cb57a097d2c562 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/10971.610308488.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/11228.279316094.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/11228.279316094.exp new file mode 100755 index 0000000000000000000000000000000000000000..be85e78afcb9052f1bd552b24810fe65673fadbf Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/11228.279316094.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/11571.04542052.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/11571.04542052.exp new file mode 100755 index 0000000000000000000000000000000000000000..6e5549eddfe2cd2d991625627cef8da669725603 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/11571.04542052.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/11867.12410428.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/11867.12410428.exp new file mode 100755 index 0000000000000000000000000000000000000000..7a16f478ccba8aa802d6c5de71bfa72a94640b26 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/11867.12410428.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12124.95459232.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12124.95459232.exp new file mode 100755 index 0000000000000000000000000000000000000000..f65e9d2e7e004c88a19aa27f8f476675f3a1ec17 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12124.95459232.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12426.539327297.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12426.539327297.exp new file mode 100755 index 0000000000000000000000000000000000000000..7a9144c5bc15fdd8c69f04c3b8a3eefa7a34fe8f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12426.539327297.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12686.764456565.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12686.764456565.exp new file mode 100755 index 0000000000000000000000000000000000000000..57ef9b1e74e89e6cab3515678d19e77e3cb537ad Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12686.764456565.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12976.672422798.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12976.672422798.exp new file mode 100755 index 0000000000000000000000000000000000000000..a0125118d76e6926a3fbc5b129416dcb220c13cb Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/12976.672422798.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/13279.881521893.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/13279.881521893.exp new file mode 100755 index 0000000000000000000000000000000000000000..a1f194cb422ee9d67c9f2f626ef29f256fc33a8f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/13279.881521893.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/13593.990608072.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/13593.990608072.exp new file mode 100755 index 0000000000000000000000000000000000000000..5b9e31fd6b389778bd2d295b34b5356bb5f2a68b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/13593.990608072.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/13844.736624032.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/13844.736624032.exp new file mode 100755 index 0000000000000000000000000000000000000000..4959dfb8c950786a84496cb9b42da0c2967bfc23 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/13844.736624032.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14096.82221148.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14096.82221148.exp new file mode 100755 index 0000000000000000000000000000000000000000..a8a8ac278c86ef443d2538a1e0bf46f32334fb71 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14096.82221148.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14347.110381079.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14347.110381079.exp new file mode 100755 index 0000000000000000000000000000000000000000..554b8625fc3825484416f4455c07d0823971164c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14347.110381079.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14638.189074268.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14638.189074268.exp new file mode 100755 index 0000000000000000000000000000000000000000..9cd9398685a5be2e3458623782fa01690d7f64c5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14638.189074268.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14917.396255183.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14917.396255183.exp new file mode 100755 index 0000000000000000000000000000000000000000..d52d3fc036926ad035faf2afd97bb1e7bd050833 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/14917.396255183.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15207.877618151.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15207.877618151.exp new file mode 100755 index 0000000000000000000000000000000000000000..22f6133bce0fe6c68c7e7b7afb53c49962c8ae6d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15207.877618151.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15486.652743284.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15486.652743284.exp new file mode 100755 index 0000000000000000000000000000000000000000..ce9d7041ed3689538ac0fa00e5fc50b2945e5f7a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15486.652743284.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15719.207521817.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15719.207521817.exp new file mode 100755 index 0000000000000000000000000000000000000000..20c586b272c7bb43ce5052c0e0e75db7aa5cbf59 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15719.207521817.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15986.101497756.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15986.101497756.exp new file mode 100755 index 0000000000000000000000000000000000000000..e96698b411b7059197de2a7cd76e4c303469223c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/15986.101497756.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/16239.063525795.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/16239.063525795.exp new file mode 100755 index 0000000000000000000000000000000000000000..543ace27e2b91df3e03e3648992b9d5e86c8e4a4 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/16239.063525795.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/16496.937673207.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/16496.937673207.exp new file mode 100755 index 0000000000000000000000000000000000000000..99540640f79d39c73275d8b8951771b6f702aa89 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/16496.937673207.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/16829.505202902.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/16829.505202902.exp new file mode 100755 index 0000000000000000000000000000000000000000..206a051aaa66ac0b7e03fd914e02a577afbbaf99 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/16829.505202902.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17081.098402885.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17081.098402885.exp new file mode 100755 index 0000000000000000000000000000000000000000..9f4a4139798673734445b392e994abb0f89fb6db Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17081.098402885.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17361.526316162.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17361.526316162.exp new file mode 100755 index 0000000000000000000000000000000000000000..3edfc540e37ba1c168e7e9d69b2da7a0d4bcd47f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17361.526316162.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17616.528584523.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17616.528584523.exp new file mode 100755 index 0000000000000000000000000000000000000000..fb0c43cde92c14070241f755bd710611a0cba070 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17616.528584523.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17951.50987362.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17951.50987362.exp new file mode 100755 index 0000000000000000000000000000000000000000..10baf6dc0eaa32f7487e21be11b0d858d328fb0d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/17951.50987362.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/18240.898242208.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/18240.898242208.exp new file mode 100755 index 0000000000000000000000000000000000000000..7f7ba8db06bf3344e5c04882498aff2422d86d11 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/18240.898242208.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/18552.237839927.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/18552.237839927.exp new file mode 100755 index 0000000000000000000000000000000000000000..7efc792bb6bffd22f76329bf613ee05e3c95dee6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/18552.237839927.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/18835.088132791.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/18835.088132791.exp new file mode 100755 index 0000000000000000000000000000000000000000..7d5261960bcfca42037ce5a2c551a9311c95ad30 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/18835.088132791.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19149.558959364.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19149.558959364.exp new file mode 100755 index 0000000000000000000000000000000000000000..869166882daabf9a2354659246c1067958fb9cb8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19149.558959364.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19421.806461079.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19421.806461079.exp new file mode 100755 index 0000000000000000000000000000000000000000..55495b9805a15d978fdd24a644d873323929c8d0 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19421.806461079.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19711.224565706.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19711.224565706.exp new file mode 100755 index 0000000000000000000000000000000000000000..362cf61e90f4ba4b283edd0fb8d9b472e83a4c92 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19711.224565706.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19972.603674671.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19972.603674671.exp new file mode 100755 index 0000000000000000000000000000000000000000..3f81a6cc5c2432adde3b7ba895e31e4ede2cc93c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/19972.603674671.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/20283.474358858.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/20283.474358858.exp new file mode 100755 index 0000000000000000000000000000000000000000..a9a0e2ca4d73a962223fb827700b77fdc1d93f3d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/20283.474358858.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/20581.311871989.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/20581.311871989.exp new file mode 100755 index 0000000000000000000000000000000000000000..b5bf2142919345b1f4ee82636f62710c84aa0788 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/20581.311871989.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/20926.26186081.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/20926.26186081.exp new file mode 100755 index 0000000000000000000000000000000000000000..444de1109160554f9857913119fcd21fb7776420 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/20926.26186081.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/21192.511212675.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/21192.511212675.exp new file mode 100755 index 0000000000000000000000000000000000000000..65e290555a00a0619a527d9bc787dbb5d6de97dc Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/21192.511212675.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/21432.082106455.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/21432.082106455.exp new file mode 100755 index 0000000000000000000000000000000000000000..2f17c3c415177e754514b73e00a263a91e11408d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/21432.082106455.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/21768.71329065.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/21768.71329065.exp new file mode 100755 index 0000000000000000000000000000000000000000..3fc7cce772a8da23d830b599c0d179c85e3e1173 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/21768.71329065.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/22112.128234621.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/22112.128234621.exp new file mode 100755 index 0000000000000000000000000000000000000000..3b2ba06d1a8b428d40bc5f04353d276b50b8c60c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/22112.128234621.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/27767.195889303.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/27767.195889303.exp new file mode 100755 index 0000000000000000000000000000000000000000..584b535ba70ca689e91ded0599ccea5163682039 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/27767.195889303.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/33679.737799477.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/33679.737799477.exp new file mode 100755 index 0000000000000000000000000000000000000000..e04f6a050b333f1052466f945533ae3d9a9f6611 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/33679.737799477.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34042.007517545.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34042.007517545.exp new file mode 100755 index 0000000000000000000000000000000000000000..cc770f3a1e5c78e6908576741fe1cd9c87ea6c66 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34042.007517545.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34284.529758083.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34284.529758083.exp new file mode 100755 index 0000000000000000000000000000000000000000..2742843179f62074bc1054911f47b6e2707b1381 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34284.529758083.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34545.107357308.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34545.107357308.exp new file mode 100755 index 0000000000000000000000000000000000000000..54af8fd4f730c97d2ec9ba8ee0cc20f1d40aca5a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34545.107357308.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34833.549746291.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34833.549746291.exp new file mode 100755 index 0000000000000000000000000000000000000000..21022899a6ef4cf4071fc9654a6ce7e3c170a3ff Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/34833.549746291.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35093.53189099.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35093.53189099.exp new file mode 100755 index 0000000000000000000000000000000000000000..e7d706a89e5a9f95bfce9f78e031ad3a6bd02587 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35093.53189099.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35402.913550836.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35402.913550836.exp new file mode 100755 index 0000000000000000000000000000000000000000..1d03b23768cc18585b86f2e252ab048dbd6439f5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35402.913550836.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35689.4795499.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35689.4795499.exp new file mode 100755 index 0000000000000000000000000000000000000000..5125f1b868f45cf919a1ac0929cb6ca721c6c6bc Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35689.4795499.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35968.362421858.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35968.362421858.exp new file mode 100755 index 0000000000000000000000000000000000000000..ffeca5e692c74b5ba1f4f02dcfe6687a9c90d26a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/35968.362421858.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/36243.259194774.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/36243.259194774.exp new file mode 100755 index 0000000000000000000000000000000000000000..5123fcf049d0a05cb4dc76bac55224d6ec7573a8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/36243.259194774.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/36512.409952894.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/36512.409952894.exp new file mode 100755 index 0000000000000000000000000000000000000000..d1e7e7ae081f33a0ed1cebc4a690545469626eb7 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/36512.409952894.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/36748.850193469.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/36748.850193469.exp new file mode 100755 index 0000000000000000000000000000000000000000..2a6c495abc4127a4f8e43484a298d70847449a7b Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/36748.850193469.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37044.234676536.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37044.234676536.exp new file mode 100755 index 0000000000000000000000000000000000000000..5cfa8c203c3074551b06a8c6c436336aaa2bad16 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37044.234676536.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37314.880223104.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37314.880223104.exp new file mode 100755 index 0000000000000000000000000000000000000000..946246abbe73b8e3e9e0793aa4ad7472c2030132 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37314.880223104.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37543.767216562.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37543.767216562.exp new file mode 100755 index 0000000000000000000000000000000000000000..0579c71d840bcaaaed413c9ea04444b84c78f1d7 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37543.767216562.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37949.871083724.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37949.871083724.exp new file mode 100755 index 0000000000000000000000000000000000000000..fafee302cae5927aab7319c331e79185f0b976fb Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/37949.871083724.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/38228.881589093.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/38228.881589093.exp new file mode 100755 index 0000000000000000000000000000000000000000..c48d7abf3a93636813aca95cc78e0a38fd2d752a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/38228.881589093.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/38598.460761262.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/38598.460761262.exp new file mode 100755 index 0000000000000000000000000000000000000000..14818ae4771a20f190cc2d5e77de77e97f559a3e Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/38598.460761262.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/38987.040548988.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/38987.040548988.exp new file mode 100755 index 0000000000000000000000000000000000000000..c066906be3e62e168aa9e6f42de260ffc1b030ee Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/38987.040548988.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/39388.262956038.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/39388.262956038.exp new file mode 100755 index 0000000000000000000000000000000000000000..52665a905348c6475da2207fec11a9c221afc6b2 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/39388.262956038.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/39774.438115762.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/39774.438115762.exp new file mode 100755 index 0000000000000000000000000000000000000000..a5fa04e01a6acbaff72cf0cc412e8db5c81c3848 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/39774.438115762.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40102.889197863.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40102.889197863.exp new file mode 100755 index 0000000000000000000000000000000000000000..483b4a77aa0476aaadc263778eed87d245336afd Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40102.889197863.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40375.351016641.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40375.351016641.exp new file mode 100755 index 0000000000000000000000000000000000000000..f3e44887c9dbd65ec49598cdcfca3c2b7e875826 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40375.351016641.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40674.813418557.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40674.813418557.exp new file mode 100755 index 0000000000000000000000000000000000000000..5eec571412c855d2be0b6b68611ed8ccc0a91cf7 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40674.813418557.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40918.092343976.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40918.092343976.exp new file mode 100755 index 0000000000000000000000000000000000000000..363d59de80fe99802489301cefa2625aa2d1f88f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/40918.092343976.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/41208.840086902.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/41208.840086902.exp new file mode 100755 index 0000000000000000000000000000000000000000..db14f455cb2b85ecbfa4b910e8ace72a542c4d54 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/41208.840086902.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/41475.890453823.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/41475.890453823.exp new file mode 100755 index 0000000000000000000000000000000000000000..e1d68a887de32e6edd8c3de9d47808a156b444c9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/41475.890453823.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/41718.077352333.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/41718.077352333.exp new file mode 100755 index 0000000000000000000000000000000000000000..375702a28df2914fc4a54d3501eea2c4bc5f866a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/41718.077352333.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42009.683202819.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42009.683202819.exp new file mode 100755 index 0000000000000000000000000000000000000000..50a4372dea21ce94e43c66a5a5e53273dffe8708 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42009.683202819.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42272.545287098.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42272.545287098.exp new file mode 100755 index 0000000000000000000000000000000000000000..56467b5b02c98494b0e726678ad6115b76cd3606 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42272.545287098.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42487.302257314.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42487.302257314.exp new file mode 100755 index 0000000000000000000000000000000000000000..6a887758c0aebc712cb37ff76b0c25cc7428b1ea Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42487.302257314.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42782.427669849.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42782.427669849.exp new file mode 100755 index 0000000000000000000000000000000000000000..59b40c3c1ff13df2cb872ec35c8679e72d44cf3f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/42782.427669849.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43073.879761891.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43073.879761891.exp new file mode 100755 index 0000000000000000000000000000000000000000..b26dec1ef2e2ade7d44ed7fc21c55ce955fcef36 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43073.879761891.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43356.867167605.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43356.867167605.exp new file mode 100755 index 0000000000000000000000000000000000000000..94c31f7739d618752ab0d16126d2060c74bd1bb6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43356.867167605.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43639.908046339.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43639.908046339.exp new file mode 100755 index 0000000000000000000000000000000000000000..54c68e4b7891dc7e0821f908676a1356ff0db38f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43639.908046339.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43892.425932306.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43892.425932306.exp new file mode 100755 index 0000000000000000000000000000000000000000..7437fdce1391d06d5fea2737b1089a0897816e5c Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/43892.425932306.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44131.659105559.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44131.659105559.exp new file mode 100755 index 0000000000000000000000000000000000000000..49144ac24661394ab4e1fc1c1b910140a69a8de8 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44131.659105559.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44379.52625495.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44379.52625495.exp new file mode 100755 index 0000000000000000000000000000000000000000..dac440011260d7c07d750867c3af893676dc8b63 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44379.52625495.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44616.179371659.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44616.179371659.exp new file mode 100755 index 0000000000000000000000000000000000000000..03bad713e15d27460b7c1b05cdbea70ae177d1f6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44616.179371659.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44865.077575331.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44865.077575331.exp new file mode 100755 index 0000000000000000000000000000000000000000..ebf83d5b92652ed382c6b2db859de932becc167d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/44865.077575331.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/46218.13948651.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/46218.13948651.exp new file mode 100755 index 0000000000000000000000000000000000000000..b8e86703e1ea114a46702d9fcded707c03d2da0f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/46218.13948651.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/46506.954665147.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/46506.954665147.exp new file mode 100755 index 0000000000000000000000000000000000000000..a9c30492702bd7f0f4e290a62aea22f0c6404acf Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/46506.954665147.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/46860.796184405.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/46860.796184405.exp new file mode 100755 index 0000000000000000000000000000000000000000..6424ea312fe7edcddb68ad896c695835247add32 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/46860.796184405.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/47218.991110206.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/47218.991110206.exp new file mode 100755 index 0000000000000000000000000000000000000000..995a935df13789da7f97dfeee9d041dd9dba1ad9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/47218.991110206.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/47524.923247466.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/47524.923247466.exp new file mode 100755 index 0000000000000000000000000000000000000000..8ea0e22e3954934c7a7548e0657b3e4709ed7151 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/47524.923247466.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/47900.493116927.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/47900.493116927.exp new file mode 100755 index 0000000000000000000000000000000000000000..7f5771609e58eed300184c758c2eb603f7f127b0 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/47900.493116927.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/48294.173221232.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/48294.173221232.exp new file mode 100755 index 0000000000000000000000000000000000000000..3164f8b31e8f26a811a052b5334ca4c7b2247719 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/48294.173221232.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/48675.334284544.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/48675.334284544.exp new file mode 100755 index 0000000000000000000000000000000000000000..cd0fc60448630459f43df9650b8f4cf90f33f416 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/48675.334284544.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/49017.078002873.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/49017.078002873.exp new file mode 100755 index 0000000000000000000000000000000000000000..9979fd7532a632edf57c281464e78ea2f4f6d127 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/49017.078002873.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/49342.996126763.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/49342.996126763.exp new file mode 100755 index 0000000000000000000000000000000000000000..7fb3e19666a7408e1b75ed0c9c85c378cf8d12bf Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/49342.996126763.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/49769.064922352.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/49769.064922352.exp new file mode 100755 index 0000000000000000000000000000000000000000..8aad97fbd3fb71df994cf9cab4ce789638627542 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/49769.064922352.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/50144.417675005.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/50144.417675005.exp new file mode 100755 index 0000000000000000000000000000000000000000..383e891b84714bd186feed4ced005c779d5f039f Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/50144.417675005.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/50540.820987947.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/50540.820987947.exp new file mode 100755 index 0000000000000000000000000000000000000000..8a41e132be04151e0bfe42c782bc0f89e01cf02a Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/50540.820987947.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/50956.980592174.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/50956.980592174.exp new file mode 100755 index 0000000000000000000000000000000000000000..89d60fef7812eace0b187380fb7bc3443efa66a5 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/50956.980592174.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/51355.074557851.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/51355.074557851.exp new file mode 100755 index 0000000000000000000000000000000000000000..04bbcb8b800a9e8810d7851e07061f1349443c4d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/51355.074557851.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/51826.320449325.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/51826.320449325.exp new file mode 100755 index 0000000000000000000000000000000000000000..fb895f66c24b0a5ba3ab6ab7bbadc8d3248411d9 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/51826.320449325.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/52207.203661919.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/52207.203661919.exp new file mode 100755 index 0000000000000000000000000000000000000000..ed76235391e9d5469fdcffd7250287554ae48eee Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/52207.203661919.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/52572.609343269.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/52572.609343269.exp new file mode 100755 index 0000000000000000000000000000000000000000..51caad16ea4d314249dc325f23350ebc203f8c95 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/52572.609343269.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/52894.219284027.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/52894.219284027.exp new file mode 100755 index 0000000000000000000000000000000000000000..a88dac262e44b9c7fbc49b936b791937edc341aa Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/52894.219284027.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/53305.246233681.exp b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/53305.246233681.exp new file mode 100755 index 0000000000000000000000000000000000000000..91e705047a08e40afaf79f4d6f3d6c272f8e592d Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/Results/40Nodes(l=1)/53305.246233681.exp differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/ResultsToGraph.py b/Routing/FredericksonAlgorithmAdvanced/Experiments/ResultsToGraph.py new file mode 100755 index 0000000000000000000000000000000000000000..488dca8971e712b8b93c628bd417a429805bb6fa --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/Experiments/ResultsToGraph.py @@ -0,0 +1,83 @@ +import matplotlib.pyplot as plt +import numpy as np +import pickle +import os + +results = {} + +for node_numbers in (10, 20, 30, 40): + result_dir = "Results/"+str(node_numbers)+"Nodes(l=1)" + files = os.listdir(result_dir) + results[node_numbers] = {"Message": [], "Time": []} + print(f"{node_numbers} has {len(files)} results") + for file in files: + network_graph, MESSAGE_COUNT, COMPLETION, route_table = pickle.load(open(result_dir+"/"+file, "rb")) + summation = 0 + print(MESSAGE_COUNT) + for count in MESSAGE_COUNT: + summation+=MESSAGE_COUNT[count] + results[node_numbers]["Message"].append(summation) + + results[node_numbers]["Time"].append(COMPLETION["INIT"]) + + if len(network_graph.nodes) != node_numbers: + raise Exception("Wrong storage") + + + + +def set_box_color(bp, color): + plt.setp(bp['boxes'], color=color) + plt.setp(bp['whiskers'], color=color) + plt.setp(bp['caps'], color=color) + plt.setp(bp['medians'], color=color) + +nodes = ("10", "20", "30", "40") +x_pos = np.arange(len(nodes)*2) + +means_message = [np.mean(results[node_count]["Message"]) for node_count in (10, 20, 30, 40)] +errors_message = [np.std(results[node_count]["Message"]) for node_count in (10, 20, 30, 40)] + +means_time = [np.mean(results[node_count]["Time"]) for node_count in (10, 20, 30, 40)] +errors_time = [np.std(results[node_count]["Time"]) for node_count in (10, 20, 30, 40)] + +means = [] +errors = [] +for i in range(len(means_time)): + means.append(means_message[i]) + means.append(means_time[i]) + errors.append(errors_message[i]) + errors.append(errors_time[i]) + +plots = ["Message", "Time"] +plot = plots[1] + +colors=["blue", "green"] +fig, ax = plt.subplots() +if plot == "Message": + ax.bar((1, 2, 3, 4), means_message, yerr=errors_message, align='center', alpha=0.5, ecolor='black', capsize=10, color=colors[0], label="Message") +else: + ax.bar(( 1, 2, 3, 4), means_time, yerr=errors_time, align='center', alpha=0.5, ecolor='black', capsize=10, color=colors[1], label="Time") + +ax.set_xlabel("Node Count") +ax.set_xticks((1, 2, 3, 4)) +ax.set_xticklabels(nodes) +if plot == "Message": + ax.set_ylabel('Message Count') + + ax.set_title("Message Count vs Node Count for Frederickson Algorithm") +else: + ax.set_ylabel('Elapsed Time (sec)') + + ax.set_title("Time vs Node Count for Frederickson Algorithm") + +# ax.yaxis.grid(True) + +# Save the figure and show +plt.tight_layout() +plt.savefig('bar_plot_'+plot+'.png') +# plt.legend(loc=2) +plt.show() + + + diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/bar_plot_Message.png b/Routing/FredericksonAlgorithmAdvanced/Experiments/bar_plot_Message.png new file mode 100755 index 0000000000000000000000000000000000000000..db21850c311d98bf174000ece2c0ea5b0d4be8d6 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/bar_plot_Message.png differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/bar_plot_Time.png b/Routing/FredericksonAlgorithmAdvanced/Experiments/bar_plot_Time.png new file mode 100755 index 0000000000000000000000000000000000000000..9b0358f801b14c1a6eea3e4cf8f67b16cbb6a623 Binary files /dev/null and b/Routing/FredericksonAlgorithmAdvanced/Experiments/bar_plot_Time.png differ diff --git a/Routing/FredericksonAlgorithmAdvanced/Experiments/temp.py b/Routing/FredericksonAlgorithmAdvanced/Experiments/temp.py new file mode 100755 index 0000000000000000000000000000000000000000..dd3a0798caa6c0e7db57cfbb327010aceaa9d1e6 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/Experiments/temp.py @@ -0,0 +1,29 @@ +from timeit import default_timer as timer +import pickle +from itertools import combinations, groupby +import networkx as nx +import random +import matplotlib.pyplot as plt + +exit() + + +def draw_random_graph(n): + """ + Draw a random graph with 2**i nodes, + and p=i/(2**i) + """ + k = True + while k == True: + k = False + g_random = nx.gnp_random_graph(n, 0.3) + if not nx.is_connected(g_random): + k = True + + nx.draw(g_random, node_size=20) + for e in g_random.edges: + print(f"{e}") + plt.show() + plt.close() + +draw_random_graph(10) \ No newline at end of file diff --git a/Routing/FredericksonAlgorithmAdvanced/FredericksonAlgorithmAdvancedComponent.py b/Routing/FredericksonAlgorithmAdvanced/FredericksonAlgorithmAdvancedComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..0019b885eb9700617a5acbc5ff277199c5f38371 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/FredericksonAlgorithmAdvancedComponent.py @@ -0,0 +1,234 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +import time +import numpy as np + +class FredericksonAlgorithmAdvancedComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(FredericksonAlgorithmAdvancedComponent, self).__init__(componentname, componentid) + self.queue_lock = Lock() + self.message_queue = [] + self.l_parameter = 1 + if self.componentinstancenumber == 0: + self.is_initiator = True + else: + self.is_initiator = False + + def on_init(self, eventobj: Event): + super(FredericksonAlgorithmAdvancedComponent, self).on_init(eventobj) + if not self.is_initiator: + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def on_message_from_bottom(self, eventobj: Event): + message_destination = eventobj.eventcontent.header.messageto.split("-")[0] + print(f"{self.componentinstancenumber} received {message_destination}") + if message_destination == FredericksonAlgorithmAdvancedComponent.__name__: # process only the messages targeted to this component... + message_source_id = eventobj.eventcontent.header.messagefrom.split("-")[1] + message_type = eventobj.eventcontent.header.messagetype + content = eventobj.eventcontent.payload + if message_type == "EXPLORE" or message_type == "FORWARD" or message_type=="REVERSE": + self.queue_lock.acquire() # protect message_queue, both component thread and Toueg thread are trying to access data + self.message_queue.append((int(message_source_id), message_type, content)) + self.queue_lock.release() + + def on_message_from_peer(self, eventobj: Event): + message_header = eventobj.eventcontent.header + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == FredericksonAlgorithmAdvancedComponent.__name__: + if self.is_initiator: + if message_header.messagetype == "INITIATEBFSCONSTRUCTION": + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def job(self, *arg): + self.neighbors = Topology().get_neighbors(self.componentinstancenumber) # retrieve all neighbor ids... + self.neighbor_weights = {a: 1 for a in self.neighbors} # for the time being each edge weight is 1... + if self.componentinstancenumber == 0: + self.is_initiator = True + else: + self.is_initiator = False + + tree = self.FredericksonAlgorithmAdvanced() + def getPaths(data): + if len(data) == 0: + return [[]] + if len(data) == 1: + ret = getPaths(data[list(data.keys())[0]]) + for i in ret: + i.insert(0, list(data.keys())[0]) + return ret + if len(data) > 1: + ret = getPaths(data[list(data.keys())[0]]) + for kl in range(len(ret)): + ret[kl].insert(0, list(data.keys())[0]) + + return ret + getPaths({a: data[a] for a in list(data.keys()) if a != list(data.keys())[0]}) + + message_payload= getPaths(tree) + + message_header = GenericMessageHeader("BFSTREECONSTRUCTED", + self.componentname + "-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, message_payload) + event = Event(self, EventTypes.MFRP, message) + self.send_peer(event) + print("Info sent to Coordinator") + + def FredericksonAlgorithmAdvanced(self): + self.process_id = self.componentinstancenumber + self.positively_responded_nodes = [] + + self.level_u = np.inf + self.neighbor_level_u = {} + self.parent_u = None + self.children_u = {} + self.expectedreplies = {} + for neighbor in self.neighbors: + self.neighbor_level_u[neighbor] = np.inf + self.expectedreplies[neighbor] = 0 + + bvalue_u = False + sendreverse_u = True + + if self.is_initiator: + self.level_u = 0 + k = 0 + for n in self.neighbors: + if not n in self.children_u: + self.children_u[n] = [] + self.sendMessageToNeighbor(n, "EXPLORE", (k + 1, self.l_parameter)) + self.expectedreplies[n] = 1 + + while True: + new_message = self.waitNewMessage() + sender, message_type, f = new_message + search_depth = f + + if message_type == "FORWARD": + bvalue_u = False + for n in self.neighbors: + self.expectedreplies[n] = 0 + if self.level_u < f: + message_count = 0 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", f) + self.expectedreplies[c] = 1 + message_count += 1 + self.positively_responded_nodes = [] + + + if self.level_u == f: + message_count = 0 + for n in self.neighbors: + if self.neighbor_level_u[n] != f - 1: + self.sendMessageToNeighbor(n, "EXPLORE", (f + 1, self.l_parameter)) + self.expectedreplies[n] = 1 + message_count += 1 + if message_count == 0: + self.message_queue.append((-1, "REVERSE", (False, self.children_u))) + print(f"**********{self.process_id} sends loop back itsel... ") + + elif message_type == "EXPLORE": + f = search_depth[0] + m = search_depth[1] + + if self.neighbor_level_u[sender] != f - 1: + self.neighbor_level_u[sender] = f - 1 + + if self.level_u > f: + bvalue_u = True + if not sendreverse_u: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (False, self.children_u)) + sendreverse_u = True + + self.parent_u = sender + self.level_u = f + + self.children_u = {} + if m > 1: + sendreverse_u = False + message_count = 0 + for n in self.neighbors: + if n != self.parent_u: + self.sendMessageToNeighbor(n, "EXPLORE", (f + 1, m - 1)) + self.expectedreplies[n] += 1 + message_count += 1 + + else: + self.sendMessageToNeighbor(sender, "REVERSE", (True, self.children_u)) + elif self.level_u == f or self.level_u == f - 1: + if sender in self.children_u: + del self.children_u[sender] + if sender in self.positively_responded_nodes: + self.positively_responded_nodes.remove(sender) + + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + elif self.level_u < f - 1: + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + + elif message_type == "REVERSE": + b = f[0] + if sender in self.expectedreplies: + self.expectedreplies[sender] -= 1 + if sender in self.neighbor_level_u and self.neighbor_level_u[sender] <= self.level_u: + b = False + if b == True: + if sender not in self.positively_responded_nodes: + self.positively_responded_nodes.append(sender) + if self.process_id != sender: + self.children_u[sender] = f[1] + bvalue_u = True + + all_responded = True + for i in self.expectedreplies: + if self.expectedreplies[i] != 0: + all_responded = False + break + + if all_responded == True: + if self.parent_u != None: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (bvalue_u, self.children_u)) + sendreverse_u = False + elif bvalue_u == True: + bvalue_u = False + k = k + 1 + message_count = 0 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", k) + self.expectedreplies[c] = 1 + message_count += 1 + self.positively_responded_nodes = [] + + if message_count == 0: + print("BFS Completed....") + print(f"**********{self.process_id} has problem {new_message}") + print(self.children_u) + break + else: + print("BFS Completed....") + break + + print(self.children_u) + return {self.componentinstancenumber: self.children_u} + + def sendMessageToNeighbor(self, neighbor_id, message_type, message): + print(f"{self.componentinstancenumber} sends {message_type} message to neighbor {neighbor_id}") + message_header = GenericMessageHeader(message_type, FredericksonAlgorithmAdvancedComponent.__name__+"-"+str(self.componentinstancenumber), + FredericksonAlgorithmAdvancedComponent.__name__+"-"+str(neighbor_id), interfaceid=str(self.componentinstancenumber)+"-"+str(neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + + def waitNewMessage(self): + self.queue_lock.acquire() + if len(self.message_queue) > 0: + message = self.message_queue.pop() + sender = message[0] + message_type = message[1] + last_part = message[2] + self.queue_lock.release() + return (sender, message_type, last_part) + else: + self.queue_lock.release() + return None, None, None \ No newline at end of file diff --git a/Routing/FredericksonAlgorithmAdvanced/RoutingExample/ApplicationComponent.py b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/ApplicationComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..5c91c52ca9ecdc7757cc7fb06e4084a8291ec7ba --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/ApplicationComponent.py @@ -0,0 +1,39 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, Thread, Lock +# where the machine learning model is loaded... The top entity for the Node... +from timeit import default_timer as timer + +class ApplicationComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(ApplicationComponent, self).__init__(componentname, componentid) + + def on_init(self, eventobj: Event): + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATE", "ApplicationComponent-"+str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + print(f"App {self.componentinstancenumber} sends an INITIATE to Coordinator") + + + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == "ApplicationComponent": + if message_type == "APPQUERY": + source, content = message + print(f"App {self.componentinstancenumber} has received {message} from {source}") + message_header = GenericMessageHeader("APPRESPONSE", + "ApplicationComponent-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, (source, "Hellooooooooo "+content)) + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + + elif message_type == "APPRESPONSE": + source, content = message + print(f"App {self.componentinstancenumber} has received APPRESPONSE {message} from {source}") + elif message_type == "ROUTINGCOMPLETED": + print("Route : ", message) diff --git a/Routing/FredericksonAlgorithmAdvanced/RoutingExample/CoordinatorComponent.py b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/CoordinatorComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..115e41340b61a1a259adf1584ec76db6773caebd --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/CoordinatorComponent.py @@ -0,0 +1,109 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + +class Coordinator(ComponentModel): + def __init__(self, componentname, componentid): + super(Coordinator, self).__init__(componentname, componentid) + self.RoutingTable = {} + self.Response_Record = {} + + def on_message_from_top(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + print(f"Coordinator receives message from top {messageto} {message_type} {message}") + if messageto == Coordinator.__name__: + if sender == "ApplicationComponent" and message_type == "INITIATE": + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATEBFSCONSTRUCTION", + "Coordinator-" + str(self.componentinstancenumber), + "FredericksonAlgorithmAdvancedComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRP, message) + self.send_peer(kickstarter) + print("Coordinator -> Frederickson") + elif sender == "ApplicationComponent" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + if message_type == "APPRESPONSE" or len(self.RoutingTable) > 0: + dest, info = message + path_to_follow = None + for i in self.RoutingTable: + if dest in i: + path_to_follow = i + break + if message_type == "APPRESPONSE": + path_to_follow = self.Response_Record[dest] + + neighbor_id = path_to_follow[1] + if message_type == "APPRESPONSE": + print("Neighbor : ", neighbor_id) + + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (path_to_follow[1:], (path_to_follow), dest, self.componentinstancenumber, info)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"Coordinator {self.componentinstancenumber} sends APPQUERY {neighbor_id} to relay it {dest} - {self.RoutingTable}") + + + def on_message_from_peer(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "FredericksonAlgorithmAdvancedComponent" and message_type == "BFSTREECONSTRUCTED": + self.RoutingTable = message + print(f"Coordinator {self.componentinstancenumber} has received BFS Tree {self.RoutingTable}") + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("ROUTINGCOMPLETED", + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, self.RoutingTable) + kickstarter = Event(self, EventTypes.MFRB, message) + self.send_up(kickstarter) + + + + def on_init(self, eventobj: Event): + pass + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "Coordinator" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + curr_, path_to_follow, dest, source, content = message + print(f"Coordinator {self.componentinstancenumber} has received APPQUERY {curr_, path_to_follow, dest, source}") + + if dest == self.componentinstancenumber: + message_header = GenericMessageHeader(message_type, + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message_ = GenericMessage(message_header, (source, content)) + kickstarter = Event(self, EventTypes.MFRB, message_) + self.send_up(kickstarter) + self.Response_Record[source] = list(reversed(path_to_follow)) + print(f"Response Record : ", self.Response_Record) + # send to app layer + pass + else: + neighbor_id = curr_[1] + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (curr_[1:], path_to_follow, dest, source, content)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"*****Routing from {self.componentinstancenumber} to {neighbor_id} - {self.RoutingTable}*****") + + diff --git a/Routing/FredericksonAlgorithmAdvanced/RoutingExample/FredericksonAlgorithmAdvancedComponent.py b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/FredericksonAlgorithmAdvancedComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..fd6ab506bc0c2346755dfe6f4af61ba48079a742 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/FredericksonAlgorithmAdvancedComponent.py @@ -0,0 +1,234 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +import time +import numpy as np + +class FredericksonAlgorithmAdvancedComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(FredericksonAlgorithmAdvancedComponent, self).__init__(componentname, componentid) + self.queue_lock = Lock() + self.message_queue = [] + self.l_parameter = 1 + if self.componentinstancenumber == 0: + self.is_initiator = True + else: + self.is_initiator = False + + def on_init(self, eventobj: Event): + super(FredericksonAlgorithmAdvancedComponent, self).on_init(eventobj) + if not self.is_initiator: + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def on_message_from_bottom(self, eventobj: Event): + message_destination = eventobj.eventcontent.header.messageto.split("-")[0] + print(f"{self.componentinstancenumber} received {message_destination}") + if message_destination == FredericksonAlgorithmAdvancedComponent.__name__: # process only the messages targeted to this component... + message_source_id = eventobj.eventcontent.header.messagefrom.split("-")[1] + message_type = eventobj.eventcontent.header.messagetype + content = eventobj.eventcontent.payload + if message_type == "EXPLORE" or message_type == "FORWARD" or message_type=="REVERSE": + self.queue_lock.acquire() # protect message_queue, both component thread and Toueg thread are trying to access data + self.message_queue.append((int(message_source_id), message_type, content)) + self.queue_lock.release() + + def on_message_from_peer(self, eventobj: Event): + message_header = eventobj.eventcontent.header + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == FredericksonAlgorithmAdvancedComponent.__name__: + if self.is_initiator: + if message_header.messagetype == "INITIATEBFSCONSTRUCTION": + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def job(self, *arg): + self.neighbors = Topology().get_neighbors(self.componentinstancenumber) # retrieve all neighbor ids... + self.neighbor_weights = {a: 1 for a in self.neighbors} # for the time being each edge weight is 1... + if self.componentinstancenumber == 0: + self.is_initiator = True + else: + self.is_initiator = False + + tree = self.FredericksonAlgorithmAdvanced() + def getPaths(data): + if len(data) == 0: + return [[]] + if len(data) == 1: + ret = getPaths(data[list(data.keys())[0]]) + for i in ret: + i.insert(0, list(data.keys())[0]) + return ret + if len(data) > 1: + ret = getPaths(data[list(data.keys())[0]]) + for kl in range(len(ret)): + ret[kl].insert(0, list(data.keys())[0]) + + return ret + getPaths({a: data[a] for a in list(data.keys()) if a != list(data.keys())[0]}) + + message_payload= getPaths(tree) + + message_header = GenericMessageHeader("BFSTREECONSTRUCTED", + self.componentname + "-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, message_payload) + event = Event(self, EventTypes.MFRP, message) + self.send_peer(event) + print("Info sent to Coordinator") + + def FredericksonAlgorithmAdvanced(self): + self.process_id = self.componentinstancenumber + self.positively_responded_nodes = [] + + self.level_u = np.inf + self.neighbor_level_u = {} + self.parent_u = None + self.children_u = {} + self.expectedreplies = {} + for neighbor in self.neighbors: + self.neighbor_level_u[neighbor] = np.inf + self.expectedreplies[neighbor] = 0 + + bvalue_u = False + sendreverse_u = True + + if self.is_initiator: + self.level_u = 0 + k = 0 + for n in self.neighbors: + if not n in self.children_u: + self.children_u[n] = [] + self.sendMessageToNeighbor(n, "EXPLORE", (k + 1, self.l_parameter)) + self.expectedreplies[n] = 1 + + while True: + new_message = self.waitNewMessage() + sender, message_type, f = new_message + search_depth = f + + if message_type == "FORWARD": + bvalue_u = False + for n in self.neighbors: + self.expectedreplies[n] = 0 + if self.level_u < f: + message_count = 0 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", f) + self.expectedreplies[c] = 1 + message_count += 1 + self.positively_responded_nodes = [] + + + if self.level_u == f: + message_count = 0 + for n in self.neighbors: + if self.neighbor_level_u[n] != f - 1: + self.sendMessageToNeighbor(n, "EXPLORE", (f + 1, self.l_parameter)) + self.expectedreplies[n] = 1 + message_count += 1 + if message_count == 0: + self.message_queue.append((-1, "REVERSE", (False, self.children_u))) + print(f"**********{self.process_id} sends loop back itsel... ") + + elif message_type == "EXPLORE": + f = search_depth[0] + m = search_depth[1] + + if self.neighbor_level_u[sender] != f - 1: + self.neighbor_level_u[sender] = f - 1 + + if self.level_u > f: + bvalue_u = True + if not sendreverse_u: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (False, self.children_u)) + sendreverse_u = True + + self.parent_u = sender + self.level_u = f + + self.children_u = {} + if m > 1: + sendreverse_u = False + message_count = 0 + for n in self.neighbors: + if n != self.parent_u: + self.sendMessageToNeighbor(n, "EXPLORE", (f + 1, m - 1)) + self.expectedreplies[n] += 1 + message_count += 1 + + else: + self.sendMessageToNeighbor(sender, "REVERSE", (True, self.children_u)) + elif self.level_u == f or self.level_u == f - 1: + if sender in self.children_u: + del self.children_u[sender] + if sender in self.positively_responded_nodes: + self.positively_responded_nodes.remove(sender) + + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + elif self.level_u < f - 1: + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + + elif message_type == "REVERSE": + b = f[0] + if sender in self.expectedreplies: + self.expectedreplies[sender] -= 1 + if sender in self.neighbor_level_u and self.neighbor_level_u[sender] <= self.level_u: + b = False + if b == True: + if sender not in self.positively_responded_nodes: + self.positively_responded_nodes.append(sender) + if self.process_id != sender: + self.children_u[sender] = f[1] + bvalue_u = True + + all_responded = True + for i in self.expectedreplies: + if self.expectedreplies[i] != 0: + all_responded = False + break + + if all_responded == True: + if self.parent_u != None: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (bvalue_u, self.children_u)) + sendreverse_u = False + elif bvalue_u == True: + bvalue_u = False + k = k + 1 + message_count = 0 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", k) + self.expectedreplies[c] = 1 + message_count += 1 + self.positively_responded_nodes = [] + + if message_count == 0: + print("BFS Completed....") + print(f"**********{self.process_id} has problem {new_message}") + print(self.children_u) + break + else: + print("BFS Completed....") + break + + print(self.children_u) + return {self.componentinstancenumber: self.children_u} + + def sendMessageToNeighbor(self, neighbor_id, message_type, message): + print(f"{self.componentinstancenumber} sends {message_type} {message} message to neighbor {neighbor_id}") + message_header = GenericMessageHeader(message_type, FredericksonAlgorithmAdvancedComponent.__name__+"-"+str(self.componentinstancenumber), + FredericksonAlgorithmAdvancedComponent.__name__+"-"+str(neighbor_id), interfaceid=str(self.componentinstancenumber)+"-"+str(neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + + def waitNewMessage(self): + self.queue_lock.acquire() + if len(self.message_queue) > 0: + message = self.message_queue.pop() + sender = message[0] + message_type = message[1] + last_part = message[2] + self.queue_lock.release() + return (sender, message_type, last_part) + else: + self.queue_lock.release() + return None, None, None \ No newline at end of file diff --git a/Routing/FredericksonAlgorithmAdvanced/RoutingExample/MachineLearningNodeComponent.py b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/MachineLearningNodeComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..97eefe477e40f0e8272d5cfbb85358b4fcd2b840 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/MachineLearningNodeComponent.py @@ -0,0 +1,40 @@ +from Ahc import ComponentModel, Event, GenericMessage, ConnectorTypes, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Routing.FredericksonAlgorithmAdvanced.RoutingExample.ApplicationComponent import ApplicationComponent +from Routing.FredericksonAlgorithmAdvanced.RoutingExample.CoordinatorComponent import Coordinator +from Routing.FredericksonAlgorithmAdvanced.RoutingExample.FredericksonAlgorithmAdvancedComponent import FredericksonAlgorithmAdvancedComponent +from Routing.FredericksonAlgorithmAdvanced.RoutingExample.MiddlewareStubComponent import MiddlewareMessageStub + +# Encapsulator for the Application Node +class MachineLearningNode(ComponentModel): + def __init__(self, componentname, componentid): + super(MachineLearningNode, self).__init__(componentname, componentid) + self.Application = ApplicationComponent(ApplicationComponent.__name__, componentid) + self.Coordinator = Coordinator(Coordinator.__name__, componentid) + self.FrederickAlgorithmAdvancedComponent = FredericksonAlgorithmAdvancedComponent(FredericksonAlgorithmAdvancedComponent.__name__, componentid) + self.MiddlewareStub = MiddlewareMessageStub(MiddlewareMessageStub.__name__, componentid) + + # Application layer only talks with Coordinator, + # Coordinator coordinates all demands of the application by triggering other components if necessary... + self.Application.connect_me_to_component(ConnectorTypes.DOWN, self.Coordinator) + self.Coordinator.connect_me_to_component(ConnectorTypes.UP, self.Application) + self.Coordinator.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + + self.Coordinator.connect_me_to_component(ConnectorTypes.PEER, self.FrederickAlgorithmAdvancedComponent) + self.FrederickAlgorithmAdvancedComponent.connect_me_to_component(ConnectorTypes.PEER, self.Coordinator) + + self.FrederickAlgorithmAdvancedComponent.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.FrederickAlgorithmAdvancedComponent) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.Coordinator) + + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.DOWN, self) + self.connect_me_to_component(ConnectorTypes.UP, self.MiddlewareStub) + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + self.send_up(eventobj) # send incoming messages to upper components + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) # send incoming messages from upper components to a channel + diff --git a/Routing/FredericksonAlgorithmAdvanced/RoutingExample/MiddlewareStubComponent.py b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/MiddlewareStubComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..9a097f9d407374de4e029169018d028c71132454 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/MiddlewareStubComponent.py @@ -0,0 +1,18 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes +class MiddlewareMessageStub(ComponentModel): + def __init__(self, componentname, componentid): + super(MiddlewareMessageStub, self).__init__(componentname, componentid) + pass + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "FredericksonAlgorithmAdvancedComponent" or message_target == "Coordinator": + self.send_up(eventobj) + + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) + diff --git a/Routing/FredericksonAlgorithmAdvanced/RoutingExample/RoutingExample.py b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/RoutingExample.py new file mode 100755 index 0000000000000000000000000000000000000000..619ebceb2af7fba24bcb45180c951b209a3af6f9 --- /dev/null +++ b/Routing/FredericksonAlgorithmAdvanced/RoutingExample/RoutingExample.py @@ -0,0 +1,33 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Channels import P2PFIFOPerfectChannel, Channel +import time +import matplotlib.pyplot as plt + +import networkx as nx +import numpy as np +from Routing.FredericksonAlgorithmAdvanced.RoutingExample.MachineLearningNodeComponent import MachineLearningNode + + +edges = [(0, 1, {"weight": 1}), (0, 2, {"weight": 1}), (1, 3, {"weight": 1}), (2, 4, {"weight": 1}), (4, 5, {"weight": 1}), + (3, 5, {"weight": 1}), (1, 4, {"weight": 1}), (4, 6, {"weight": 1}), (4, 7, {"weight": 1}), + (6, 8, {"weight": 1}), (8, 9, {"weight": 1}), (7, 10, {"weight": 1}), (7, 11, {"weight": 1}), + (11, 13, {"weight": 1}), (2, 12, {"weight": 1}), + (7, 9, {"weight": 1})] + +# undirected graph +graph = nx.Graph() +graph.add_edges_from(edges) + +topology = Topology() +topology.construct_from_graph(graph, MachineLearningNode, P2PFIFOPerfectChannel) +# process1 = MachineLearningNode("MachineLearningNode", 0) +# ComponentRegistry().init() +# topology.plot() +# plt.show() + +topology.start() + +while True:pass + + + diff --git a/Routing/FredericksonAlgorithmSimple/FredericksonAlgorithmSimpleComponent.py b/Routing/FredericksonAlgorithmSimple/FredericksonAlgorithmSimpleComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..49561e206432692d2cd279f8c6ce6116d83b01e6 --- /dev/null +++ b/Routing/FredericksonAlgorithmSimple/FredericksonAlgorithmSimpleComponent.py @@ -0,0 +1,228 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +import time +import numpy as np + + +class FredericksonAlgorithmSimpleComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(FredericksonAlgorithmSimpleComponent, self).__init__(componentname, componentid) + self.queue_lock = Lock() + self.message_queue = [] + if self.componentinstancenumber == 0: + self.is_initiator = True + else: + self.is_initiator = False + + def on_init(self, eventobj: Event): + super(FredericksonAlgorithmSimpleComponent, self).on_init(eventobj) + if not self.is_initiator: + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + + def on_message_from_bottom(self, eventobj: Event): + message_destination = eventobj.eventcontent.header.messageto.split("-")[0] + print(f"{self.componentinstancenumber} received {message_destination}") + if message_destination == FredericksonAlgorithmSimpleComponent.__name__: # process only the messages targeted to this component... + message_source_id = eventobj.eventcontent.header.messagefrom.split("-")[1] + message_type = eventobj.eventcontent.header.messagetype + content = eventobj.eventcontent.payload + + if message_type == "EXPLORE" or message_type == "FORWARD" or message_type=="REVERSE": + self.queue_lock.acquire() # protect message_queue, both component thread and Toueg thread are trying to access data + self.message_queue.append((int(message_source_id), message_type, content)) + self.queue_lock.release() + + + def on_message_from_peer(self, eventobj: Event): + message_header = eventobj.eventcontent.header + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == FredericksonAlgorithmSimpleComponent.__name__: + if self.is_initiator: + if message_header.messagetype == "INITIATEBFSCONSTRUCTION": + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def job(self, *arg): + self.neighbors = Topology().get_neighbors(self.componentinstancenumber) # retrieve all neighbor ids... + self.neighbor_weights = {a: 1 for a in self.neighbors} # for the time being each edge weight is 1... + + def getPaths(data): + if len(data) == 0: + return [[]] + if len(data) == 1: + ret = getPaths(data[list(data.keys())[0]]) + for i in ret: + i.insert(0, list(data.keys())[0]) + return ret + if len(data) > 1: + ret = getPaths(data[list(data.keys())[0]]) + for kl in range(len(ret)): + ret[kl].insert(0, list(data.keys())[0]) + + return ret + getPaths({a: data[a] for a in list(data.keys()) if a != list(data.keys())[0]}) + + tree = self.FredericksonAlgorithmSimple() + paths = getPaths(tree) + + message_payload = paths + message_header = GenericMessageHeader("BFSTREECONSTRUCTED", + self.componentname + "-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, message_payload) + event = Event(self, EventTypes.MFRP, message) + self.send_peer(event) + + def FredericksonAlgorithmSimple(self): + print(f"{self.componentinstancenumber} started FredericksonAlgorithm Thread") + self.positively_responded_nodes = [] + self.level_u = np.inf + self.neighbor_level_u = {} + self.parent_u = None + self.children_u = {} + message_from_future = [] + self.subtree = [] + + self.expectedreplies = expectedreplies = {} + for neighbor in self.neighbors: + self.neighbor_level_u[neighbor] = np.inf + expectedreplies[neighbor] = 0 + + bvalue_u = False + + if self.is_initiator: + self.level_u = 0 + k = 0 + for n in self.neighbors: + if not n in self.children_u: + self.children_u[n] = [] + self.sendMessageToNeighbor(n, "EXPLORE", k + 1) + expectedreplies[n] = 1 + + while True: + new_message = self.waitNewMessage() + sender, message_type, f = new_message + search_depth = f + + if message_type == "FORWARD": + bvalue_u = False + minus = [] + for n in self.neighbors: + if expectedreplies[n] < 0: + minus.append(n) + expectedreplies[n] = 0 + + if self.level_u < f: + + for c in self.positively_responded_nodes: # positively responded... + self.sendMessageToNeighbor(c, "FORWARD", f) + expectedreplies[c] += 1 + self.positively_responded_nodes = [] + if self.level_u == f: + transmitted = 0 + for n in self.neighbors: + if self.neighbor_level_u[n] != f - 1: + self.sendMessageToNeighbor(n, "EXPLORE", f + 1) + expectedreplies[n] = 1 + transmitted += 1 + for min_ in minus: + expectedreplies[min_] -= 1 + # for future_repsonse in message_from_future: + # expectedreplies[future_repsonse[0]] -= 1 + + if transmitted == 0: + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + + elif message_type == "EXPLORE": + f = search_depth + + if self.level_u == np.inf: + self.parent_u = sender + self.level_u = f + self.sendMessageToNeighbor(sender, "REVERSE", (True, self.children_u)) + self.neighbor_level_u[sender] = f - 1 + + elif self.level_u == f: + self.neighbor_level_u[sender] = f - 1 + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + elif self.level_u == f - 1: + b = False + expectedreplies[sender] -= 1 + all_responded = True + for i in expectedreplies: + if expectedreplies[i] != 0: + all_responded = False + break + if all_responded == True: + if self.parent_u is not None: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (bvalue_u, self.children_u)) + elif bvalue_u == True: + k = k + 1 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", k) + expectedreplies[c] = 1 + self.positively_responded_nodes = [] + else: + print("BFS Completed....") + break + else: + print(f"****************Wasted {new_message}****************") + message_from_future.append((sender, message_type, search_depth)) + + elif message_type == "REVERSE": + bvalue_u = False + b = f[0] + expectedreplies[sender] -= 1 + if b == True: + if sender not in self.positively_responded_nodes: + self.positively_responded_nodes.append(sender) + self.children_u[sender] = f[1] + bvalue_u = True + + all_responded = True + for i in expectedreplies: + if expectedreplies[i] != 0: + all_responded = False + break + if all_responded == True: + + if self.parent_u is not None: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (bvalue_u, self.children_u)) + elif bvalue_u == True: + bvalue_u = False + k = k + 1 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", k) + expectedreplies[c] = 1 + self.positively_responded_nodes = [] + else: + print("BFS Completed....") + print("Tree : ", self.children_u) + + break + return {self.componentinstancenumber: self.children_u} + + + def sendMessageToNeighbor(self, neighbor_id, message_type, message): + print(f"{self.componentinstancenumber} sends {message_type} message to neighbor {neighbor_id}") + message_header = GenericMessageHeader(message_type, FredericksonAlgorithmSimpleComponent.__name__+"-"+str(self.componentinstancenumber), + FredericksonAlgorithmSimpleComponent.__name__+"-"+str(neighbor_id), interfaceid=str(self.componentinstancenumber)+"-"+str(neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + + def waitNewMessage(self): + covertion = {0: "p", 1: "q", 2: "r", 3: "s", 4: "t", 5: "u"} + + self.queue_lock.acquire() + if len(self.message_queue) > 0: + message = self.message_queue.pop() + sender = message[0] + message_type = message[1] + last_part = message[2] + self.queue_lock.release() + return (sender, message_type, last_part) + else: + self.queue_lock.release() + return None, None, None \ No newline at end of file diff --git a/Routing/FredericksonAlgorithmSimple/RoutingExample/ApplicationComponent.py b/Routing/FredericksonAlgorithmSimple/RoutingExample/ApplicationComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..2563485f0338cb839326c679beea5cf44b0b19e2 --- /dev/null +++ b/Routing/FredericksonAlgorithmSimple/RoutingExample/ApplicationComponent.py @@ -0,0 +1,53 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, Thread, Lock + + +# where the machine learning model is loaded... The top entity for the Node... +class ApplicationComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(ApplicationComponent, self).__init__(componentname, componentid) + + pass + + def job(self, *args): + + while True: + data = input("Information to send : ") + message_header = GenericMessageHeader("APPQUERY", + "ApplicationComponent-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, (5, data)) + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + + + def on_init(self, eventobj: Event): + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATE", "ApplicationComponent-"+str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + print(f"App {self.componentinstancenumber} sends an INITIATE to Coordinator") + + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == "ApplicationComponent": + if message_type == "APPQUERY": + source, content = message + print(f"App {self.componentinstancenumber} has received {message} from {source}") + message_header = GenericMessageHeader("APPRESPONSE", + "ApplicationComponent-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, (source, "Hellooooooooo "+content)) + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + + elif message_type == "APPRESPONSE": + source, content = message + print(f"App {self.componentinstancenumber} has received APPRESPONSE {message} from {source}") diff --git a/Routing/FredericksonAlgorithmSimple/RoutingExample/CoordinatorComponent.py b/Routing/FredericksonAlgorithmSimple/RoutingExample/CoordinatorComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..c1f81e7e56aa71d9cbb08463f7eb58e54a6b16bd --- /dev/null +++ b/Routing/FredericksonAlgorithmSimple/RoutingExample/CoordinatorComponent.py @@ -0,0 +1,101 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + +class Coordinator(ComponentModel): + def __init__(self, componentname, componentid): + super(Coordinator, self).__init__(componentname, componentid) + self.RoutingTable = {} + self.Response_Record = {} + + def on_message_from_top(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + print(f"Coordinator receives message from top {messageto} {message_type} {message}") + if messageto == Coordinator.__name__: + if sender == "ApplicationComponent" and message_type == "INITIATE": + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATEBFSCONSTRUCTION", + "Coordinator-" + str(self.componentinstancenumber), + "FredericksonAlgorithmSimpleComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRP, message) + self.send_peer(kickstarter) + print("Coordinator -> Frederickson") + elif sender == "ApplicationComponent" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + if message_type == "APPRESPONSE" or len(self.RoutingTable) > 0: + dest, info = message + path_to_follow = None + for i in self.RoutingTable: + if dest in i: + path_to_follow = i + break + if message_type == "APPRESPONSE": + path_to_follow = self.Response_Record[dest] + + neighbor_id = path_to_follow[1] + if message_type == "APPRESPONSE": + print("Neighbor : ", neighbor_id) + + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (path_to_follow[1:], (path_to_follow), dest, self.componentinstancenumber, info)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"Coordinator {self.componentinstancenumber} sends APPQUERY {neighbor_id} to relay it {dest} - {self.RoutingTable}") + + + def on_message_from_peer(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "FredericksonAlgorithmSimpleComponent" and message_type == "BFSTREECONSTRUCTED": + self.RoutingTable = message + print(f"Coordinator {self.componentinstancenumber} has received BFS Tree {self.RoutingTable}") + + + def on_init(self, eventobj: Event): + pass + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "Coordinator" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + curr_, path_to_follow, dest, source, content = message + print(f"Coordinator {self.componentinstancenumber} has received APPQUERY {curr_, path_to_follow, dest, source}") + + if dest == self.componentinstancenumber: + message_header = GenericMessageHeader(message_type, + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message_ = GenericMessage(message_header, (source, content)) + kickstarter = Event(self, EventTypes.MFRB, message_) + self.send_up(kickstarter) + self.Response_Record[source] = list(reversed(path_to_follow)) + print(f"Response Record : ", self.Response_Record) + # send to app layer + pass + else: + neighbor_id = curr_[1] + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (curr_[1:], path_to_follow, dest, source, content)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"*****Routing from {self.componentinstancenumber} to {neighbor_id} - {self.RoutingTable}*****") + + diff --git a/Routing/FredericksonAlgorithmSimple/RoutingExample/Frederickson(Simple)RoutingExample.py b/Routing/FredericksonAlgorithmSimple/RoutingExample/Frederickson(Simple)RoutingExample.py new file mode 100755 index 0000000000000000000000000000000000000000..5b1f878222358b9fe88bbab19aaaaba69d3f6f8a --- /dev/null +++ b/Routing/FredericksonAlgorithmSimple/RoutingExample/Frederickson(Simple)RoutingExample.py @@ -0,0 +1,20 @@ +from Ahc import Topology +from Channels import P2PFIFOPerfectChannel +import networkx as nx +from Routing.FredericksonAlgorithmSimple.RoutingExample.MachineLearningNodeComponent import MachineLearningNode + +edges = [(0, 1, {"weight": 1}), (0, 2, {"weight": 1}), (1, 3, {"weight": 1}), (2, 4, {"weight": 1}), (4, 5, {"weight": 1}), + (3, 5, {"weight": 1})] + +# undirected graph +graph = nx.Graph() +graph.add_edges_from(edges) + +topology = Topology() +topology.construct_from_graph(graph, MachineLearningNode, P2PFIFOPerfectChannel) +# process1 = MachineLearningNode("MachineLearningNode", 0) +# ComponentRegistry().init() + +topology.start() +while True: pass + diff --git a/Routing/FredericksonAlgorithmSimple/RoutingExample/FredericksonAlgorithmSimpleComponent.py b/Routing/FredericksonAlgorithmSimple/RoutingExample/FredericksonAlgorithmSimpleComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..49561e206432692d2cd279f8c6ce6116d83b01e6 --- /dev/null +++ b/Routing/FredericksonAlgorithmSimple/RoutingExample/FredericksonAlgorithmSimpleComponent.py @@ -0,0 +1,228 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +import time +import numpy as np + + +class FredericksonAlgorithmSimpleComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(FredericksonAlgorithmSimpleComponent, self).__init__(componentname, componentid) + self.queue_lock = Lock() + self.message_queue = [] + if self.componentinstancenumber == 0: + self.is_initiator = True + else: + self.is_initiator = False + + def on_init(self, eventobj: Event): + super(FredericksonAlgorithmSimpleComponent, self).on_init(eventobj) + if not self.is_initiator: + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + + def on_message_from_bottom(self, eventobj: Event): + message_destination = eventobj.eventcontent.header.messageto.split("-")[0] + print(f"{self.componentinstancenumber} received {message_destination}") + if message_destination == FredericksonAlgorithmSimpleComponent.__name__: # process only the messages targeted to this component... + message_source_id = eventobj.eventcontent.header.messagefrom.split("-")[1] + message_type = eventobj.eventcontent.header.messagetype + content = eventobj.eventcontent.payload + + if message_type == "EXPLORE" or message_type == "FORWARD" or message_type=="REVERSE": + self.queue_lock.acquire() # protect message_queue, both component thread and Toueg thread are trying to access data + self.message_queue.append((int(message_source_id), message_type, content)) + self.queue_lock.release() + + + def on_message_from_peer(self, eventobj: Event): + message_header = eventobj.eventcontent.header + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == FredericksonAlgorithmSimpleComponent.__name__: + if self.is_initiator: + if message_header.messagetype == "INITIATEBFSCONSTRUCTION": + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def job(self, *arg): + self.neighbors = Topology().get_neighbors(self.componentinstancenumber) # retrieve all neighbor ids... + self.neighbor_weights = {a: 1 for a in self.neighbors} # for the time being each edge weight is 1... + + def getPaths(data): + if len(data) == 0: + return [[]] + if len(data) == 1: + ret = getPaths(data[list(data.keys())[0]]) + for i in ret: + i.insert(0, list(data.keys())[0]) + return ret + if len(data) > 1: + ret = getPaths(data[list(data.keys())[0]]) + for kl in range(len(ret)): + ret[kl].insert(0, list(data.keys())[0]) + + return ret + getPaths({a: data[a] for a in list(data.keys()) if a != list(data.keys())[0]}) + + tree = self.FredericksonAlgorithmSimple() + paths = getPaths(tree) + + message_payload = paths + message_header = GenericMessageHeader("BFSTREECONSTRUCTED", + self.componentname + "-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, message_payload) + event = Event(self, EventTypes.MFRP, message) + self.send_peer(event) + + def FredericksonAlgorithmSimple(self): + print(f"{self.componentinstancenumber} started FredericksonAlgorithm Thread") + self.positively_responded_nodes = [] + self.level_u = np.inf + self.neighbor_level_u = {} + self.parent_u = None + self.children_u = {} + message_from_future = [] + self.subtree = [] + + self.expectedreplies = expectedreplies = {} + for neighbor in self.neighbors: + self.neighbor_level_u[neighbor] = np.inf + expectedreplies[neighbor] = 0 + + bvalue_u = False + + if self.is_initiator: + self.level_u = 0 + k = 0 + for n in self.neighbors: + if not n in self.children_u: + self.children_u[n] = [] + self.sendMessageToNeighbor(n, "EXPLORE", k + 1) + expectedreplies[n] = 1 + + while True: + new_message = self.waitNewMessage() + sender, message_type, f = new_message + search_depth = f + + if message_type == "FORWARD": + bvalue_u = False + minus = [] + for n in self.neighbors: + if expectedreplies[n] < 0: + minus.append(n) + expectedreplies[n] = 0 + + if self.level_u < f: + + for c in self.positively_responded_nodes: # positively responded... + self.sendMessageToNeighbor(c, "FORWARD", f) + expectedreplies[c] += 1 + self.positively_responded_nodes = [] + if self.level_u == f: + transmitted = 0 + for n in self.neighbors: + if self.neighbor_level_u[n] != f - 1: + self.sendMessageToNeighbor(n, "EXPLORE", f + 1) + expectedreplies[n] = 1 + transmitted += 1 + for min_ in minus: + expectedreplies[min_] -= 1 + # for future_repsonse in message_from_future: + # expectedreplies[future_repsonse[0]] -= 1 + + if transmitted == 0: + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + + elif message_type == "EXPLORE": + f = search_depth + + if self.level_u == np.inf: + self.parent_u = sender + self.level_u = f + self.sendMessageToNeighbor(sender, "REVERSE", (True, self.children_u)) + self.neighbor_level_u[sender] = f - 1 + + elif self.level_u == f: + self.neighbor_level_u[sender] = f - 1 + self.sendMessageToNeighbor(sender, "REVERSE", (False, self.children_u)) + elif self.level_u == f - 1: + b = False + expectedreplies[sender] -= 1 + all_responded = True + for i in expectedreplies: + if expectedreplies[i] != 0: + all_responded = False + break + if all_responded == True: + if self.parent_u is not None: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (bvalue_u, self.children_u)) + elif bvalue_u == True: + k = k + 1 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", k) + expectedreplies[c] = 1 + self.positively_responded_nodes = [] + else: + print("BFS Completed....") + break + else: + print(f"****************Wasted {new_message}****************") + message_from_future.append((sender, message_type, search_depth)) + + elif message_type == "REVERSE": + bvalue_u = False + b = f[0] + expectedreplies[sender] -= 1 + if b == True: + if sender not in self.positively_responded_nodes: + self.positively_responded_nodes.append(sender) + self.children_u[sender] = f[1] + bvalue_u = True + + all_responded = True + for i in expectedreplies: + if expectedreplies[i] != 0: + all_responded = False + break + if all_responded == True: + + if self.parent_u is not None: + self.sendMessageToNeighbor(self.parent_u, "REVERSE", (bvalue_u, self.children_u)) + elif bvalue_u == True: + bvalue_u = False + k = k + 1 + for c in self.positively_responded_nodes: # list(set(self.children_u)): + self.sendMessageToNeighbor(c, "FORWARD", k) + expectedreplies[c] = 1 + self.positively_responded_nodes = [] + else: + print("BFS Completed....") + print("Tree : ", self.children_u) + + break + return {self.componentinstancenumber: self.children_u} + + + def sendMessageToNeighbor(self, neighbor_id, message_type, message): + print(f"{self.componentinstancenumber} sends {message_type} message to neighbor {neighbor_id}") + message_header = GenericMessageHeader(message_type, FredericksonAlgorithmSimpleComponent.__name__+"-"+str(self.componentinstancenumber), + FredericksonAlgorithmSimpleComponent.__name__+"-"+str(neighbor_id), interfaceid=str(self.componentinstancenumber)+"-"+str(neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + + def waitNewMessage(self): + covertion = {0: "p", 1: "q", 2: "r", 3: "s", 4: "t", 5: "u"} + + self.queue_lock.acquire() + if len(self.message_queue) > 0: + message = self.message_queue.pop() + sender = message[0] + message_type = message[1] + last_part = message[2] + self.queue_lock.release() + return (sender, message_type, last_part) + else: + self.queue_lock.release() + return None, None, None \ No newline at end of file diff --git a/Routing/FredericksonAlgorithmSimple/RoutingExample/MachineLearningNodeComponent.py b/Routing/FredericksonAlgorithmSimple/RoutingExample/MachineLearningNodeComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..48d5850d967757f53b1742ad71958b5e4469195f --- /dev/null +++ b/Routing/FredericksonAlgorithmSimple/RoutingExample/MachineLearningNodeComponent.py @@ -0,0 +1,40 @@ +from Ahc import ComponentModel, Event, ConnectorTypes +from Routing.FredericksonAlgorithmSimple.RoutingExample.ApplicationComponent import ApplicationComponent +from Routing.FredericksonAlgorithmSimple.RoutingExample.CoordinatorComponent import Coordinator +from Routing.FredericksonAlgorithmSimple.RoutingExample.FredericksonAlgorithmSimpleComponent import FredericksonAlgorithmSimpleComponent +from Routing.FredericksonAlgorithmSimple.RoutingExample.MiddlewareStubComponent import MiddlewareMessageStub + +# Encapsulator for the Application Node +class MachineLearningNode(ComponentModel): + def __init__(self, componentname, componentid): + super(MachineLearningNode, self).__init__(componentname, componentid) + self.Application = ApplicationComponent(ApplicationComponent.__name__, componentid) + self.Coordinator = Coordinator(Coordinator.__name__, componentid) + self.FrederickAlgorithmSimpleComponent = FredericksonAlgorithmSimpleComponent(FredericksonAlgorithmSimpleComponent.__name__, componentid) + self.MiddlewareStub = MiddlewareMessageStub(MiddlewareMessageStub.__name__, componentid) + + # Application layer only talks with Coordinator, + # Coordinator coordinates all demands of the application by triggering other components if necessary... + self.Application.connect_me_to_component(ConnectorTypes.DOWN, self.Coordinator) + self.Coordinator.connect_me_to_component(ConnectorTypes.UP, self.Application) + self.Coordinator.connect_me_to_component(ConnectorTypes.PEER, self.FrederickAlgorithmSimpleComponent) + self.Coordinator.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + + self.FrederickAlgorithmSimpleComponent.connect_me_to_component(ConnectorTypes.PEER, self.Coordinator) + + self.FrederickAlgorithmSimpleComponent.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.FrederickAlgorithmSimpleComponent) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.Coordinator) + + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.DOWN, self) + self.connect_me_to_component(ConnectorTypes.UP, self.MiddlewareStub) + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + self.send_up(eventobj) # send incoming messages to upper components + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) # send incoming messages from upper components to a channel + diff --git a/Routing/FredericksonAlgorithmSimple/RoutingExample/MiddlewareStubComponent.py b/Routing/FredericksonAlgorithmSimple/RoutingExample/MiddlewareStubComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..09dffb22f6c60ec6da780c3a3127b84c67d9c937 --- /dev/null +++ b/Routing/FredericksonAlgorithmSimple/RoutingExample/MiddlewareStubComponent.py @@ -0,0 +1,19 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + +class MiddlewareMessageStub(ComponentModel): + def __init__(self, componentname, componentid): + super(MiddlewareMessageStub, self).__init__(componentname, componentid) + pass + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "FredericksonAlgorithmSimpleComponent" or message_target == "Coordinator": + self.send_up(eventobj) + + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) + diff --git a/Routing/TouegAlgorithm/CaseStudy/ApplicationComponent.py b/Routing/TouegAlgorithm/CaseStudy/ApplicationComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..c2fded56fb00c17bb086716c94df1d476d83c75e --- /dev/null +++ b/Routing/TouegAlgorithm/CaseStudy/ApplicationComponent.py @@ -0,0 +1,230 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, Thread, Lock +import torch.nn as nn +import torch.optim as optim +import torch +from sklearn import datasets, svm, metrics +from sklearn.model_selection import train_test_split +from sklearn.datasets import fetch_openml +from mnist import MNIST +import numpy as np +import pickle +from sklearn import tree + +import torch.nn.functional as F + +class RNNModel(nn.Module): + def __init__(self, input_dim, hidden_dim, layer_dim, output_dim): + super(RNNModel, self).__init__() + self.hidden_dim = hidden_dim + self.layer_dim = layer_dim + self.rnn = nn.RNN(input_dim, hidden_dim, layer_dim, batch_first=True, nonlinearity='relu') + self.fc = nn.Linear(hidden_dim, output_dim) + + self.queries = {} + + def forward(self, x): + out, hn = self.rnn(x) + out = self.fc(out[:, -1, :]) + return out + +class LSTMModel(nn.Module): + def __init__(self, input_dim, hidden_dim, layer_dim, output_dim): + super(LSTMModel, self).__init__() + self.hidden_dim = hidden_dim + self.layer_dim = layer_dim + self.lstm = nn.LSTM(input_dim, hidden_dim, layer_dim, batch_first=True) + self.fc = nn.Linear(hidden_dim, output_dim) + + def forward(self, x): + out, (hn, cn) = self.lstm(x) + out = self.fc(out[:, -1, :]) + return out + +class GRUModel(nn.Module): + def __init__(self, input_dim, hidden_dim, layer_dim, output_dim): + super(GRUModel, self).__init__() + self.hidden_dim = hidden_dim + + self.layer_dim = layer_dim + self.gru = nn.GRU(input_dim, hidden_dim, batch_first=True) + self.fc = nn.Linear(hidden_dim, output_dim) + + def forward(self, x): + out, hn = self.gru(x) + out = self.fc(out[:, -1, :]) + return out + +class CNNMNIST(torch.nn.Module): + def __init__(self): + super(CNNMNIST, self).__init__() + self.first_cnn_layer = nn.Conv2d(1, 16, 3) + self.first_pool = nn.MaxPool2d(3, 3) + self.first_layer = nn.Linear(16*8*8, 10) + self.output_function = nn.Softmax(dim=1) + + def forward(self, input): + first_cnn_layer = self.first_cnn_layer(input) + first_cnn_out = F.leaky_relu(first_cnn_layer) + first_pool = self.first_pool(first_cnn_out) + # print(first_pool.shape) + first_layer_output = self.first_layer(torch.flatten(first_pool, 1)) + if self.training == False: + output = self.output_function(first_layer_output) + else: + output = first_layer_output + return output + +class MLPMNIST(nn.Module): + def __init__(self): + super(MLPMNIST, self).__init__() + self.first_layer = nn.Linear(28*28, 64) + self.second_layer = nn.Linear(64, 10) + self.output_function = nn.Softmax(dim=1) + + def forward(self, input): + first_layer_output = self.first_layer(input) + # print(first_layer_output.shape) + first_output = F.leaky_relu(first_layer_output) + second_layer_output = self.second_layer(first_output) + if self.training == False: + output = self.output_function(second_layer_output) + else: + output = second_layer_output + return output + +# where the machine learning model is loaded... The top entity for the Node... +class ApplicationComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(ApplicationComponent, self).__init__(componentname, componentid) + self.node_to_model={1: "SVM", 4: "DecisionTree", 3: "RandomForest", 7: "MLP", 9: "CNN", + 10: "LSTM", 12: "RNN", 8: "GRU"} + self.model_to_node={self.node_to_model[a]: a for a in self.node_to_model} + self.queries = {} + self.query_lock = Lock() + + if self.componentinstancenumber == 1: + self.classifier = pickle.load(open("TrainedModels/SVM/svm.model", "rb")) + elif self.componentinstancenumber == 4: + self.classifier = pickle.load(open("TrainedModels/DecisionTree/decisiontree.model", "rb")) + elif self.componentinstancenumber == 3: + self.classifier = pickle.load(open("TrainedModels/RandomForest/randomforest.model", "rb")) + elif self.componentinstancenumber == 7: + self.classifier = MLPMNIST() + file_dir="TrainedModels/MLP/mlp.nn" + self.classifier.load_state_dict(torch.load(file_dir)) + self.classifier.eval() + elif self.componentinstancenumber == 9: + self.classifier = CNNMNIST() + file_dir="TrainedModels/CNN/cnn.nn" + self.classifier.load_state_dict(torch.load(file_dir)) + self.classifier.eval() + elif self.componentinstancenumber == 10: + self.classifier = LSTMModel(28, 32, 1, 10) + file_dir="TrainedModels/LSTM/lstm.nn" + self.classifier.load_state_dict(torch.load(file_dir)) + self.classifier.eval() + elif self.componentinstancenumber == 12: + self.classifier = RNNModel(28, 32, 1, 10) + file_dir="TrainedModels/RNN/rnn.nn" + self.classifier.load_state_dict(torch.load(file_dir)) + self.classifier.eval() + elif self.componentinstancenumber == 8: + self.classifier = GRUModel(28, 32, 1, 10) + file_dir="TrainedModels/GRU/gru.nn" + self.classifier.load_state_dict(torch.load(file_dir)) + self.classifier.eval() + + + + def detect(self, input): + if self.componentinstancenumber in (1, 3, 4): + return self.classifier.predict([input]) + elif self.componentinstancenumber == 7: + output = self.classifier(torch.from_numpy(np.array([input], dtype=np.float32))) + return torch.argmax(output, dim=1) + elif self.componentinstancenumber == 9: # , 10, 12, 8): + output = self.classifier(torch.from_numpy(np.array([input], dtype=np.float32)).reshape((-1, 1, 28, 28))) + return torch.argmax(output, dim=1) + elif self.componentinstancenumber == 10: # , 10, 12, 8): + output = self.classifier(torch.from_numpy(np.array([input], dtype=np.float32)).reshape((-1, 28, 28))) + return torch.argmax(output, dim=1) + elif self.componentinstancenumber == 12: # , 10, 12, 8): + output = self.classifier(torch.from_numpy(np.array([input], dtype=np.float32)).reshape((-1, 28, 28))) + return torch.argmax(output, dim=1) + elif self.componentinstancenumber == 8: # , 10, 12, 8): + output = self.classifier(torch.from_numpy(np.array([input], dtype=np.float32)).reshape((-1, 28, 28))) + return torch.argmax(output, dim=1) + + + + def job(self, *args): + mndata = MNIST("./datasets/mnist/") + images, labels = mndata.load_training() + images = np.array(images, dtype=np.float32) + labels = np.array(labels, dtype=np.long) + images /= (images.max(axis=0) + 1) # Scale values... + images = images.reshape((-1, 28 * 28)) + while True: + data = input("Information to send : ") + try: + number = int(data) + except: + number = 0 + message_header = GenericMessageHeader("APPQUERY", + "ApplicationComponent-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + + for machine_learning_models in self.model_to_node: + message = GenericMessage(message_header, (self.model_to_node[machine_learning_models], images[number])) + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + self.query_lock.acquire() + self.queries[machine_learning_models] = [self.model_to_node[machine_learning_models], None] + self.query_lock.release() + + def on_init(self, eventobj: Event): + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATE", "ApplicationComponent-"+str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + print(f"App {self.componentinstancenumber} sends an INITIATE to Coordinator") + + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == "ApplicationComponent": + if message_type == "APPQUERY": + source, content = message + print(f"App {self.componentinstancenumber} has received {message} from {source}") + message_header = GenericMessageHeader("APPRESPONSE", + "ApplicationComponent-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + resp = self.detect(content) + print(f"Response {resp}") + message = GenericMessage(message_header, (source, "Hellooooooooo "+str(resp))) + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + + elif message_type == "APPRESPONSE": + source, content = message + # print(f"App {self.componentinstancenumber} has received APPRESPONSE {message} from {source}") + self.query_lock.acquire() + self.queries[self.node_to_model[source]][1] = content + all_responded = True + for machine_models in self.queries: + if self.queries[machine_models][1] is None: + all_responded = False + + if all_responded: + print("********************All responded*********************") + for machine_models in self.queries: + print(f"{machine_models} responded {self.queries[machine_models][1]}") + self.query_lock.release() + diff --git a/Routing/TouegAlgorithm/CaseStudy/CaseStudyRun.py b/Routing/TouegAlgorithm/CaseStudy/CaseStudyRun.py new file mode 100755 index 0000000000000000000000000000000000000000..731c02776c6e3ff3db99aab93f98117e2977f3b9 --- /dev/null +++ b/Routing/TouegAlgorithm/CaseStudy/CaseStudyRun.py @@ -0,0 +1,43 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Channels import P2PFIFOPerfectChannel, Channel +import matplotlib.pyplot as plt +import time +import networkx as nx +import numpy as np +from Routing.TouegAlgorithm.CaseStudy.MachineLearningNodeComponent import MachineLearningNode +from Routing.TouegAlgorithm.CaseStudy.TouegAlgorithmComponent import TouegRoutingComponent + + + +edges = [(0, 1, {"weight": 1}), (0, 2, {"weight": 1}), (1, 3, {"weight": 1}), (2, 4, {"weight": 1}), (4, 5, {"weight": 1}), + (3, 5, {"weight": 1}), (1, 4, {"weight": 1}), (4, 6, {"weight": 1}), (4, 7, {"weight": 1}), + (6, 8, {"weight": 1}), (8, 9, {"weight": 1}), (7, 10, {"weight": 1}), (7, 11, {"weight": 1}), + (11, 13, {"weight": 1}), (2, 12, {"weight": 1}), + (7, 9, {"weight": 1})] + + +# undirected graph +graph = nx.Graph() +graph.add_edges_from(edges) + + +# node_to_model = {0: "Server", 1: "SVM", 4: "DecisionTree", 3: "RandomForest", 7: "MLP", 9: "CNN", +# 10: "LSTM", 12: "RNN", 8: "GRU"} +# +# nodecolors = ['g'] * len(graph.nodes) +# nodepos = nx.drawing.spring_layout(graph) +# nx.draw(graph, nodepos, node_size=1500, labels=node_to_model, node_color=nodecolors, with_labels=True, font_weight='bold') +# # plt.draw() +# plt.show() +# +# exit() +print(TouegRoutingComponent.__name__) + +topology = Topology() +topology.construct_from_graph(graph, MachineLearningNode, P2PFIFOPerfectChannel) +# process1 = MachineLearningNode("MachineLearningNode", 0) +# ComponentRegistry().init() + +topology.start() +while True: pass + diff --git a/Routing/TouegAlgorithm/CaseStudy/CoordinatorComponent.py b/Routing/TouegAlgorithm/CaseStudy/CoordinatorComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..6b001fa0962f2bb084f19374dde0e845a0f9626b --- /dev/null +++ b/Routing/TouegAlgorithm/CaseStudy/CoordinatorComponent.py @@ -0,0 +1,91 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + +class Coordinator(ComponentModel): + def __init__(self, componentname, componentid): + super(Coordinator, self).__init__(componentname, componentid) + self.RoutingTable = {} + + def on_message_from_top(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + print(f"Coordinator receives message from top {messageto}") + if messageto == Coordinator.__name__: + if sender == "ApplicationComponent" and message_type == "INITIATE": + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATEROUTE", + "Coordinator-" + str(self.componentinstancenumber), + "TouegRoutingComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRP, message) + self.send_peer(kickstarter) + print("Coordinator -> Toueg") + elif sender == "ApplicationComponent" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + if len(self.RoutingTable) > 0: + dest, info = message + + neighbor_id = self.RoutingTable[self.componentinstancenumber][dest] + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (dest, self.componentinstancenumber, info)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"Coordinator {self.componentinstancenumber} sends APPQUERY {neighbor_id} to relay it {dest} - {self.RoutingTable}") + + + def on_message_from_peer(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "TouegRoutingComponent" and message_type == "ROUTINGCOMPLETED": + self.RoutingTable = message[1] + print(f"Coordinator {self.componentinstancenumber} has received Routing Table") + + def on_init(self, eventobj: Event): + pass + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "Coordinator" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + dest, source, content = message + print(f"Coordinator {self.componentinstancenumber} has received APPQUERY {dest, source}") + + if dest == self.componentinstancenumber: + message_header = GenericMessageHeader(message_type, + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message_ = GenericMessage(message_header, (source, content)) + kickstarter = Event(self, EventTypes.MFRB, message_) + self.send_up(kickstarter) + # send to app layer + pass + else: + if len(self.RoutingTable) > 0: + neighbor_id = self.RoutingTable[self.componentinstancenumber][dest] + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"*****Routing from {self.componentinstancenumber} to {neighbor_id} - {self.RoutingTable}*****") + + + + + + diff --git a/Routing/TouegAlgorithm/CaseStudy/MachineLearningNodeComponent.py b/Routing/TouegAlgorithm/CaseStudy/MachineLearningNodeComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..13bb3739134519a13c392073f94c9a8a429b65fe --- /dev/null +++ b/Routing/TouegAlgorithm/CaseStudy/MachineLearningNodeComponent.py @@ -0,0 +1,40 @@ +from Ahc import ComponentModel, Event, GenericMessage, ConnectorTypes, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Routing.TouegAlgorithm.CaseStudy.ApplicationComponent import ApplicationComponent +from Routing.TouegAlgorithm.CaseStudy.CoordinatorComponent import Coordinator +from Routing.TouegAlgorithm.CaseStudy.TouegAlgorithmComponent import TouegRoutingComponent +from Routing.TouegAlgorithm.CaseStudy.MiddlewareStubComponent import MiddlewareMessageStub + +# Encapsulator for the Application Node +class MachineLearningNode(ComponentModel): + def __init__(self, componentname, componentid): + super(MachineLearningNode, self).__init__(componentname, componentid) + self.Application = ApplicationComponent(ApplicationComponent.__name__, componentid) + self.Coordinator = Coordinator(Coordinator.__name__, componentid) + self.TouegComponent = TouegRoutingComponent(TouegRoutingComponent.__name__, componentid) + self.MiddlewareStub = MiddlewareMessageStub(MiddlewareMessageStub.__name__, componentid) + + # Application layer only talks with Coordinator, + # Coordinator coordinates all demands of the application by triggering other components if necessary... + self.Application.connect_me_to_component(ConnectorTypes.DOWN, self.Coordinator) + self.Coordinator.connect_me_to_component(ConnectorTypes.UP, self.Application) + self.Coordinator.connect_me_to_component(ConnectorTypes.PEER, self.TouegComponent) + self.Coordinator.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + + + self.TouegComponent.connect_me_to_component(ConnectorTypes.PEER, self.Coordinator) + + self.TouegComponent.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.TouegComponent) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.Coordinator) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.DOWN, self) + self.connect_me_to_component(ConnectorTypes.UP, self.MiddlewareStub) + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + self.send_up(eventobj) # send incoming messages to upper components + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) # send incoming messages from upper components to a channel + diff --git a/Routing/TouegAlgorithm/CaseStudy/MiddlewareStubComponent.py b/Routing/TouegAlgorithm/CaseStudy/MiddlewareStubComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..6f7d97a25307ec061c522bff0c9c3d02cae490c6 --- /dev/null +++ b/Routing/TouegAlgorithm/CaseStudy/MiddlewareStubComponent.py @@ -0,0 +1,22 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + + +class MiddlewareMessageStub(ComponentModel): + def __init__(self, componentname, componentid): + super(MiddlewareMessageStub, self).__init__(componentname, componentid) + pass + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "TouegRoutingComponent" or message_target == "Coordinator": + self.send_up(eventobj) + else: + print(f"* {message_target}") + + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) + diff --git a/Routing/TouegAlgorithm/CaseStudy/TouegAlgorithmComponent.py b/Routing/TouegAlgorithm/CaseStudy/TouegAlgorithmComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..0d76a66c8dde2f5f0a00e52f2a43a67c0a01f374 --- /dev/null +++ b/Routing/TouegAlgorithm/CaseStudy/TouegAlgorithmComponent.py @@ -0,0 +1,168 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +import time + +class TouegRoutingComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(TouegRoutingComponent, self).__init__(componentname, componentid) + # two dictionaries are indexed with the component id, hence, while broadcasting, the other nodes can easily understant whose distance information they are currently working + self.DistanceInformation = {self.componentinstancenumber: {}} # stores the shortest path distance values + self.ParentInformation = {self.componentinstancenumber: {}} + self.all_process_ids = [] + self.Su = [] # processed node list, algorithm terminates when all nodes are processed... + self.neighbors = [] # the list of neighbors (ids) connected to main node... + self.message_queue = [] # for the next invication clear it... + self.queue_lock = Lock() + + def on_init(self, eventobj: Event): + super(TouegRoutingComponent, self).on_init(eventobj) + # the first process does not start immediate, it stars with a peer message + if self.componentinstancenumber != 0: + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def on_message_from_bottom(self, eventobj: Event): + message_destination = eventobj.eventcontent.header.messageto.split("-")[0] + if message_destination == TouegRoutingComponent.__name__: # process only the messages targeted to this component... + message_source_id = eventobj.eventcontent.header.messagefrom.split("-")[1] + message_type = eventobj.eventcontent.header.messagetype + content = eventobj.eventcontent.payload + + if message_type == "INFO" or message_type == "DISTANCE": + self.queue_lock.acquire() # protect message_queue, both component thread and Toueg thread are trying to access data + self.message_queue.append((int(message_source_id), message_type, content)) + self.queue_lock.release() + + + def on_message_from_peer(self, eventobj: Event): + message_header = eventobj.eventcontent.header + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "TouegRoutingComponent": + if self.componentinstancenumber == 0: + if message_header.messagetype == "INITIATEROUTE": + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def job(self, *arg): + self.all_process_ids = [] + for element in ComponentRegistry().components: + if "MachineLearningNode" in element: + parts = int(element.split("MachineLearningNode")[1]) + self.all_process_ids.append(parts) + print("Available nodes : ", self.all_process_ids) + self.neighbors = Topology().get_neighbors(self.componentinstancenumber) # retrieve all neighbor ids... + + self.neighbor_weights = {a: 1 for a in self.neighbors} # for the time being each edge weight is 1... + + neighbor_ids = [a for a in self.neighbors] + # found shortest path information will be sent to Coordinator component + message_payload = self.TOUEG(self.all_process_ids, neighbor_ids, self.neighbor_weights) + message_header = GenericMessageHeader("ROUTINGCOMPLETED", self.componentname+"-"+str(self.componentinstancenumber), + "Coordinator-"+str(self.componentinstancenumber)) + message = GenericMessage(message_header, message_payload) + event = Event(self, EventTypes.MFRP, message) + self.send_peer(event) + + + def TOUEG(self, vertices, neigbors, neighbor_weights): + self.process_id = self.componentinstancenumber + self.Su = set([]) + self.ParentInformation = {self.process_id: {}} + + for v in vertices: + if v == self.process_id: + self.DistanceInformation[self.process_id][v] = 0 + self.ParentInformation[self.process_id][v] = v + elif v in neigbors: + self.DistanceInformation[self.process_id][v] = neighbor_weights[v] + self.ParentInformation[self.process_id][v] = v; + else: + self.DistanceInformation[self.process_id][v] = float("inf") + self.ParentInformation[self.process_id][v] = None + + # For pivot selection, nodes are labeled with their process id + unordered_vertices = [a for a in vertices] + unordered_vertices.sort() + sorted_ids = unordered_vertices + current_pivot_index = 0 + vertices = set(vertices) + print(vertices.difference(self.Su)) + while len(vertices.difference(self.Su)) != 0 : # Su != Vertices should be... + pivot = sorted_ids[current_pivot_index] + # print(f"Process {self.process_id} picks pivot={pivot}") + for neighbor in neigbors: + if self.ParentInformation[self.process_id][pivot] == neighbor: + self.sendMessageToNeighbor(neighbor, "INFO", "Child("+str(pivot)+")") + else: + self.sendMessageToNeighbor(neighbor, "INFO", "NotChild("+str(pivot)+")") + # wait for a specific number of messages + while True: + t = self.getPendingChildMessageCount(pivot) + if t != len(neigbors): + time.sleep(0.4) + else: + break + + if self.DistanceInformation[self.process_id][pivot] < float("inf"): + if self.process_id != pivot: + + D_pivot = self.waitPivotDistanceFrom(self.ParentInformation[self.process_id][pivot], pivot) + while D_pivot is None: + D_pivot = self.waitPivotDistanceFrom(self.ParentInformation[self.process_id][pivot], pivot) + + for neighbor in neigbors: + if self.getParticularChildMessage(neighbor, pivot): + self.sendMessageToNeighbor(neighbor, "DISTANCE", (pivot, D_pivot)) + for vertex in vertices: + if self.DistanceInformation[self.process_id][vertex] > self.DistanceInformation[self.process_id][pivot] + D_pivot[pivot][vertex]: + self.DistanceInformation[self.process_id][vertex] = self.DistanceInformation[self.process_id][pivot]+D_pivot[pivot][vertex] + self.ParentInformation[self.process_id][vertex] = self.ParentInformation[self.process_id][pivot] + elif self.process_id == pivot: + received_child_messages = [] + for neighbor in neigbors: + if self.getParticularChildMessage(neighbor, pivot): + received_child_messages.append(neighbor) + for neighbor in received_child_messages: + self.sendMessageToNeighbor(neighbor, "DISTANCE", (pivot, self.DistanceInformation)) + + self.Su.add(pivot) + current_pivot_index += 1 + print(f"\n\nPath Finding has been completed {self.process_id} - {self.DistanceInformation} - {self.ParentInformation}") + return (self.DistanceInformation, self.ParentInformation) + + + def sendMessageToNeighbor(self, neighbor_id, message_type, message): + # print(f"{self.componentinstancenumber} sends {message_type} message to neighbor {neighbor_id}") + message_header = GenericMessageHeader(message_type, TouegRoutingComponent.__name__+"-"+str(self.componentinstancenumber), + TouegRoutingComponent.__name__+"-"+str(neighbor_id), interfaceid=str(self.componentinstancenumber)+"-"+str(neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + + def getPendingChildMessageCount(self, pivot): + child_message_count = 0 + for i in self.message_queue: + if i[1] == "INFO" and (("Child(" + str(pivot) + ")" == i[2]) or ("NotChild(" + str(pivot) + ")" == i[2])): + child_message_count += 1 + return child_message_count + + def waitPivotDistanceFrom(self, source, pivot): + self.queue_lock.acquire() + for index, i in enumerate(self.message_queue): + if i[0] == source and i[1] == "DISTANCE" and i[2][0] == pivot: + data = self.message_queue.pop(index) + self.queue_lock.release() + return data[2][1] + self.queue_lock.release() + return None + + def getParticularChildMessage(self, neigh, pivot): + self.queue_lock.acquire() + for index, i in enumerate(self.message_queue): + if i[0] == neigh and i[1] == "INFO" and "Child("+str(pivot)+")" == i[2]: + data = self.message_queue.pop(index) + self.queue_lock.release() + return True + self.queue_lock.release() + return False + diff --git a/Routing/TouegAlgorithm/Experiments/ApplicationComponent.py b/Routing/TouegAlgorithm/Experiments/ApplicationComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..b50dd1c2c2a30ca106945790e706426af9422b1d --- /dev/null +++ b/Routing/TouegAlgorithm/Experiments/ApplicationComponent.py @@ -0,0 +1,49 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, Thread, Lock +from timeit import default_timer as timer +from Routing.TouegAlgorithm.Experiments.ExperimentDataCollector import ExperimentCollector + +# where the machine learning model is loaded... The top entity for the Node... +class ApplicationComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(ApplicationComponent, self).__init__(componentname, componentid) + self.start_time = None + self.end_time = None + pass + + def on_init(self, eventobj: Event): + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATE", "ApplicationComponent-"+str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + print(f"App {self.componentinstancenumber} sends an INITIATE to Coordinator") + self.start_time = timer() + + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == "ApplicationComponent": + if message_type == "APPQUERY": + source, content = message + print(f"App {self.componentinstancenumber} has received {message} from {source}") + message_header = GenericMessageHeader("APPRESPONSE", + "ApplicationComponent-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, (source, "Hellooooooooo "+content)) + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + + elif message_type == "APPRESPONSE": + source, content = message + print(f"App {self.componentinstancenumber} has received APPRESPONSE {message} from {source}") + elif message_type == "ROUTINGCOMPLETED": + self.end_time = timer() + print(f"App {self.componentinstancenumber} has received RoutingTable {message}") + ExperimentCollector().route_table = message + ExperimentCollector().COMPLETION["INIT"] = self.getDuration() + + def getDuration(self): + return self.end_time - self.start_time \ No newline at end of file diff --git a/Routing/TouegAlgorithm/Experiments/CoordinatorComponent.py b/Routing/TouegAlgorithm/Experiments/CoordinatorComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..4953ee8a241487a10961830ca16632b91d1788fb --- /dev/null +++ b/Routing/TouegAlgorithm/Experiments/CoordinatorComponent.py @@ -0,0 +1,99 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + +class Coordinator(ComponentModel): + def __init__(self, componentname, componentid): + super(Coordinator, self).__init__(componentname, componentid) + self.RoutingTable = {} + + def on_message_from_top(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + print(f"Coordinator receives message from top {messageto}") + if messageto == Coordinator.__name__: + if sender == "ApplicationComponent" and message_type == "INITIATE": + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATEROUTE", + "Coordinator-" + str(self.componentinstancenumber), + "TouegRoutingComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRP, message) + self.send_peer(kickstarter) + print("Coordinator -> Toueg") + elif sender == "ApplicationComponent" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + if len(self.RoutingTable) > 0: + dest, info = message + + neighbor_id = self.RoutingTable[self.componentinstancenumber][dest] + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (dest, self.componentinstancenumber, info)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"Coordinator {self.componentinstancenumber} sends APPQUERY {neighbor_id} to relay it {dest} - {self.RoutingTable}") + + + def on_message_from_peer(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "TouegRoutingComponent" and message_type == "ROUTINGCOMPLETED": + self.RoutingTable = message[1] + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("ROUTINGCOMPLETED", + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, self.RoutingTable) + kickstarter = Event(self, EventTypes.MFRB, message) + self.send_up(kickstarter) + + + + def on_init(self, eventobj: Event): + pass + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "Coordinator" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + dest, source, content = message + print(f"Coordinator {self.componentinstancenumber} has received APPQUERY {dest, source}") + + if dest == self.componentinstancenumber: + message_header = GenericMessageHeader(message_type, + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message_ = GenericMessage(message_header, (source, content)) + kickstarter = Event(self, EventTypes.MFRB, message_) + self.send_up(kickstarter) + # send to app layer + pass + else: + if len(self.RoutingTable) > 0: + neighbor_id = self.RoutingTable[self.componentinstancenumber][dest] + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"*****Routing from {self.componentinstancenumber} to {neighbor_id} - {self.RoutingTable}*****") + + + + + + diff --git a/Routing/TouegAlgorithm/Experiments/Execute.sh b/Routing/TouegAlgorithm/Experiments/Execute.sh new file mode 100755 index 0000000000000000000000000000000000000000..de38b8f417b9c813e6bdd0ed8d5daaf98f95e2b4 --- /dev/null +++ b/Routing/TouegAlgorithm/Experiments/Execute.sh @@ -0,0 +1,5 @@ +for i in {1..50} +do +echo $i +python TouegAlgorithmTesting.py +done \ No newline at end of file diff --git a/Routing/TouegAlgorithm/Experiments/ExperimentDataCollector.py b/Routing/TouegAlgorithm/Experiments/ExperimentDataCollector.py new file mode 100755 index 0000000000000000000000000000000000000000..767b41ca5835c3a52aae82f8935324d3ebde94b0 --- /dev/null +++ b/Routing/TouegAlgorithm/Experiments/ExperimentDataCollector.py @@ -0,0 +1,29 @@ +from Ahc import Lock, Thread +import os +import pickle +from timeit import default_timer as timer + + +def singleton(cls): + instance = [None] + def wrapper(*args, **kwargs): + if instance[0] is None: + instance[0] = cls(*args, **kwargs) + return instance[0] + return wrapper + +@singleton +class ExperimentCollector: + MESSAGE_COUNT = {} + network_graph = None + COMPLETION = {} + route_table = None + def getMessageCounts(self): + return self.MESSAGE_COUNT + def getNetworkGraph(self): + return self.network_graph + + def storeResult(self): + files = [a for a in os.listdir("Results") if ".exp"] + pickle.dump((self.network_graph, self.MESSAGE_COUNT, self.COMPLETION, self.route_table), open("Results/"+str(timer())+".exp", "wb")) + diff --git a/Routing/TouegAlgorithm/Experiments/MachineLearningNodeComponent.py b/Routing/TouegAlgorithm/Experiments/MachineLearningNodeComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..6c289f132349ebca66ed4b60663c5964a4e441b2 --- /dev/null +++ b/Routing/TouegAlgorithm/Experiments/MachineLearningNodeComponent.py @@ -0,0 +1,40 @@ +from Ahc import ComponentModel, Event, GenericMessage, ConnectorTypes, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Routing.TouegAlgorithm.Experiments.ApplicationComponent import ApplicationComponent +from Routing.TouegAlgorithm.Experiments.CoordinatorComponent import Coordinator +from Routing.TouegAlgorithm.Experiments.TouegAlgorithmComponent import TouegRoutingComponent +from Routing.TouegAlgorithm.Experiments.MiddlewareStubComponent import MiddlewareMessageStub + +# Encapsulator for the Application Node +class MachineLearningNode(ComponentModel): + def __init__(self, componentname, componentid): + super(MachineLearningNode, self).__init__(componentname, componentid) + self.Application = ApplicationComponent(ApplicationComponent.__name__, componentid) + self.Coordinator = Coordinator(Coordinator.__name__, componentid) + self.TouegComponent = TouegRoutingComponent(TouegRoutingComponent.__name__, componentid) + self.MiddlewareStub = MiddlewareMessageStub(MiddlewareMessageStub.__name__, componentid) + + # Application layer only talks with Coordinator, + # Coordinator coordinates all demands of the application by triggering other components if necessary... + self.Application.connect_me_to_component(ConnectorTypes.DOWN, self.Coordinator) + self.Coordinator.connect_me_to_component(ConnectorTypes.UP, self.Application) + self.Coordinator.connect_me_to_component(ConnectorTypes.PEER, self.TouegComponent) + self.Coordinator.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + + + self.TouegComponent.connect_me_to_component(ConnectorTypes.PEER, self.Coordinator) + + self.TouegComponent.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.TouegComponent) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.Coordinator) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.DOWN, self) + self.connect_me_to_component(ConnectorTypes.UP, self.MiddlewareStub) + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + self.send_up(eventobj) # send incoming messages to upper components + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) # send incoming messages from upper components to a channel + diff --git a/Routing/TouegAlgorithm/Experiments/MiddlewareStubComponent.py b/Routing/TouegAlgorithm/Experiments/MiddlewareStubComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..f82b602d86790fabaf102c163f6e87f3a2469ec6 --- /dev/null +++ b/Routing/TouegAlgorithm/Experiments/MiddlewareStubComponent.py @@ -0,0 +1,27 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes +from Routing.TouegAlgorithm.Experiments.ExperimentDataCollector import ExperimentCollector + +class MiddlewareMessageStub(ComponentModel): + def __init__(self, componentname, componentid): + super(MiddlewareMessageStub, self).__init__(componentname, componentid) + pass + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "TouegRoutingComponent" or message_target == "Coordinator": + self.send_up(eventobj) + else: + print(f"VVVVVVVVVVVV******** {message_target}") + + + def on_message_from_top(self, eventobj: Event): + if self.componentinstancenumber not in ExperimentCollector().MESSAGE_COUNT: + ExperimentCollector().MESSAGE_COUNT[self.componentinstancenumber] = 1 + else: + ExperimentCollector().MESSAGE_COUNT[self.componentinstancenumber] += 1 + + self.send_down(eventobj) + diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/39128.153763338.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/39128.153763338.exp new file mode 100755 index 0000000000000000000000000000000000000000..3c81b042c9cb2091a8a411fc29c6ab6bb65c4b5e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/39128.153763338.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44378.571889952.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44378.571889952.exp new file mode 100755 index 0000000000000000000000000000000000000000..6bc35dbb7c075f108ead08fb6efedd09b00ba583 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44378.571889952.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44473.040520497.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44473.040520497.exp new file mode 100755 index 0000000000000000000000000000000000000000..54fe3a3174fb2c6b073d1b742de2628fc396977d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44473.040520497.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44874.994376476.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44874.994376476.exp new file mode 100755 index 0000000000000000000000000000000000000000..d5803fadf638d1122e66faeecfab724f0208c8d6 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44874.994376476.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44971.878607387.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44971.878607387.exp new file mode 100755 index 0000000000000000000000000000000000000000..3362abad83d2d91af7b15af6a61beafe88f1018b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44971.878607387.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44997.609191032.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44997.609191032.exp new file mode 100755 index 0000000000000000000000000000000000000000..1d2a808b0fe44c1195dd47ff69110c74874fe494 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/44997.609191032.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45011.619353753.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45011.619353753.exp new file mode 100755 index 0000000000000000000000000000000000000000..c5450d73e33411c8d19f717e4536d4058c707a25 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45011.619353753.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45064.78768488.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45064.78768488.exp new file mode 100755 index 0000000000000000000000000000000000000000..08e2246025a8798bc7306d649596d6d21d8963fc Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45064.78768488.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45080.244918971.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45080.244918971.exp new file mode 100755 index 0000000000000000000000000000000000000000..512450e910717f6ab8b9ec77fc32badc56c60073 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45080.244918971.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45095.792449053.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45095.792449053.exp new file mode 100755 index 0000000000000000000000000000000000000000..9435885267f59e4cc6659f17cf844e9ca03538e2 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45095.792449053.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45110.896163096.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45110.896163096.exp new file mode 100755 index 0000000000000000000000000000000000000000..954ff698407472d4b60d90ea5570da8d0b7bb7b8 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45110.896163096.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45120.415434626.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45120.415434626.exp new file mode 100755 index 0000000000000000000000000000000000000000..451a6ded57376ab42b850f8774bf4261f315f215 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45120.415434626.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45134.698374748.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45134.698374748.exp new file mode 100755 index 0000000000000000000000000000000000000000..6b2b0348c39aa5ee909204c15fef979d8fd9c848 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45134.698374748.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45148.558547015.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45148.558547015.exp new file mode 100755 index 0000000000000000000000000000000000000000..78825e65c08350c13fd5c8959db3836337120bb3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45148.558547015.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45163.865775689.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45163.865775689.exp new file mode 100755 index 0000000000000000000000000000000000000000..b21c776c0853b1126c64cf880392716e8dcb5a31 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45163.865775689.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45177.254017178.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45177.254017178.exp new file mode 100755 index 0000000000000000000000000000000000000000..bbb1b6b2837741ee1c5e45e4dd4c8ed53f9ad9a9 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45177.254017178.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45191.639326258.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45191.639326258.exp new file mode 100755 index 0000000000000000000000000000000000000000..2ea7cd836fb2a1d50ad8437f12462c2c401783b4 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45191.639326258.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45203.062973269.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45203.062973269.exp new file mode 100755 index 0000000000000000000000000000000000000000..e8a34cd2e691a5b1c7c7f703fb33ba1992d3fef4 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45203.062973269.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45212.7909261.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45212.7909261.exp new file mode 100755 index 0000000000000000000000000000000000000000..b9639e5044addccf49c99f922548b3593401c3fa Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45212.7909261.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45225.25779722.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45225.25779722.exp new file mode 100755 index 0000000000000000000000000000000000000000..804e976c05e78e8dc9a6249a0c5a350f50608c76 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45225.25779722.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45235.408135077.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45235.408135077.exp new file mode 100755 index 0000000000000000000000000000000000000000..332ff4c240c5536673dd78ca342379f0d3dd7567 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45235.408135077.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45249.455209561.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45249.455209561.exp new file mode 100755 index 0000000000000000000000000000000000000000..1cf6cb2d11df80c749e94d91ddfe4e78976c6238 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45249.455209561.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45261.748365902.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45261.748365902.exp new file mode 100755 index 0000000000000000000000000000000000000000..0de6b6581126d1460385108458448d7cc47b5174 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45261.748365902.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45275.844870405.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45275.844870405.exp new file mode 100755 index 0000000000000000000000000000000000000000..d7f02306a70adc78b8757d9244a5227ca55e007e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45275.844870405.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45289.012519037.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45289.012519037.exp new file mode 100755 index 0000000000000000000000000000000000000000..8057f2ac6c9bf8998653ab95f6dee00d608ee965 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45289.012519037.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45299.890100206.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45299.890100206.exp new file mode 100755 index 0000000000000000000000000000000000000000..c279879677318203c5f232a88ca4702a7dbd67eb Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45299.890100206.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45311.832156336.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45311.832156336.exp new file mode 100755 index 0000000000000000000000000000000000000000..3aa07d94b7343137ff627c57bed88b4e7f7bfbe8 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45311.832156336.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45322.812122368.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45322.812122368.exp new file mode 100755 index 0000000000000000000000000000000000000000..0acc6168101b4494a9f29fc2106ea5f6180df86a Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45322.812122368.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45336.24828845.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45336.24828845.exp new file mode 100755 index 0000000000000000000000000000000000000000..ee73c56f78a9d2452d4644b956a6e0547e8a28c6 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45336.24828845.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45345.543523311.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45345.543523311.exp new file mode 100755 index 0000000000000000000000000000000000000000..738c3a80cdf3d26ea4b56483c1a02e4adf408031 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45345.543523311.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45360.056135528.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45360.056135528.exp new file mode 100755 index 0000000000000000000000000000000000000000..57b08877c416b3e4dfd3bb07df6f4e319cc1b868 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45360.056135528.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45370.085936958.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45370.085936958.exp new file mode 100755 index 0000000000000000000000000000000000000000..f4c0447344dbf23f3b60fda64bf3e274fd457047 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45370.085936958.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45386.164789714.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45386.164789714.exp new file mode 100755 index 0000000000000000000000000000000000000000..3509e513ea1d8869fb0ec81da23287fc44951e63 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45386.164789714.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45401.627503717.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45401.627503717.exp new file mode 100755 index 0000000000000000000000000000000000000000..3ba61181613876bd17ae419173f514ce7222a631 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45401.627503717.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45409.816891241.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45409.816891241.exp new file mode 100755 index 0000000000000000000000000000000000000000..f035323075519aba1b4351e76cdd7e3477d7e41d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45409.816891241.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45424.450899708.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45424.450899708.exp new file mode 100755 index 0000000000000000000000000000000000000000..33918521be74bc25cbdf00253f40f6e92cd745d2 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45424.450899708.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45436.971903542.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45436.971903542.exp new file mode 100755 index 0000000000000000000000000000000000000000..fd3fc240287729617853c21bff584d8a9581d800 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/45436.971903542.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46173.690273885.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46173.690273885.exp new file mode 100755 index 0000000000000000000000000000000000000000..b637b2a6ddb1f7caefbb8d8dcb6afb247bb17f64 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46173.690273885.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46187.518073952.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46187.518073952.exp new file mode 100755 index 0000000000000000000000000000000000000000..d9bba780477c321828ae4cab6e65bc5cda8a2e99 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46187.518073952.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46199.955810925.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46199.955810925.exp new file mode 100755 index 0000000000000000000000000000000000000000..cbcec7aa8fa85ad0f9e540c7ecbef591a5d8f471 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46199.955810925.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46211.185593148.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46211.185593148.exp new file mode 100755 index 0000000000000000000000000000000000000000..3c9fd9d17bd97d0ca3177cc5308772b244db4b95 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46211.185593148.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46224.810867838.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46224.810867838.exp new file mode 100755 index 0000000000000000000000000000000000000000..2047a61a0f9847c05c83f628123195f093b09df3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46224.810867838.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46238.257111517.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46238.257111517.exp new file mode 100755 index 0000000000000000000000000000000000000000..689d50756fc0b53bcded1f862f06da49f13521df Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46238.257111517.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46253.772362101.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46253.772362101.exp new file mode 100755 index 0000000000000000000000000000000000000000..9b6443c90c287961b23601e8fc9f8eb1fcc19acb Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46253.772362101.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46264.772096076.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46264.772096076.exp new file mode 100755 index 0000000000000000000000000000000000000000..5c8697edf1bd35ed8578ee79355b8ac2bd491873 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46264.772096076.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46277.816493847.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46277.816493847.exp new file mode 100755 index 0000000000000000000000000000000000000000..41debf4efb77f124ee40470828c2da6a2c483351 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46277.816493847.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46288.272829593.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46288.272829593.exp new file mode 100755 index 0000000000000000000000000000000000000000..e523f18fae759d74f4b4ad7d87fe9e863932d8a3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46288.272829593.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46296.448677589.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46296.448677589.exp new file mode 100755 index 0000000000000000000000000000000000000000..330eb2d64e765b3c614f70a00509994cc448d3b5 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46296.448677589.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46304.47754489.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46304.47754489.exp new file mode 100755 index 0000000000000000000000000000000000000000..5e04c82ec27fd69377c757e0eb0e5f1eb2308ea5 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46304.47754489.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46318.768039474.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46318.768039474.exp new file mode 100755 index 0000000000000000000000000000000000000000..09aa9e5f5830ba7171052f69bca0cd8259ecbd61 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46318.768039474.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46328.517735545.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46328.517735545.exp new file mode 100755 index 0000000000000000000000000000000000000000..94a2e9f06c0bdda8d860dfdb02f2782f4704ab1e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46328.517735545.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46340.62918206.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46340.62918206.exp new file mode 100755 index 0000000000000000000000000000000000000000..0bf22d735ad8442b240698ba019f12affdcce1a3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46340.62918206.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46353.415892859.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46353.415892859.exp new file mode 100755 index 0000000000000000000000000000000000000000..719c7bac88b30d611cafffc60f3d53e5e6907a88 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46353.415892859.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46361.45228481.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46361.45228481.exp new file mode 100755 index 0000000000000000000000000000000000000000..e9dc6c426192e9c7388769a5b12fc3690f739e6c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46361.45228481.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46371.388200208.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46371.388200208.exp new file mode 100755 index 0000000000000000000000000000000000000000..346ac764555ae95db77572d22b5cb0ec6c16c0c1 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46371.388200208.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46381.977522335.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46381.977522335.exp new file mode 100755 index 0000000000000000000000000000000000000000..1224b2dc61c0e73b0d1f328e0d0f48a8c3fb299e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46381.977522335.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46392.92616393.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46392.92616393.exp new file mode 100755 index 0000000000000000000000000000000000000000..bda75a3e349f647788cb4dfd547ac41e5c7e4ca1 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46392.92616393.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46409.83743559.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46409.83743559.exp new file mode 100755 index 0000000000000000000000000000000000000000..76f62775e3e92ecc8aa3489d9ebab0676115cf88 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46409.83743559.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46424.373784889.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46424.373784889.exp new file mode 100755 index 0000000000000000000000000000000000000000..f7a8b5a809400ff6ff9278c548d58e8ade42dcd6 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46424.373784889.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46436.526867827.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46436.526867827.exp new file mode 100755 index 0000000000000000000000000000000000000000..1bcb3372a31e24ccd951620cd292fd0df1721277 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46436.526867827.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46451.001603798.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46451.001603798.exp new file mode 100755 index 0000000000000000000000000000000000000000..086976565f9dadd401c8ec978b1bfa1c74867049 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46451.001603798.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46461.767906142.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46461.767906142.exp new file mode 100755 index 0000000000000000000000000000000000000000..c1bffa3752d6c1f8453d2f4767eab38bb06b50f8 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46461.767906142.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46475.314330274.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46475.314330274.exp new file mode 100755 index 0000000000000000000000000000000000000000..5e45130e7524e8945d06c5c58c771364b6f64621 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46475.314330274.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46486.223146242.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46486.223146242.exp new file mode 100755 index 0000000000000000000000000000000000000000..592f496882716670b2a618ca8855c7b2dd9affbc Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46486.223146242.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46499.340492904.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46499.340492904.exp new file mode 100755 index 0000000000000000000000000000000000000000..8d57314d53f64c27a604e1d47ae01bf850edd652 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46499.340492904.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46507.335938778.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46507.335938778.exp new file mode 100755 index 0000000000000000000000000000000000000000..df6b69b4fee8de0fa52ccf471f6b4591815eca58 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46507.335938778.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46521.097704681.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46521.097704681.exp new file mode 100755 index 0000000000000000000000000000000000000000..9bef35166c0c862d0938cbbda00a047bfe453b1b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46521.097704681.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46531.781878612.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46531.781878612.exp new file mode 100755 index 0000000000000000000000000000000000000000..8354f37dd36daebb6b3cd1d4020e652c16a45451 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46531.781878612.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46545.394767535.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46545.394767535.exp new file mode 100755 index 0000000000000000000000000000000000000000..fd6051e8dbf5653fc11d2efc82c25923ea25268d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46545.394767535.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46556.783100727.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46556.783100727.exp new file mode 100755 index 0000000000000000000000000000000000000000..32375cc7131b7514c3b2974c29774f002c580871 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46556.783100727.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46569.265759538.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46569.265759538.exp new file mode 100755 index 0000000000000000000000000000000000000000..b82347caab2ff79077678d17e41feeaeaa05caf8 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46569.265759538.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46584.200591449.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46584.200591449.exp new file mode 100755 index 0000000000000000000000000000000000000000..52b0b834eca2b027d6078a2a0625cc393fc7332f Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46584.200591449.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46602.53106779.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46602.53106779.exp new file mode 100755 index 0000000000000000000000000000000000000000..63f69df078749d5cabcb470bf13f3e4f52f81551 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46602.53106779.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46613.792075268.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46613.792075268.exp new file mode 100755 index 0000000000000000000000000000000000000000..836a7a5ea570617fd4508751885e2bc8743efd98 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46613.792075268.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46626.389280302.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46626.389280302.exp new file mode 100755 index 0000000000000000000000000000000000000000..666b264153937397efe52310b4433bdedd6ce915 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46626.389280302.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46636.159457054.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46636.159457054.exp new file mode 100755 index 0000000000000000000000000000000000000000..97e06fdcae7c7c07c10586aafce0006272eb34c3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46636.159457054.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46650.750396034.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46650.750396034.exp new file mode 100755 index 0000000000000000000000000000000000000000..0f7c37c9adc72c3f308b2939abb8d07773f5e142 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46650.750396034.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46665.877938105.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46665.877938105.exp new file mode 100755 index 0000000000000000000000000000000000000000..701904cfa8cbd2558687fe123b4e65934f3cd1e4 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46665.877938105.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46675.036494376.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46675.036494376.exp new file mode 100755 index 0000000000000000000000000000000000000000..1c726e3c246ed8311388a9a8c958b1f78cdb7e29 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46675.036494376.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46685.161267444.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46685.161267444.exp new file mode 100755 index 0000000000000000000000000000000000000000..0cb449db5239948aeb34ae2a73f0b5cbb88adeb4 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46685.161267444.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46694.034387678.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46694.034387678.exp new file mode 100755 index 0000000000000000000000000000000000000000..829781d371b0bdbf9c278d612884a0a5d03161f2 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46694.034387678.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46705.774300783.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46705.774300783.exp new file mode 100755 index 0000000000000000000000000000000000000000..fc61c5f5928b5191085735ed7ff895cc2da6567e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46705.774300783.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46723.22638664.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46723.22638664.exp new file mode 100755 index 0000000000000000000000000000000000000000..6a0c72fd2dc27b35bff2353bd08e4a61f6599847 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46723.22638664.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46733.894339811.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46733.894339811.exp new file mode 100755 index 0000000000000000000000000000000000000000..a62ed76265bc571b8eab8cf3c5474e250067bfe2 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46733.894339811.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46742.515401532.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46742.515401532.exp new file mode 100755 index 0000000000000000000000000000000000000000..ec87c55831902413f2fdd7936ab07b9f7a7f6966 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46742.515401532.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46752.401984566.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46752.401984566.exp new file mode 100755 index 0000000000000000000000000000000000000000..745dc6d676922662d104c37b8a1c0fcf27cc295c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46752.401984566.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46761.53150597.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46761.53150597.exp new file mode 100755 index 0000000000000000000000000000000000000000..fa2cf2e0576d1321432d718d3b4eb52ab2d8013c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46761.53150597.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46773.456595697.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46773.456595697.exp new file mode 100755 index 0000000000000000000000000000000000000000..cd5ac1167ae4184d6ae43b232123799a5dc6f332 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46773.456595697.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46784.049403286.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46784.049403286.exp new file mode 100755 index 0000000000000000000000000000000000000000..0b19b95254e5fe7c55d4eba255096e7fbe7bb073 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46784.049403286.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46799.256314692.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46799.256314692.exp new file mode 100755 index 0000000000000000000000000000000000000000..0e4d4da81b2ec70fe171441257bf9a8af723ee8c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46799.256314692.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46811.217693158.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46811.217693158.exp new file mode 100755 index 0000000000000000000000000000000000000000..fab52f40de9594fbf8b72f9c321e9b7aff34ce86 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46811.217693158.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46822.856015388.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46822.856015388.exp new file mode 100755 index 0000000000000000000000000000000000000000..d5782abb04d4ed3dbf03d694f1781e8b00558337 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46822.856015388.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46834.424771479.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46834.424771479.exp new file mode 100755 index 0000000000000000000000000000000000000000..c7651fa859e5c8f808cc4534c39d94080c123462 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46834.424771479.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46845.406210421.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46845.406210421.exp new file mode 100755 index 0000000000000000000000000000000000000000..7c6ba2f8ffe0a3d8e0f03de710de3ffb5200e04f Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46845.406210421.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46853.943453532.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46853.943453532.exp new file mode 100755 index 0000000000000000000000000000000000000000..5d3af02878c8b99d7d5d1ba3053fbf5f820fd391 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46853.943453532.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46866.140592679.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46866.140592679.exp new file mode 100755 index 0000000000000000000000000000000000000000..677349eb11b161e21e1efe0611e26eefeb097500 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46866.140592679.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46876.919008661.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46876.919008661.exp new file mode 100755 index 0000000000000000000000000000000000000000..e0b88511fdab6d1e44105512d4b4bb32ec4aec26 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46876.919008661.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46887.594169743.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46887.594169743.exp new file mode 100755 index 0000000000000000000000000000000000000000..3af6feb5eae935dec57b5649241d85bd5d3c123b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46887.594169743.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46895.101511999.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46895.101511999.exp new file mode 100755 index 0000000000000000000000000000000000000000..26484b31f0a9cedcc2eac584c89dedf6126ef5df Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46895.101511999.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46911.021225382.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46911.021225382.exp new file mode 100755 index 0000000000000000000000000000000000000000..bfaf015b41b072521439b19e2b10733d594c30c2 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46911.021225382.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46920.300888091.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46920.300888091.exp new file mode 100755 index 0000000000000000000000000000000000000000..d8301c5da2b9a446b615ab31b2c384862f54887d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46920.300888091.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46932.955099477.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46932.955099477.exp new file mode 100755 index 0000000000000000000000000000000000000000..b52ff9c569f6181869bdd202dc1fcd79cd863cb7 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46932.955099477.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46940.563394567.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46940.563394567.exp new file mode 100755 index 0000000000000000000000000000000000000000..b0452c5306b60f79154332a6c0ba3cae07354c06 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46940.563394567.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46951.340934297.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46951.340934297.exp new file mode 100755 index 0000000000000000000000000000000000000000..2257295db53596885b59eb797911d6d6f5150636 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46951.340934297.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46968.623643978.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46968.623643978.exp new file mode 100755 index 0000000000000000000000000000000000000000..68f815d43c5af9da7662a50b62a9b4cc3923175a Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46968.623643978.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46979.153076522.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46979.153076522.exp new file mode 100755 index 0000000000000000000000000000000000000000..08c4571f88e7fbb0d45c782ed2ea7165376d5d12 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46979.153076522.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46992.853616664.exp b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46992.853616664.exp new file mode 100755 index 0000000000000000000000000000000000000000..79387f227b16de9da14bc7968216ba85a9ef912b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/10Nodes/46992.853616664.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1006.562745038.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1006.562745038.exp new file mode 100755 index 0000000000000000000000000000000000000000..88eafde6a03562d95b7facb601301ebe0fa304ed Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1006.562745038.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1068.38101792.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1068.38101792.exp new file mode 100755 index 0000000000000000000000000000000000000000..9ab5d77989c68e327cfd2d01915a5337ebdc1e5c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1068.38101792.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1117.675445701.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1117.675445701.exp new file mode 100755 index 0000000000000000000000000000000000000000..b5480c4ab87f2e6231b73725a66e9cbb48cf2852 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1117.675445701.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1176.106883019.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1176.106883019.exp new file mode 100755 index 0000000000000000000000000000000000000000..92070b50d5b63f98ad49cf132c1a656accad10c1 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1176.106883019.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1217.846698135.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1217.846698135.exp new file mode 100755 index 0000000000000000000000000000000000000000..c22a4c1ec71dad102f8678cda2a71c4fd04a476f Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1217.846698135.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1271.678702407.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1271.678702407.exp new file mode 100755 index 0000000000000000000000000000000000000000..d8054039d0222a57421de19e56066bd3e44d03bc Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1271.678702407.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1328.114226091.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1328.114226091.exp new file mode 100755 index 0000000000000000000000000000000000000000..cbc3ce7165e431a133850ba72a10321fe62307cb Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1328.114226091.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1383.055099452.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1383.055099452.exp new file mode 100755 index 0000000000000000000000000000000000000000..ef05ae76f89bd2780143986f620e5ebe938b8abc Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1383.055099452.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1440.805194115.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1440.805194115.exp new file mode 100755 index 0000000000000000000000000000000000000000..a1946d9116ba095dedd6170fdce3d36e1f977472 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1440.805194115.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1496.158618203.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1496.158618203.exp new file mode 100755 index 0000000000000000000000000000000000000000..0241a1566f6e75325725896e736dc8184021242a Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1496.158618203.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1551.947345611.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1551.947345611.exp new file mode 100755 index 0000000000000000000000000000000000000000..01730b7e9e6a10dd78e8e6d65bf8df845d46a09e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1551.947345611.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1606.757693506.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1606.757693506.exp new file mode 100755 index 0000000000000000000000000000000000000000..2d0d42388808968279cf2a869812b3b6220e1137 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1606.757693506.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1658.231541152.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1658.231541152.exp new file mode 100755 index 0000000000000000000000000000000000000000..d889a5c08dd51d8bfca7b7975f24b0d9fad14595 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1658.231541152.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1715.272068628.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1715.272068628.exp new file mode 100755 index 0000000000000000000000000000000000000000..9aab625deafa86e2e17797f6ddab70fdcb11ae4b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1715.272068628.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1775.23631436.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1775.23631436.exp new file mode 100755 index 0000000000000000000000000000000000000000..9e6070b213726a69a4fa721aa62e97f1dcc9aa1d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1775.23631436.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1853.981790397.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1853.981790397.exp new file mode 100755 index 0000000000000000000000000000000000000000..283a5b3ad557b7cb8b8a3a245f0cec83646ad20f Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1853.981790397.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1912.432958378.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1912.432958378.exp new file mode 100755 index 0000000000000000000000000000000000000000..6bf971f4c749b4390938aebcd328d14f03d61075 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1912.432958378.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1970.580573934.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1970.580573934.exp new file mode 100755 index 0000000000000000000000000000000000000000..33405eb2beb1c816ed0e88c35ca8a4fdf26d785b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/1970.580573934.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2046.568350079.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2046.568350079.exp new file mode 100755 index 0000000000000000000000000000000000000000..e57c2a43d86e6192095361b76b1f6021e715b1fd Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2046.568350079.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2092.985348246.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2092.985348246.exp new file mode 100755 index 0000000000000000000000000000000000000000..d5d0536857b69e3eb25776c517486f2205625b19 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2092.985348246.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2134.217308286.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2134.217308286.exp new file mode 100755 index 0000000000000000000000000000000000000000..593effa89ae6602d4899f8a2a0af080b0ea76387 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2134.217308286.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2188.349804873.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2188.349804873.exp new file mode 100755 index 0000000000000000000000000000000000000000..9b596b69b859b6c9c4c7009686eaf442c65ba890 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2188.349804873.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2238.696890167.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2238.696890167.exp new file mode 100755 index 0000000000000000000000000000000000000000..55c894e869256e1d1a8ba8150e037938573f40dd Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2238.696890167.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2283.416333506.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2283.416333506.exp new file mode 100755 index 0000000000000000000000000000000000000000..bb6b3f31ab7f295538fb9a78ad74a511f8a232ad Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2283.416333506.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2336.987239328.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2336.987239328.exp new file mode 100755 index 0000000000000000000000000000000000000000..239500fe556dfdc0ab4163a996a78c00cc9311aa Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2336.987239328.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2390.579845922.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2390.579845922.exp new file mode 100755 index 0000000000000000000000000000000000000000..ef63c0cd06db9130b5b7a1bac2e4a9ca579ffb8d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2390.579845922.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2445.795584522.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2445.795584522.exp new file mode 100755 index 0000000000000000000000000000000000000000..825df21ad42bf243b13dd6f22ceaabd4121171ff Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2445.795584522.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2498.073157575.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2498.073157575.exp new file mode 100755 index 0000000000000000000000000000000000000000..717faedeea62820422c88dfaaf282adf573687a0 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2498.073157575.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2553.959836356.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2553.959836356.exp new file mode 100755 index 0000000000000000000000000000000000000000..8aa8212d866acb25cb8d84107bd659ac41b3363b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2553.959836356.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2605.729052937.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2605.729052937.exp new file mode 100755 index 0000000000000000000000000000000000000000..e65b76693a1b1f35476f28a8d1e89df1a00f5596 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2605.729052937.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2663.93273.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2663.93273.exp new file mode 100755 index 0000000000000000000000000000000000000000..20356f1916450b9e9253ff269d45d82845a61d82 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2663.93273.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2713.949359231.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2713.949359231.exp new file mode 100755 index 0000000000000000000000000000000000000000..065269a2a32fa5e5121386f6b719ea5e732091b8 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2713.949359231.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2761.264410683.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2761.264410683.exp new file mode 100755 index 0000000000000000000000000000000000000000..0911b090caf589b1e3ff09c0ee84b7e9344bded5 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2761.264410683.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2825.024029291.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2825.024029291.exp new file mode 100755 index 0000000000000000000000000000000000000000..ad20e09869652597f7d24f816de75dbc87bda9e3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2825.024029291.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2887.09596514.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2887.09596514.exp new file mode 100755 index 0000000000000000000000000000000000000000..70242feee04435d5ad6a2a2ee021f97c65fdc7de Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2887.09596514.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2930.638507147.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2930.638507147.exp new file mode 100755 index 0000000000000000000000000000000000000000..7f43abb1a76dc9cf2470a4b1872dc2b469de1f0e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2930.638507147.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2993.561791354.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2993.561791354.exp new file mode 100755 index 0000000000000000000000000000000000000000..9c8d48e2ff07079b1cece533ad5d09ef26ef2b3d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/2993.561791354.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3052.875170534.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3052.875170534.exp new file mode 100755 index 0000000000000000000000000000000000000000..147b5da462cb060ea110583c11f1f2528b014597 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3052.875170534.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3106.674775907.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3106.674775907.exp new file mode 100755 index 0000000000000000000000000000000000000000..813aa3f216d10697d9c29531c1ae4e0a87ef9f0a Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3106.674775907.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3166.26395792.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3166.26395792.exp new file mode 100755 index 0000000000000000000000000000000000000000..73ade86b59bbe95432e7c1899dedc789e89cdc06 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3166.26395792.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3236.24628371.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3236.24628371.exp new file mode 100755 index 0000000000000000000000000000000000000000..69f6b96bdd8ba76751eb6e67194f5c288ce34363 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3236.24628371.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3288.514906454.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3288.514906454.exp new file mode 100755 index 0000000000000000000000000000000000000000..26c7615249c81febc6d827805b6aa335d34242c2 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3288.514906454.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3345.341646057.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3345.341646057.exp new file mode 100755 index 0000000000000000000000000000000000000000..7d066734cade2362a70de7077261cf5216d03143 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3345.341646057.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3407.446232261.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3407.446232261.exp new file mode 100755 index 0000000000000000000000000000000000000000..093e047c9998944cb96dce638bbc6de3b3cf9b1d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3407.446232261.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3452.392678625.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3452.392678625.exp new file mode 100755 index 0000000000000000000000000000000000000000..245ecede6e0bced34b90164e3103b07ae464bddf Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3452.392678625.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3502.043684262.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3502.043684262.exp new file mode 100755 index 0000000000000000000000000000000000000000..4555b7bb3be009e993509ce2c6d3d5843412e33e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3502.043684262.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3559.809698992.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3559.809698992.exp new file mode 100755 index 0000000000000000000000000000000000000000..f252cf20a7c9063f821a1a3d412e82d24d48b355 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3559.809698992.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3613.361034559.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3613.361034559.exp new file mode 100755 index 0000000000000000000000000000000000000000..1229e2c7bc34517cf8a4a7c0b5799e1e7237b3b3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3613.361034559.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3673.358663652.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3673.358663652.exp new file mode 100755 index 0000000000000000000000000000000000000000..0fd1187cfaa02016872ee533bb3b6203989d8412 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3673.358663652.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3726.285839.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3726.285839.exp new file mode 100755 index 0000000000000000000000000000000000000000..4a1af6ee17a885043bbfa98e2e4ff04af736d04f Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/3726.285839.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47726.658034138.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47726.658034138.exp new file mode 100755 index 0000000000000000000000000000000000000000..1752c64373e988cf8b13e132ac2c70aa78e3feb4 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47726.658034138.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47792.472899.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47792.472899.exp new file mode 100755 index 0000000000000000000000000000000000000000..22fac0cd806b2bfb54a218b7498533ed286c0a92 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47792.472899.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47863.277921993.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47863.277921993.exp new file mode 100755 index 0000000000000000000000000000000000000000..a5df59ebf783630274496e936b1457a5bb2ac65c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47863.277921993.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47989.637853358.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47989.637853358.exp new file mode 100755 index 0000000000000000000000000000000000000000..e8df5350e9eaf68e06c9f517efd75da62a2ea000 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/47989.637853358.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48047.415297852.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48047.415297852.exp new file mode 100755 index 0000000000000000000000000000000000000000..814c4a4bc43b2ed2c28e350190cfc3b7b00d5f2f Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48047.415297852.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48111.249632369.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48111.249632369.exp new file mode 100755 index 0000000000000000000000000000000000000000..93987a3d1893c66f4ef47d9b654bd1471dc5b673 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48111.249632369.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48173.147430805.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48173.147430805.exp new file mode 100755 index 0000000000000000000000000000000000000000..ce6ca7e184af873b223eea50c015528a266f8378 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48173.147430805.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48235.872981845.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48235.872981845.exp new file mode 100755 index 0000000000000000000000000000000000000000..8abe56fb333be96d845a22c550c199cc54965f80 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48235.872981845.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48303.794486568.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48303.794486568.exp new file mode 100755 index 0000000000000000000000000000000000000000..8e88b6b39bba1edf98de42b9fafcb3b782f5ba09 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48303.794486568.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48365.373205841.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48365.373205841.exp new file mode 100755 index 0000000000000000000000000000000000000000..32edafbec3ffd2aced7730e2d3aae637f8711161 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48365.373205841.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48413.42843103.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48413.42843103.exp new file mode 100755 index 0000000000000000000000000000000000000000..a231280edbeb48957b6c31f578aedf1296fd267d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48413.42843103.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48462.969504609.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48462.969504609.exp new file mode 100755 index 0000000000000000000000000000000000000000..34c352b2876ea09148f1e582d5b839968d52c750 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48462.969504609.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48521.259686597.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48521.259686597.exp new file mode 100755 index 0000000000000000000000000000000000000000..9913af2675a675067f44c33672d13ed28aeb392e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48521.259686597.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48568.887275352.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48568.887275352.exp new file mode 100755 index 0000000000000000000000000000000000000000..061df3e50a232de492c4a21d8507faf7ddda23d8 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48568.887275352.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48620.017944469.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48620.017944469.exp new file mode 100755 index 0000000000000000000000000000000000000000..014ab6f47510e02b6460c8d085e048e104fc2fd4 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48620.017944469.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48675.090400394.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48675.090400394.exp new file mode 100755 index 0000000000000000000000000000000000000000..a1af17441ca6a15288ceb6211285e1d72074d293 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48675.090400394.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48728.021408068.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48728.021408068.exp new file mode 100755 index 0000000000000000000000000000000000000000..2c6dbe55b72d367178fdf286ea1447a98e4309be Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48728.021408068.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48781.122405208.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48781.122405208.exp new file mode 100755 index 0000000000000000000000000000000000000000..694475d1f233418dd299b5a8510a7e4497ceb4be Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48781.122405208.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48839.890716778.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48839.890716778.exp new file mode 100755 index 0000000000000000000000000000000000000000..53c0627190c7894f9c3cec5e034b465d9726c47c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48839.890716778.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48896.530937294.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48896.530937294.exp new file mode 100755 index 0000000000000000000000000000000000000000..218dec23201776cde913335f6dc9808aeaab59f6 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48896.530937294.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48936.499677336.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48936.499677336.exp new file mode 100755 index 0000000000000000000000000000000000000000..5ca943900b9ca20ce011fbd29b7b9d6b08c9ebb4 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48936.499677336.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48987.821992981.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48987.821992981.exp new file mode 100755 index 0000000000000000000000000000000000000000..414c4180f7a6abee8961003117aaa668cb2afa2e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/48987.821992981.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49040.159265522.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49040.159265522.exp new file mode 100755 index 0000000000000000000000000000000000000000..7ca09bd51dd1915bc25634bf1ec14db253dbbbef Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49040.159265522.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49094.885382637.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49094.885382637.exp new file mode 100755 index 0000000000000000000000000000000000000000..a419356dbc3b3a878a6342a6510302b57264f8af Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49094.885382637.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49147.061713765.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49147.061713765.exp new file mode 100755 index 0000000000000000000000000000000000000000..c40cd4b4ee740a6df5875f8245f8d5d9e3833766 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49147.061713765.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49200.170377134.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49200.170377134.exp new file mode 100755 index 0000000000000000000000000000000000000000..1c4c4057cd95de508d74eac383288c9e728465b0 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49200.170377134.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49246.058520232.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49246.058520232.exp new file mode 100755 index 0000000000000000000000000000000000000000..38916b2f5c7c2f340857f9411c3d17a9d9589565 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49246.058520232.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49294.085810164.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49294.085810164.exp new file mode 100755 index 0000000000000000000000000000000000000000..9f0554e1b9964f40d80a069e13d000d1f9cd6b66 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49294.085810164.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49356.259961216.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49356.259961216.exp new file mode 100755 index 0000000000000000000000000000000000000000..035f807a7fd1c6c3ff5623c406473089f7a76730 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49356.259961216.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49423.115690966.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49423.115690966.exp new file mode 100755 index 0000000000000000000000000000000000000000..4a2ff2c1be8fea861c1c4323560f8f3f1c9a99af Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49423.115690966.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49471.954434186.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49471.954434186.exp new file mode 100755 index 0000000000000000000000000000000000000000..7c1ca1dcdd6589a1276c70432d691be9fc12b8f0 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49471.954434186.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49534.01187606.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49534.01187606.exp new file mode 100755 index 0000000000000000000000000000000000000000..0498b54ffeb9700f5f1875603a99cc9bd81bdd26 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49534.01187606.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49590.303233645.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49590.303233645.exp new file mode 100755 index 0000000000000000000000000000000000000000..be6ae57b3bb85ff21c7feda82c174a6cb02b2960 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49590.303233645.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49639.808738851.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49639.808738851.exp new file mode 100755 index 0000000000000000000000000000000000000000..c754b33fa6ba5b2e4066c0aa94b07c5e478488d3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49639.808738851.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49703.732695264.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49703.732695264.exp new file mode 100755 index 0000000000000000000000000000000000000000..bc143badb269d1a058cceb11b1b9451f2886fc0b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49703.732695264.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49773.191287481.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49773.191287481.exp new file mode 100755 index 0000000000000000000000000000000000000000..1c062581120082ff7ac7183cc86efd05d58c51d7 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49773.191287481.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49838.599499807.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49838.599499807.exp new file mode 100755 index 0000000000000000000000000000000000000000..5a06b06aba0ab806359a117af48bf7511da28f4d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49838.599499807.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49888.344429546.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49888.344429546.exp new file mode 100755 index 0000000000000000000000000000000000000000..d348dc98474aa71286fa3a4d7d311298256429b8 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49888.344429546.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49950.870655152.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49950.870655152.exp new file mode 100755 index 0000000000000000000000000000000000000000..148a6bb5c9c1541e52de7242554c35d47074c0fd Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/49950.870655152.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50011.552901229.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50011.552901229.exp new file mode 100755 index 0000000000000000000000000000000000000000..4c8a5f93a31e7cea01f2ad17d628b45620d4be86 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50011.552901229.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50076.462928264.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50076.462928264.exp new file mode 100755 index 0000000000000000000000000000000000000000..1dd9b23cb5052f246330c9b3c9738bec52053b07 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50076.462928264.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50128.905924334.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50128.905924334.exp new file mode 100755 index 0000000000000000000000000000000000000000..2fbb8cb4ff35e6c510131c0b99797feae1d89f4b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50128.905924334.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50179.92710426.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50179.92710426.exp new file mode 100755 index 0000000000000000000000000000000000000000..7c598054db833c8f5acea73db6b8d81a31ff242e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50179.92710426.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50259.943017641.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50259.943017641.exp new file mode 100755 index 0000000000000000000000000000000000000000..e405529ee6ab266b6015c4df743b741e056e06f4 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50259.943017641.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50308.766167999.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50308.766167999.exp new file mode 100755 index 0000000000000000000000000000000000000000..d255818f5b2e672bc766e390e4ab435be93e9d83 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50308.766167999.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50379.220428285.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50379.220428285.exp new file mode 100755 index 0000000000000000000000000000000000000000..2d781375d77f8efab7a432de028bc9932d688cc3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50379.220428285.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50439.141387198.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50439.141387198.exp new file mode 100755 index 0000000000000000000000000000000000000000..06d35551ee02f4e77c18187c427aed6713dfc04a Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50439.141387198.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50491.394574744.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50491.394574744.exp new file mode 100755 index 0000000000000000000000000000000000000000..a25b3a34f86f5be5a73fa33e26becdb5a6f84e74 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50491.394574744.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50558.177758347.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50558.177758347.exp new file mode 100755 index 0000000000000000000000000000000000000000..bc805c314914ec1a2ad4d6c60e3c8be865bd25ae Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50558.177758347.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50620.743314619.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50620.743314619.exp new file mode 100755 index 0000000000000000000000000000000000000000..74f842c6a083a9e0aa83e1c899414a3b558925b0 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50620.743314619.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50691.18171196.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50691.18171196.exp new file mode 100755 index 0000000000000000000000000000000000000000..35f7a035ce72673871597a822b01a5abf21519f0 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50691.18171196.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50773.178099227.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50773.178099227.exp new file mode 100755 index 0000000000000000000000000000000000000000..227cf1f4bbb787bc177841d1a11d2198f713da6c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50773.178099227.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50834.77722576.exp b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50834.77722576.exp new file mode 100755 index 0000000000000000000000000000000000000000..8cb352fcf0be8d3c90e8cd342582872b20cf3959 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/20Nodes/50834.77722576.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10069.914537703.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10069.914537703.exp new file mode 100755 index 0000000000000000000000000000000000000000..118e457f12e238ac477326b0beca1e2205e01756 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10069.914537703.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10213.304674838.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10213.304674838.exp new file mode 100755 index 0000000000000000000000000000000000000000..ceaf6da72f1c590bb83bac2f90612811d684b72b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10213.304674838.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10323.415534695.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10323.415534695.exp new file mode 100755 index 0000000000000000000000000000000000000000..95971e11306c0bee8351ab65cff5edd028a883f4 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10323.415534695.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10488.481195412.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10488.481195412.exp new file mode 100755 index 0000000000000000000000000000000000000000..456efb29c0488517926bafd784930886b5a4518e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10488.481195412.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10609.202075044.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10609.202075044.exp new file mode 100755 index 0000000000000000000000000000000000000000..ed152e29ed9112e9fcfc044990d6330264372d64 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10609.202075044.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10771.322566344.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10771.322566344.exp new file mode 100755 index 0000000000000000000000000000000000000000..945d1bcfa0e0b5a40ef5d859c483d6ad237dc0ae Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10771.322566344.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10900.553794294.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10900.553794294.exp new file mode 100755 index 0000000000000000000000000000000000000000..9635c28bcbfc2929827d89fa4a98b16f95376b1e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/10900.553794294.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11056.938981898.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11056.938981898.exp new file mode 100755 index 0000000000000000000000000000000000000000..547b9f7c33874b094ceb90e4476f536c036c3109 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11056.938981898.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11190.880155207.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11190.880155207.exp new file mode 100755 index 0000000000000000000000000000000000000000..bdaa817bbcfd7ea8e7d789054e6ec8e5dbbf43b0 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11190.880155207.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11301.40067159.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11301.40067159.exp new file mode 100755 index 0000000000000000000000000000000000000000..02036fcd1452687cbc568726b9bd43064a686e93 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11301.40067159.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11443.564305638.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11443.564305638.exp new file mode 100755 index 0000000000000000000000000000000000000000..0fad70cc0a0196b0bdeba539520ee4d771070c64 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11443.564305638.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11605.894866927.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11605.894866927.exp new file mode 100755 index 0000000000000000000000000000000000000000..835ae69163c9228e04c881c6c193cfcd62076f0b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11605.894866927.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11755.650768889.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11755.650768889.exp new file mode 100755 index 0000000000000000000000000000000000000000..4133b24be849cdfc386c90edda42ba46f77dce02 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11755.650768889.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11884.215876849.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11884.215876849.exp new file mode 100755 index 0000000000000000000000000000000000000000..ca2fee11c39503b39c9dfd5337de804a6f5befe6 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/11884.215876849.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12032.550488689.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12032.550488689.exp new file mode 100755 index 0000000000000000000000000000000000000000..f472180abdf6c30b198b9a5c5fa5b9577cca4b4d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12032.550488689.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12192.641735369.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12192.641735369.exp new file mode 100755 index 0000000000000000000000000000000000000000..50061d5ba9f39843bb8613d4a6f6a5a284f48dbf Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12192.641735369.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12337.044109455.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12337.044109455.exp new file mode 100755 index 0000000000000000000000000000000000000000..e3c644c4d3d18adccc3fbf7c7ddd80b08c92fa4a Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12337.044109455.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12466.832313829.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12466.832313829.exp new file mode 100755 index 0000000000000000000000000000000000000000..961ff78edef1655205fd5e0acf3444e7124a669c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12466.832313829.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12598.60951994.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12598.60951994.exp new file mode 100755 index 0000000000000000000000000000000000000000..3a5a9707187ed77abbbc0b47097a7abe231aaa39 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12598.60951994.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12728.567876406.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12728.567876406.exp new file mode 100755 index 0000000000000000000000000000000000000000..ec8e4a07a3264902f04d0b82e6028de7fdb331c0 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12728.567876406.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12883.88054007.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12883.88054007.exp new file mode 100755 index 0000000000000000000000000000000000000000..2b3a6d3166492dd6f9a791db698347ef0b67bfa3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/12883.88054007.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13045.27952052.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13045.27952052.exp new file mode 100755 index 0000000000000000000000000000000000000000..2b69d07c11348d9463db3f905dc260fd76fdfd6b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13045.27952052.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13200.233582923.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13200.233582923.exp new file mode 100755 index 0000000000000000000000000000000000000000..5001e0eb8448fc88af4d33476490053c0957c5f8 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13200.233582923.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13353.617273389.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13353.617273389.exp new file mode 100755 index 0000000000000000000000000000000000000000..2b3a1a450f767fbd8082dbcbf8220da3ec7f3cd6 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13353.617273389.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13490.301419709.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13490.301419709.exp new file mode 100755 index 0000000000000000000000000000000000000000..1fa9694621ec9f22c37da19bfd7789c7f79c5cc9 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13490.301419709.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13635.537921052.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13635.537921052.exp new file mode 100755 index 0000000000000000000000000000000000000000..9a029010ac2af1c1da721656761645e3c4ee0529 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13635.537921052.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13790.2014661.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13790.2014661.exp new file mode 100755 index 0000000000000000000000000000000000000000..874bfde40f6cbd72548af0417d55a665969abd48 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13790.2014661.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13908.986365322.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13908.986365322.exp new file mode 100755 index 0000000000000000000000000000000000000000..87c0953fa0898df39d23ebc9738617af280d4a78 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/13908.986365322.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14051.558425035.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14051.558425035.exp new file mode 100755 index 0000000000000000000000000000000000000000..21b8c95ef7dc721899b29d7094648005f8896240 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14051.558425035.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14231.240260364.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14231.240260364.exp new file mode 100755 index 0000000000000000000000000000000000000000..f3459692ef4d84add5ca5b201cff6786a2bc855d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14231.240260364.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14380.076618208.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14380.076618208.exp new file mode 100755 index 0000000000000000000000000000000000000000..ee1072be769e8b2131db58fedd97a59df7013696 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14380.076618208.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14532.707501453.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14532.707501453.exp new file mode 100755 index 0000000000000000000000000000000000000000..02b7add5c6ef3e894fe7e75da65611e90a1a7d8c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14532.707501453.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14673.369779885.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14673.369779885.exp new file mode 100755 index 0000000000000000000000000000000000000000..817a8f7ca334eebc0933c032bfac4f21dff0a540 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14673.369779885.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14818.774101711.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14818.774101711.exp new file mode 100755 index 0000000000000000000000000000000000000000..563c9cb0d72ee38787b895602820317d78abba37 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14818.774101711.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14948.727346797.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14948.727346797.exp new file mode 100755 index 0000000000000000000000000000000000000000..a6bb3fd6ac0561f9db927fccd590b243f88de496 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/14948.727346797.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15090.191520249.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15090.191520249.exp new file mode 100755 index 0000000000000000000000000000000000000000..cfc97e3a450cbb8f6c09fac0e93eac09a42c2135 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15090.191520249.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15235.224529316.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15235.224529316.exp new file mode 100755 index 0000000000000000000000000000000000000000..b091eb416801a2779bb6a56201c4bc597ffc3a18 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15235.224529316.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15369.587658756.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15369.587658756.exp new file mode 100755 index 0000000000000000000000000000000000000000..9bec02b9ec4d3399bd8bf16c3b90613fb45e6821 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15369.587658756.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15534.438753372.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15534.438753372.exp new file mode 100755 index 0000000000000000000000000000000000000000..7bc587f62167ca03869b4d5edd91dfae1cda0059 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15534.438753372.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15666.870992835.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15666.870992835.exp new file mode 100755 index 0000000000000000000000000000000000000000..3799dcbd105727822c6f5e61f9e1a598be5cc570 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15666.870992835.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15807.25651121.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15807.25651121.exp new file mode 100755 index 0000000000000000000000000000000000000000..d8bad25830aeb66ba0747bdf48c29e83f0aaa3bc Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15807.25651121.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15947.83054874.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15947.83054874.exp new file mode 100755 index 0000000000000000000000000000000000000000..2ce88365ceae081768acfbb3b89678b95dd79806 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/15947.83054874.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16088.290510113.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16088.290510113.exp new file mode 100755 index 0000000000000000000000000000000000000000..af0d5f022306beaca8efa36ec1df04f17c99ffbc Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16088.290510113.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16239.291581653.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16239.291581653.exp new file mode 100755 index 0000000000000000000000000000000000000000..8682380b79b5319630f0251a16b706e8dab2ec8f Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16239.291581653.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16353.564752214.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16353.564752214.exp new file mode 100755 index 0000000000000000000000000000000000000000..0a021be5e7a80a716bb2d34e590c86fd913fa17e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16353.564752214.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16492.070825574.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16492.070825574.exp new file mode 100755 index 0000000000000000000000000000000000000000..e8d81edbcc1c415b33ca37a84c14879a6f2bc8f5 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16492.070825574.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16651.471768094.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16651.471768094.exp new file mode 100755 index 0000000000000000000000000000000000000000..21dcb429b73189827d94c33baaceea3a3ae830ea Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16651.471768094.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16772.6258949.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16772.6258949.exp new file mode 100755 index 0000000000000000000000000000000000000000..61dec6ad08e1447f860a759594663d25ad125dfd Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16772.6258949.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16917.703098736.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16917.703098736.exp new file mode 100755 index 0000000000000000000000000000000000000000..e19b4cd1cfc73f439963553616e8b87c4fe2cd5c Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/16917.703098736.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17040.505997879.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17040.505997879.exp new file mode 100755 index 0000000000000000000000000000000000000000..4078f2337f6ae75c1249643a7bbfabd2cab0ceb0 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17040.505997879.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17219.882857298.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17219.882857298.exp new file mode 100755 index 0000000000000000000000000000000000000000..7342b97d1837e2eedf116ec8dbdf5bc2c0cd7864 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17219.882857298.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17355.630703126.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17355.630703126.exp new file mode 100755 index 0000000000000000000000000000000000000000..f5be9c487c62bcd41925c5d5ce8b3ffc9a1f0133 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17355.630703126.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17485.335441742.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17485.335441742.exp new file mode 100755 index 0000000000000000000000000000000000000000..85dc28dfd6282999fde816193c808607ca3cc5a8 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17485.335441742.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17645.43143176.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17645.43143176.exp new file mode 100755 index 0000000000000000000000000000000000000000..79e373b2078befe4bb760ff637baeadcb3c962c6 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17645.43143176.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17764.080175836.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17764.080175836.exp new file mode 100755 index 0000000000000000000000000000000000000000..1ce7fc6178160d0627f0998b7ccb5f98f91a6cbc Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17764.080175836.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17907.23402585.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17907.23402585.exp new file mode 100755 index 0000000000000000000000000000000000000000..a07da8ecb704a3172574eaf604075315bc8b47c7 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/17907.23402585.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18041.106411418.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18041.106411418.exp new file mode 100755 index 0000000000000000000000000000000000000000..f226e003f5317ae28ed8397c9a827c9e29ee4c88 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18041.106411418.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18149.371971472.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18149.371971472.exp new file mode 100755 index 0000000000000000000000000000000000000000..3b1bff3b934c45ca9ed47a6a4da5d247e6ef5430 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18149.371971472.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18309.576630437.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18309.576630437.exp new file mode 100755 index 0000000000000000000000000000000000000000..c58bc07255d25580aa736bd0f33af226d17d775d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18309.576630437.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18462.144607536.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18462.144607536.exp new file mode 100755 index 0000000000000000000000000000000000000000..14bbe3bbf41ac47c0eac87e30907f07a40c38c98 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18462.144607536.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18625.740840995.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18625.740840995.exp new file mode 100755 index 0000000000000000000000000000000000000000..2ca60f4d289fc533929ad559210042644ce01dfd Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18625.740840995.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18750.205239419.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18750.205239419.exp new file mode 100755 index 0000000000000000000000000000000000000000..32760bc36be119a1548b71bc2dfc687aff39b520 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18750.205239419.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18867.319325996.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18867.319325996.exp new file mode 100755 index 0000000000000000000000000000000000000000..7466e680275c2890a251b8016b2243da6c0b9c95 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18867.319325996.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18988.963977203.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18988.963977203.exp new file mode 100755 index 0000000000000000000000000000000000000000..d9bd6e8ecd042067a1169d12d7e671887f4e3c5b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/18988.963977203.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19154.814914811.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19154.814914811.exp new file mode 100755 index 0000000000000000000000000000000000000000..94094a16d1c1a3d04180f4bbe643433f3f9902c5 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19154.814914811.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19300.068984799.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19300.068984799.exp new file mode 100755 index 0000000000000000000000000000000000000000..bdb8337bc4be716fcbd185ebdd947e6889820c91 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19300.068984799.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19439.409676479.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19439.409676479.exp new file mode 100755 index 0000000000000000000000000000000000000000..6cbb7281c5cf48107affa065933b00d7f5636eb9 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19439.409676479.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19562.509772587.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19562.509772587.exp new file mode 100755 index 0000000000000000000000000000000000000000..fad0acdff31ed79bed669aff903b6d99c01289fb Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19562.509772587.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19698.061984218.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19698.061984218.exp new file mode 100755 index 0000000000000000000000000000000000000000..b80d205d6299941837422f054fe85f1673fb78c7 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19698.061984218.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19845.409513313.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19845.409513313.exp new file mode 100755 index 0000000000000000000000000000000000000000..c1601a4ef193de24ed94831479d64c45dc7755f8 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19845.409513313.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19992.15064731.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19992.15064731.exp new file mode 100755 index 0000000000000000000000000000000000000000..34071953095a3465d36d9d70b51e7c2d4cd6c18e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/19992.15064731.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20132.192239735.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20132.192239735.exp new file mode 100755 index 0000000000000000000000000000000000000000..48fc1bbc6da580d5a0f861e1b9d895da9c765f95 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20132.192239735.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20261.898532918.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20261.898532918.exp new file mode 100755 index 0000000000000000000000000000000000000000..ba3cf3172c3bdfce7516ca84dd1cfe2ede86ed16 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20261.898532918.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20375.546539015.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20375.546539015.exp new file mode 100755 index 0000000000000000000000000000000000000000..6a91afc41900e47033d38e4f93e455ef0eaf3605 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20375.546539015.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20506.50286018.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20506.50286018.exp new file mode 100755 index 0000000000000000000000000000000000000000..1cb3ef2446540cdce31757f06314c188a4af6c2e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20506.50286018.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20637.905310806.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20637.905310806.exp new file mode 100755 index 0000000000000000000000000000000000000000..fc019de5037bf33e0d59cbaa34748a544bc4b16e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20637.905310806.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20756.794133372.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20756.794133372.exp new file mode 100755 index 0000000000000000000000000000000000000000..e49e2758d16a7a535322a0bfb3f50172040b65bd Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20756.794133372.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20888.723448788.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20888.723448788.exp new file mode 100755 index 0000000000000000000000000000000000000000..423b0fd7c57453697b6f82c5da9f355b2aeee178 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/20888.723448788.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21035.207387107.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21035.207387107.exp new file mode 100755 index 0000000000000000000000000000000000000000..8c9cbb787a0c696c73dd9bf5d2aa56edd26ca53d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21035.207387107.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21160.828192842.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21160.828192842.exp new file mode 100755 index 0000000000000000000000000000000000000000..bf1551ffe7ce99f4a59d5e92c75ef1fb7cd5eb0f Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21160.828192842.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21295.748504635.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21295.748504635.exp new file mode 100755 index 0000000000000000000000000000000000000000..1a50cb228fadd5d65ba5930d979a07622ffdde70 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21295.748504635.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21449.540762762.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21449.540762762.exp new file mode 100755 index 0000000000000000000000000000000000000000..cc352484a38f4dcd105062390d12853e0a8d43ae Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21449.540762762.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21578.570947195.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21578.570947195.exp new file mode 100755 index 0000000000000000000000000000000000000000..113d8460afe6f3ecd1ad7ce5a780c422103f3a71 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21578.570947195.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21691.242084213.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21691.242084213.exp new file mode 100755 index 0000000000000000000000000000000000000000..4aa2e5d0fe5ee6c59f54b78f1c23ea5d92c6131d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21691.242084213.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21802.777558012.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21802.777558012.exp new file mode 100755 index 0000000000000000000000000000000000000000..0e0759320ba4e153edad3f4373d03783b9943f11 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21802.777558012.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21951.318289237.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21951.318289237.exp new file mode 100755 index 0000000000000000000000000000000000000000..e18320e827e4cbc26811e5a56894c854737b8521 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/21951.318289237.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22066.165986396.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22066.165986396.exp new file mode 100755 index 0000000000000000000000000000000000000000..f794b55377a2db912068d891bef8a80ac3c8e6f3 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22066.165986396.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22198.821992447.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22198.821992447.exp new file mode 100755 index 0000000000000000000000000000000000000000..452e41d2b2627deda75d0e57ba80ea9495313c16 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22198.821992447.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22356.644206863.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22356.644206863.exp new file mode 100755 index 0000000000000000000000000000000000000000..81dbc715a3819aff1a1e1325b6a48da430a81004 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22356.644206863.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22512.418587168.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22512.418587168.exp new file mode 100755 index 0000000000000000000000000000000000000000..66771f41a3be0d3b0b2015fc4cd1fd8385c359e0 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22512.418587168.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22638.082406366.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22638.082406366.exp new file mode 100755 index 0000000000000000000000000000000000000000..40a0f85808790aa891f305240c2db07a4460bc94 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22638.082406366.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22763.88355934.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22763.88355934.exp new file mode 100755 index 0000000000000000000000000000000000000000..3132f4bb84550677a3d021a430606b3ad0877962 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22763.88355934.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22901.044738132.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22901.044738132.exp new file mode 100755 index 0000000000000000000000000000000000000000..a3fef100000ff239c86824b57dc14ec049bc680d Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/22901.044738132.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23021.812893582.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23021.812893582.exp new file mode 100755 index 0000000000000000000000000000000000000000..bd8d2a6aad503b60f0f6e95c06394f4a493c2e4a Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23021.812893582.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23145.16007721.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23145.16007721.exp new file mode 100755 index 0000000000000000000000000000000000000000..c5716340fc2ec4c7ab4d75e0415dd4e78a7b1d82 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23145.16007721.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23282.771568026.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23282.771568026.exp new file mode 100755 index 0000000000000000000000000000000000000000..3d411897c52b5ce1d08a2bf8c3a867ae35acf378 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23282.771568026.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23436.333425103.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23436.333425103.exp new file mode 100755 index 0000000000000000000000000000000000000000..89ee80fbe8184073a47a9f2362ff7a6400e89f2e Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23436.333425103.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23573.8423058.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23573.8423058.exp new file mode 100755 index 0000000000000000000000000000000000000000..83c12fd55bd9f2c8d83ac97c74e29cee330884ed Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/23573.8423058.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/8887.02786851.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/8887.02786851.exp new file mode 100755 index 0000000000000000000000000000000000000000..bc1d02204882789dcd8e2d09ed65516124862743 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/8887.02786851.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/9526.016919108.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/9526.016919108.exp new file mode 100755 index 0000000000000000000000000000000000000000..14ee518ed276748e68992360482bc6c96537b3f9 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/9526.016919108.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/9785.06549228.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/9785.06549228.exp new file mode 100755 index 0000000000000000000000000000000000000000..f48360a415b9db20da4763cb01aa1d1ba2721a23 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/9785.06549228.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/30Nodes/9935.389497988.exp b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/9935.389497988.exp new file mode 100755 index 0000000000000000000000000000000000000000..efdf7cb11823b878e984302687ec606d353496de Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/30Nodes/9935.389497988.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/Results/72097.169963664.exp b/Routing/TouegAlgorithm/Experiments/Results/72097.169963664.exp new file mode 100755 index 0000000000000000000000000000000000000000..39a2aa82f775b18745153fef258e9e5a41d0e99b Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/Results/72097.169963664.exp differ diff --git a/Routing/TouegAlgorithm/Experiments/ResultsToGraph.py b/Routing/TouegAlgorithm/Experiments/ResultsToGraph.py new file mode 100755 index 0000000000000000000000000000000000000000..2943f4b08970feef7617f11b3a8dba1c217d13bd --- /dev/null +++ b/Routing/TouegAlgorithm/Experiments/ResultsToGraph.py @@ -0,0 +1,76 @@ +import matplotlib.pyplot as plt +import numpy as np +import pickle +import os + +results = {} + +for node_numbers in (10, 20, 30): + result_dir = "Results/"+str(node_numbers)+"Nodes" + files = os.listdir(result_dir) + results[node_numbers] = {"Message": [], "Time": []} + print(f"{node_numbers} has {len(files)} results") + for file in files: + network_graph, MESSAGE_COUNT, COMPLETION, route_table = pickle.load(open(result_dir+"/"+file, "rb")) + summation = 0 + for count in MESSAGE_COUNT: + summation+=MESSAGE_COUNT[count] + results[node_numbers]["Message"].append(summation) + print(MESSAGE_COUNT) + results[node_numbers]["Time"].append(COMPLETION["INIT"]) + print(COMPLETION["INIT"]) + + if len(network_graph.nodes) != node_numbers: + raise Exception("Wrong storage") + + + +nodes = ("10", "20", "30") +x_pos = np.arange(len(nodes)*2) + +means_message = [np.mean(results[node_count]["Message"]) for node_count in (10, 20, 30)] +errors_message = [np.std(results[node_count]["Message"]) for node_count in (10, 20, 30)] + +means_time = [np.mean(results[node_count]["Time"]) for node_count in (10, 20, 30)] +errors_time = [np.std(results[node_count]["Time"]) for node_count in (10, 20, 30)] + +means = [] +errors = [] +for i in range(len(means_time)): + means.append(means_message[i]) + means.append(means_time[i]) + errors.append(errors_message[i]) + errors.append(errors_time[i]) + +plots = ["Message", "Time"] +plot = plots[1] + +colors=["blue", "green"] +fig, ax = plt.subplots() +if plot == "Message": + ax.bar((1, 2, 3), means_message, yerr=errors_message, align='center', alpha=0.5, ecolor='black', capsize=10, color=colors[0], label="Message") +else: + ax.bar(( 1, 2, 3), means_time, yerr=errors_time, align='center', alpha=0.5, ecolor='black', capsize=10, color=colors[1], label="Time") + +ax.set_xlabel("Node Count") +ax.set_xticks((1, 2, 3)) +ax.set_xticklabels(nodes) +if plot == "Message": + ax.set_ylabel('Message Count') + + ax.set_title("Message Count vs Node Count for Toueg's Algorithm") +else: + ax.set_ylabel('Elapsed Time (sec)') + + ax.set_title("Time vs Node Count for Toueg's Algorithm") + +# ax.yaxis.grid(True) + +# Save the figure and show +plt.tight_layout() +plt.savefig('bar_plot_'+plot+'.png') +# plt.legend(loc=2) +plt.show() + + + diff --git a/Routing/TouegAlgorithm/Experiments/TouegAlgorithmComponent.py b/Routing/TouegAlgorithm/Experiments/TouegAlgorithmComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..6ca425c0c13a35dbf74d937e0baf0c34ab15396f --- /dev/null +++ b/Routing/TouegAlgorithm/Experiments/TouegAlgorithmComponent.py @@ -0,0 +1,170 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +import time +from Routing.TouegAlgorithm.Experiments.ExperimentDataCollector import ExperimentCollector +class TouegRoutingComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(TouegRoutingComponent, self).__init__(componentname, componentid) + # two dictionaries are indexed with the component id, hence, while broadcasting, the other nodes can easily understant whose distance information they are currently working + self.DistanceInformation = {self.componentinstancenumber: {}} # stores the shortest path distance values + self.ParentInformation = {self.componentinstancenumber: {}} + self.all_process_ids = [] + self.Su = [] # processed node list, algorithm terminates when all nodes are processed... + self.neighbors = [] # the list of neighbors (ids) connected to main node... + self.message_queue = [] # for the next invication clear it... + self.queue_lock = Lock() + + def on_init(self, eventobj: Event): + super(TouegRoutingComponent, self).on_init(eventobj) + # the first process does not start immediate, it stars with a peer message + if self.componentinstancenumber != 0: + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def on_message_from_bottom(self, eventobj: Event): + message_destination = eventobj.eventcontent.header.messageto.split("-")[0] + if message_destination == TouegRoutingComponent.__name__: # process only the messages targeted to this component... + message_source_id = eventobj.eventcontent.header.messagefrom.split("-")[1] + message_type = eventobj.eventcontent.header.messagetype + content = eventobj.eventcontent.payload + + if message_type == "INFO" or message_type == "DISTANCE": + self.queue_lock.acquire() # protect message_queue, both component thread and Toueg thread are trying to access data + self.message_queue.append((int(message_source_id), message_type, content)) + self.queue_lock.release() + + + def on_message_from_peer(self, eventobj: Event): + message_header = eventobj.eventcontent.header + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "TouegRoutingComponent": + if self.componentinstancenumber == 0: + if message_header.messagetype == "INITIATEROUTE": + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def job(self, *arg): + self.all_process_ids = [] + for element in ComponentRegistry().components: + if "MachineLearningNode" in element: + parts = int(element.split("MachineLearningNode")[1]) + self.all_process_ids.append(parts) + print("Available nodes : ", self.all_process_ids) + self.neighbors = Topology().get_neighbors(self.componentinstancenumber) # retrieve all neighbor ids... + + self.neighbor_weights = {a: 1 for a in self.neighbors} # for the time being each edge weight is 1... + + neighbor_ids = [a for a in self.neighbors] + # found shortest path information will be sent to Coordinator component + message_payload = self.TOUEG(self.all_process_ids, neighbor_ids, self.neighbor_weights) + message_header = GenericMessageHeader("ROUTINGCOMPLETED", self.componentname+"-"+str(self.componentinstancenumber), + "Coordinator-"+str(self.componentinstancenumber)) + message = GenericMessage(message_header, message_payload) + event = Event(self, EventTypes.MFRP, message) + self.send_peer(event) + ExperimentCollector().COMPLETION[self.componentinstancenumber] = True + + + + def TOUEG(self, vertices, neigbors, neighbor_weights): + self.process_id = self.componentinstancenumber + self.Su = set([]) + self.ParentInformation = {self.process_id: {}} + + for v in vertices: + if v == self.process_id: + self.DistanceInformation[self.process_id][v] = 0 + self.ParentInformation[self.process_id][v] = v + elif v in neigbors: + self.DistanceInformation[self.process_id][v] = neighbor_weights[v] + self.ParentInformation[self.process_id][v] = v; + else: + self.DistanceInformation[self.process_id][v] = float("inf") + self.ParentInformation[self.process_id][v] = None + + # For pivot selection, nodes are labeled with their process id + unordered_vertices = [a for a in vertices] + unordered_vertices.sort() + sorted_ids = unordered_vertices + current_pivot_index = 0 + vertices = set(vertices) + print(vertices.difference(self.Su)) + while len(vertices.difference(self.Su)) != 0 : # Su != Vertices should be... + pivot = sorted_ids[current_pivot_index] + # print(f"Process {self.process_id} picks pivot={pivot}") + for neighbor in neigbors: + if self.ParentInformation[self.process_id][pivot] == neighbor: + self.sendMessageToNeighbor(neighbor, "INFO", "Child("+str(pivot)+")") + else: + self.sendMessageToNeighbor(neighbor, "INFO", "NotChild("+str(pivot)+")") + # wait for a specific number of messages + while True: + t = self.getPendingChildMessageCount(pivot) + if t != len(neigbors): + time.sleep(0.4) + else: + break + + if self.DistanceInformation[self.process_id][pivot] < float("inf"): + if self.process_id != pivot: + + D_pivot = self.waitPivotDistanceFrom(self.ParentInformation[self.process_id][pivot], pivot) + while D_pivot is None: + D_pivot = self.waitPivotDistanceFrom(self.ParentInformation[self.process_id][pivot], pivot) + + for neighbor in neigbors: + if self.getParticularChildMessage(neighbor, pivot): + self.sendMessageToNeighbor(neighbor, "DISTANCE", (pivot, D_pivot)) + for vertex in vertices: + if self.DistanceInformation[self.process_id][vertex] > self.DistanceInformation[self.process_id][pivot] + D_pivot[pivot][vertex]: + self.DistanceInformation[self.process_id][vertex] = self.DistanceInformation[self.process_id][pivot]+D_pivot[pivot][vertex] + self.ParentInformation[self.process_id][vertex] = self.ParentInformation[self.process_id][pivot] + elif self.process_id == pivot: + received_child_messages = [] + for neighbor in neigbors: + if self.getParticularChildMessage(neighbor, pivot): + received_child_messages.append(neighbor) + for neighbor in received_child_messages: + self.sendMessageToNeighbor(neighbor, "DISTANCE", (pivot, self.DistanceInformation)) + + self.Su.add(pivot) + current_pivot_index += 1 + print(f"\n\nPath Finding has been completed {self.process_id} - {self.DistanceInformation} - {self.ParentInformation}") + return (self.DistanceInformation, self.ParentInformation) + + + def sendMessageToNeighbor(self, neighbor_id, message_type, message): + message_header = GenericMessageHeader(message_type, TouegRoutingComponent.__name__+"-"+str(self.componentinstancenumber), + TouegRoutingComponent.__name__+"-"+str(neighbor_id), interfaceid=str(self.componentinstancenumber)+"-"+str(neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + + def getPendingChildMessageCount(self, pivot): + child_message_count = 0 + for i in self.message_queue: + # print(f"\n {i} demanded NotChild({id}) or Child({id})") + if i[1] == "INFO" and (("Child(" + str(pivot) + ")" == i[2]) or ("NotChild(" + str(pivot) + ")" == i[2])): + child_message_count += 1 + return child_message_count + + def waitPivotDistanceFrom(self, source, pivot): + self.queue_lock.acquire() + for index, i in enumerate(self.message_queue): + if i[0] == source and i[1] == "DISTANCE" and i[2][0] == pivot: + data = self.message_queue.pop(index) + self.queue_lock.release() + return data[2][1] + self.queue_lock.release() + return None + + def getParticularChildMessage(self, neigh, pivot): + self.queue_lock.acquire() + for index, i in enumerate(self.message_queue): + if i[0] == neigh and i[1] == "INFO" and "Child("+str(pivot)+")" == i[2]: + data = self.message_queue.pop(index) + self.queue_lock.release() + return True + self.queue_lock.release() + return False + diff --git a/Routing/TouegAlgorithm/Experiments/TouegAlgorithmTesting.py b/Routing/TouegAlgorithm/Experiments/TouegAlgorithmTesting.py new file mode 100755 index 0000000000000000000000000000000000000000..1e5a2e275c18c6f25318d8b3386c3b81a9dfe3ed --- /dev/null +++ b/Routing/TouegAlgorithm/Experiments/TouegAlgorithmTesting.py @@ -0,0 +1,72 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Channels import P2PFIFOPerfectChannel, Channel +import time +import matplotlib.pyplot as plt +from Routing.TouegAlgorithm.Experiments.ExperimentDataCollector import ExperimentCollector +import networkx as nx +import numpy as np +from Routing.TouegAlgorithm.Experiments.MachineLearningNodeComponent import MachineLearningNode +from Routing.TouegAlgorithm.Experiments.TouegAlgorithmComponent import TouegRoutingComponent + +# edges = [(0, 1, {"weight": 1}), (0, 2, {"weight": 1}), (1, 3, {"weight": 1}), (2, 4, {"weight": 1}), (4, 5, {"weight": 1}), +# (3, 5, {"weight": 1})] + + +# undirected graph +def draw_random_graph(n): + """ + Draw a random graph with 2**i nodes, + and p=i/(2**i) + """ + k = True + while k == True: + k = False + g_random = nx.gnp_random_graph(n, 0.3) + if not nx.is_connected(g_random): + k = True + + # nx.draw(g_random, node_size=20) + # # for e in g_random.edges: + # # print(f"{e}") + # plt.show() + # plt.close() + return g_random + +# undirected graph +NODE_COUNT = 50 +graph = draw_random_graph(NODE_COUNT) # nx.Graph() +# graph.add_edges_from(edges) + +node_list = graph.nodes; + +print(TouegRoutingComponent.__name__) +experimenter = ExperimentCollector() + +topology = Topology() +topology.construct_from_graph(graph, MachineLearningNode, P2PFIFOPerfectChannel) +# process1 = MachineLearningNode("MachineLearningNode", 0) +# ComponentRegistry().init() +experimenter.network_graph = graph +# topology.plot() +# plt.show() +topology.start() + + +while True: + all_completed = True + for i in node_list: + if i not in experimenter.COMPLETION: + all_completed = False + + if not "INIT" in experimenter.COMPLETION: + all_completed = False + + if all_completed: + print(experimenter.network_graph) + print(experimenter.MESSAGE_COUNT) + print(experimenter.COMPLETION) + break + pass + +experimenter.storeResult() + diff --git a/Routing/TouegAlgorithm/Experiments/bar_plot_Message.png b/Routing/TouegAlgorithm/Experiments/bar_plot_Message.png new file mode 100755 index 0000000000000000000000000000000000000000..d665e50aa33d82d54fc3762bba5c5f05776e73e6 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/bar_plot_Message.png differ diff --git a/Routing/TouegAlgorithm/Experiments/bar_plot_Time.png b/Routing/TouegAlgorithm/Experiments/bar_plot_Time.png new file mode 100755 index 0000000000000000000000000000000000000000..d5a4f69d6152682f7dc81038445e77a94600b150 Binary files /dev/null and b/Routing/TouegAlgorithm/Experiments/bar_plot_Time.png differ diff --git a/Routing/TouegAlgorithm/Experiments/temp.py b/Routing/TouegAlgorithm/Experiments/temp.py new file mode 100755 index 0000000000000000000000000000000000000000..27ed90c1082788969814c1dee751e31c8bde4e92 --- /dev/null +++ b/Routing/TouegAlgorithm/Experiments/temp.py @@ -0,0 +1,9 @@ +from timeit import default_timer as timer +import pickle +print(timer()) + +graph, count, completion, route = pickle.load(open("Results/39128.153763338.exp", "rb")) +print(graph) +print(count) +print(completion) +print(route) \ No newline at end of file diff --git a/Routing/TouegAlgorithm/RoutingExample/ApplicationComponent.py b/Routing/TouegAlgorithm/RoutingExample/ApplicationComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..6098a86ed7d32e6f66e705bfc7e6e5109ed63c6b --- /dev/null +++ b/Routing/TouegAlgorithm/RoutingExample/ApplicationComponent.py @@ -0,0 +1,38 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, Thread, Lock +from timeit import default_timer as timer + +# where the machine learning model is loaded... The top entity for the Node... +class ApplicationComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(ApplicationComponent, self).__init__(componentname, componentid) + + def on_init(self, eventobj: Event): + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATE", "ApplicationComponent-"+str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + print(f"App {self.componentinstancenumber} sends an INITIATE to Coordinator") + + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == "ApplicationComponent": + if message_type == "APPQUERY": + source, content = message + print(f"App {self.componentinstancenumber} has received {message} from {source}") + message_header = GenericMessageHeader("APPRESPONSE", + "ApplicationComponent-" + str(self.componentinstancenumber), + "Coordinator-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, (source, "Hellooooooooo "+content)) + kickstarter = Event(self, EventTypes.MFRT, message) + self.send_down(kickstarter) + + elif message_type == "APPRESPONSE": + source, content = message + print(f"App {self.componentinstancenumber} has received APPRESPONSE {message} from {source}") + elif message_type == "ROUTINGCOMPLETED": + print(f"App {self.componentinstancenumber} has received RoutingTable {message}") diff --git a/Routing/TouegAlgorithm/RoutingExample/CoordinatorComponent.py b/Routing/TouegAlgorithm/RoutingExample/CoordinatorComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..2c7e678d7264890f7e3946bcd5cbe1ab8f024556 --- /dev/null +++ b/Routing/TouegAlgorithm/RoutingExample/CoordinatorComponent.py @@ -0,0 +1,99 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + +class Coordinator(ComponentModel): + def __init__(self, componentname, componentid): + super(Coordinator, self).__init__(componentname, componentid) + self.RoutingTable = {} + + def on_message_from_top(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + print(f"Coordinator receives message from top {messageto}") + if messageto == Coordinator.__name__: + if sender == "ApplicationComponent" and message_type == "INITIATE": + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("INITIATEROUTE", + "Coordinator-" + str(self.componentinstancenumber), + "TouegRoutingComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, "") + kickstarter = Event(self, EventTypes.MFRP, message) + self.send_peer(kickstarter) + print("Coordinator -> Toueg") + elif sender == "ApplicationComponent" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + if len(self.RoutingTable) > 0: + dest, info = message + + neighbor_id = self.RoutingTable[self.componentinstancenumber][dest] + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, (dest, self.componentinstancenumber, info)) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"Coordinator {self.componentinstancenumber} sends APPQUERY {neighbor_id} to relay it {dest} - {self.RoutingTable}") + + + def on_message_from_peer(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "TouegRoutingComponent" and message_type == "ROUTINGCOMPLETED": + self.RoutingTable = message[1] + # print(f"Coordinator {self.componentinstancenumber} has received Routing Table") + if self.componentinstancenumber == 0: + message_header = GenericMessageHeader("ROUTINGCOMPLETED", + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message = GenericMessage(message_header, self.RoutingTable) + kickstarter = Event(self, EventTypes.MFRB, message) + self.send_up(kickstarter) + + + def on_init(self, eventobj: Event): + pass + def on_message_from_bottom(self, eventobj: Event): + sender = eventobj.eventcontent.header.messagefrom.split("-")[0] + messageto = eventobj.eventcontent.header.messageto.split("-")[0] + message_type = eventobj.eventcontent.header.messagetype + message = eventobj.eventcontent.payload + if messageto == Coordinator.__name__: + if sender == "Coordinator" and (message_type == "APPQUERY" or message_type == "APPRESPONSE"): + dest, source, content = message + print(f"Coordinator {self.componentinstancenumber} has received APPQUERY {dest, source}") + + if dest == self.componentinstancenumber: + message_header = GenericMessageHeader(message_type, + "Coordinator-" + str(self.componentinstancenumber), + "ApplicationComponent-" + str(self.componentinstancenumber)) + message_ = GenericMessage(message_header, (source, content)) + kickstarter = Event(self, EventTypes.MFRB, message_) + self.send_up(kickstarter) + # send to app layer + pass + else: + if len(self.RoutingTable) > 0: + neighbor_id = self.RoutingTable[self.componentinstancenumber][dest] + + message_header = GenericMessageHeader(message_type, Coordinator.__name__ + "-" + str( + self.componentinstancenumber), + Coordinator.__name__ + "-" + str(neighbor_id), + interfaceid=str(self.componentinstancenumber) + "-" + str( + neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + print(f"*****Routing from {self.componentinstancenumber} to {neighbor_id} - {self.RoutingTable}*****") + + + + + + diff --git a/Routing/TouegAlgorithm/RoutingExample/MachineLearningNodeComponent.py b/Routing/TouegAlgorithm/RoutingExample/MachineLearningNodeComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..c721e0c48f93303ece684784a01f1f44d6be4a8b --- /dev/null +++ b/Routing/TouegAlgorithm/RoutingExample/MachineLearningNodeComponent.py @@ -0,0 +1,40 @@ +from Ahc import ComponentModel, Event, GenericMessage, ConnectorTypes, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Routing.TouegAlgorithm.RoutingExample.ApplicationComponent import ApplicationComponent +from Routing.TouegAlgorithm.RoutingExample.CoordinatorComponent import Coordinator +from Routing.TouegAlgorithm.RoutingExample.TouegAlgorithmComponent import TouegRoutingComponent +from Routing.TouegAlgorithm.RoutingExample.MiddlewareStubComponent import MiddlewareMessageStub + +# Encapsulator for the Application Node +class MachineLearningNode(ComponentModel): + def __init__(self, componentname, componentid): + super(MachineLearningNode, self).__init__(componentname, componentid) + self.Application = ApplicationComponent(ApplicationComponent.__name__, componentid) + self.Coordinator = Coordinator(Coordinator.__name__, componentid) + self.TouegComponent = TouegRoutingComponent(TouegRoutingComponent.__name__, componentid) + self.MiddlewareStub = MiddlewareMessageStub(MiddlewareMessageStub.__name__, componentid) + + # Application layer only talks with Coordinator, + # Coordinator coordinates all demands of the application by triggering other components if necessary... + self.Application.connect_me_to_component(ConnectorTypes.DOWN, self.Coordinator) + self.Coordinator.connect_me_to_component(ConnectorTypes.UP, self.Application) + self.Coordinator.connect_me_to_component(ConnectorTypes.PEER, self.TouegComponent) + self.Coordinator.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + + + self.TouegComponent.connect_me_to_component(ConnectorTypes.PEER, self.Coordinator) + + self.TouegComponent.connect_me_to_component(ConnectorTypes.DOWN, self.MiddlewareStub) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.TouegComponent) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.UP, self.Coordinator) + self.MiddlewareStub.connect_me_to_component(ConnectorTypes.DOWN, self) + self.connect_me_to_component(ConnectorTypes.UP, self.MiddlewareStub) + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + self.send_up(eventobj) # send incoming messages to upper components + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) # send incoming messages from upper components to a channel + diff --git a/Routing/TouegAlgorithm/RoutingExample/MiddlewareStubComponent.py b/Routing/TouegAlgorithm/RoutingExample/MiddlewareStubComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..729f2b17447c070c316a1dfd2adde9eb362dd6e2 --- /dev/null +++ b/Routing/TouegAlgorithm/RoutingExample/MiddlewareStubComponent.py @@ -0,0 +1,21 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes + +class MiddlewareMessageStub(ComponentModel): + def __init__(self, componentname, componentid): + super(MiddlewareMessageStub, self).__init__(componentname, componentid) + pass + + def on_init(self, eventobj: Event): + pass + + def on_message_from_bottom(self, eventobj: Event): + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "TouegRoutingComponent" or message_target == "Coordinator": + self.send_up(eventobj) + else: + print(f"* {message_target}") + + + def on_message_from_top(self, eventobj: Event): + self.send_down(eventobj) + diff --git a/Routing/TouegAlgorithm/RoutingExample/RoutingExample.py b/Routing/TouegAlgorithm/RoutingExample/RoutingExample.py new file mode 100755 index 0000000000000000000000000000000000000000..6a77c7d74343e3b939c9026b7936b69c063b691b --- /dev/null +++ b/Routing/TouegAlgorithm/RoutingExample/RoutingExample.py @@ -0,0 +1,27 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +from Channels import P2PFIFOPerfectChannel, Channel +import time +import matplotlib.pyplot as plt +import networkx as nx +import numpy as np +from Routing.TouegAlgorithm.RoutingExample.MachineLearningNodeComponent import MachineLearningNode + +edges = [(0, 1, {"weight": 1}), (0, 2, {"weight": 1}), (1, 3, {"weight": 1}), (2, 4, {"weight": 1}), (4, 5, {"weight": 1}), + (3, 5, {"weight": 1}), (1, 4, {"weight": 1}), (4, 6, {"weight": 1}), (4, 7, {"weight": 1}), + (6, 8, {"weight": 1}), (8, 9, {"weight": 1}), (7, 10, {"weight": 1}), (7, 11, {"weight": 1}), + (11, 13, {"weight": 1}), (2, 12, {"weight": 1}), + (7, 9, {"weight": 1})] + +# undirected graph +graph = nx.Graph() +graph.add_edges_from(edges) +topology = Topology() +topology.construct_from_graph(graph, MachineLearningNode, P2PFIFOPerfectChannel) +# process1 = MachineLearningNode("MachineLearningNode", 0) +# ComponentRegistry().init() +# topology.plot() +# plt.show() +topology.start() + + +while True:pass diff --git a/Routing/TouegAlgorithm/RoutingExample/TouegAlgorithmComponent.py b/Routing/TouegAlgorithm/RoutingExample/TouegAlgorithmComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..2df2163026d5e29ebe84356a38c88d7ab5855024 --- /dev/null +++ b/Routing/TouegAlgorithm/RoutingExample/TouegAlgorithmComponent.py @@ -0,0 +1,169 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +import time + +class TouegRoutingComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(TouegRoutingComponent, self).__init__(componentname, componentid) + # two dictionaries are indexed with the component id, hence, while broadcasting, the other nodes can easily understant whose distance information they are currently working + self.DistanceInformation = {self.componentinstancenumber: {}} # stores the shortest path distance values + self.ParentInformation = {self.componentinstancenumber: {}} + self.all_process_ids = [] + self.Su = [] # processed node list, algorithm terminates when all nodes are processed... + self.neighbors = [] # the list of neighbors (ids) connected to main node... + self.message_queue = [] # for the next invication clear it... + self.queue_lock = Lock() + + def on_init(self, eventobj: Event): + super(TouegRoutingComponent, self).on_init(eventobj) + # the first process does not start immediate, it stars with a peer message + if self.componentinstancenumber != 0: + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def on_message_from_bottom(self, eventobj: Event): + message_destination = eventobj.eventcontent.header.messageto.split("-")[0] + if message_destination == TouegRoutingComponent.__name__: # process only the messages targeted to this component... + message_source_id = eventobj.eventcontent.header.messagefrom.split("-")[1] + message_type = eventobj.eventcontent.header.messagetype + content = eventobj.eventcontent.payload + + if message_type == "INFO" or message_type == "DISTANCE": + self.queue_lock.acquire() # protect message_queue, both component thread and Toueg thread are trying to access data + self.message_queue.append((int(message_source_id), message_type, content)) + self.queue_lock.release() + + + def on_message_from_peer(self, eventobj: Event): + message_header = eventobj.eventcontent.header + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "TouegRoutingComponent": + if self.componentinstancenumber == 0: + if message_header.messagetype == "INITIATEROUTE": + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def job(self, *arg): + self.all_process_ids = [] + for element in ComponentRegistry().components: + if "MachineLearningNode" in element: + parts = int(element.split("MachineLearningNode")[1]) + self.all_process_ids.append(parts) + print("Available nodes : ", self.all_process_ids) + self.neighbors = Topology().get_neighbors(self.componentinstancenumber) # retrieve all neighbor ids... + + self.neighbor_weights = {a: 1 for a in self.neighbors} # for the time being each edge weight is 1... + + neighbor_ids = [a for a in self.neighbors] + # found shortest path information will be sent to Coordinator component + message_payload = self.TOUEG(self.all_process_ids, neighbor_ids, self.neighbor_weights) + message_header = GenericMessageHeader("ROUTINGCOMPLETED", self.componentname+"-"+str(self.componentinstancenumber), + "Coordinator-"+str(self.componentinstancenumber)) + message = GenericMessage(message_header, message_payload) + event = Event(self, EventTypes.MFRP, message) + self.send_peer(event) + + + + def TOUEG(self, vertices, neigbors, neighbor_weights): + self.process_id = self.componentinstancenumber + self.Su = set([]) + self.ParentInformation = {self.process_id: {}} + + for v in vertices: + if v == self.process_id: + self.DistanceInformation[self.process_id][v] = 0 + self.ParentInformation[self.process_id][v] = v + elif v in neigbors: + self.DistanceInformation[self.process_id][v] = neighbor_weights[v] + self.ParentInformation[self.process_id][v] = v; + else: + self.DistanceInformation[self.process_id][v] = float("inf") + self.ParentInformation[self.process_id][v] = None + + # For pivot selection, nodes are labeled with their process id + unordered_vertices = [a for a in vertices] + unordered_vertices.sort() + sorted_ids = unordered_vertices + current_pivot_index = 0 + vertices = set(vertices) + print(vertices.difference(self.Su)) + while len(vertices.difference(self.Su)) != 0 : # Su != Vertices should be... + pivot = sorted_ids[current_pivot_index] + # print(f"Process {self.process_id} picks pivot={pivot}") + for neighbor in neigbors: + if self.ParentInformation[self.process_id][pivot] == neighbor: + self.sendMessageToNeighbor(neighbor, "INFO", "Child("+str(pivot)+")") + else: + self.sendMessageToNeighbor(neighbor, "INFO", "NotChild("+str(pivot)+")") + # wait for a specific number of messages + while True: + t = self.getPendingChildMessageCount(pivot) + if t != len(neigbors): + time.sleep(0.4) + else: + break + + if self.DistanceInformation[self.process_id][pivot] < float("inf"): + if self.process_id != pivot: + + D_pivot = self.waitPivotDistanceFrom(self.ParentInformation[self.process_id][pivot], pivot) + while D_pivot is None: + D_pivot = self.waitPivotDistanceFrom(self.ParentInformation[self.process_id][pivot], pivot) + + for neighbor in neigbors: + if self.getParticularChildMessage(neighbor, pivot): + self.sendMessageToNeighbor(neighbor, "DISTANCE", (pivot, D_pivot)) + for vertex in vertices: + if self.DistanceInformation[self.process_id][vertex] > self.DistanceInformation[self.process_id][pivot] + D_pivot[pivot][vertex]: + self.DistanceInformation[self.process_id][vertex] = self.DistanceInformation[self.process_id][pivot]+D_pivot[pivot][vertex] + self.ParentInformation[self.process_id][vertex] = self.ParentInformation[self.process_id][pivot] + elif self.process_id == pivot: + received_child_messages = [] + for neighbor in neigbors: + if self.getParticularChildMessage(neighbor, pivot): + received_child_messages.append(neighbor) + for neighbor in received_child_messages: + self.sendMessageToNeighbor(neighbor, "DISTANCE", (pivot, self.DistanceInformation)) + + self.Su.add(pivot) + current_pivot_index += 1 + print(f"\n\nPath Finding has been completed {self.process_id} - {self.DistanceInformation} - {self.ParentInformation}") + return (self.DistanceInformation, self.ParentInformation) + + + def sendMessageToNeighbor(self, neighbor_id, message_type, message): + # print(f"{self.componentinstancenumber} sends {message_type} message to neighbor {neighbor_id}") + message_header = GenericMessageHeader(message_type, TouegRoutingComponent.__name__+"-"+str(self.componentinstancenumber), + TouegRoutingComponent.__name__+"-"+str(neighbor_id), interfaceid=str(self.componentinstancenumber)+"-"+str(neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + + def getPendingChildMessageCount(self, pivot): + child_message_count = 0 + for i in self.message_queue: + if i[1] == "INFO" and (("Child(" + str(pivot) + ")" == i[2]) or ("NotChild(" + str(pivot) + ")" == i[2])): + child_message_count += 1 + return child_message_count + + def waitPivotDistanceFrom(self, source, pivot): + self.queue_lock.acquire() + for index, i in enumerate(self.message_queue): + if i[0] == source and i[1] == "DISTANCE" and i[2][0] == pivot: + data = self.message_queue.pop(index) + self.queue_lock.release() + return data[2][1] + self.queue_lock.release() + return None + + def getParticularChildMessage(self, neigh, pivot): + self.queue_lock.acquire() + for index, i in enumerate(self.message_queue): + if i[0] == neigh and i[1] == "INFO" and "Child("+str(pivot)+")" == i[2]: + data = self.message_queue.pop(index) + self.queue_lock.release() + return True + self.queue_lock.release() + return False + diff --git a/Routing/TouegAlgorithm/TouegAlgorithmComponent.py b/Routing/TouegAlgorithm/TouegAlgorithmComponent.py new file mode 100755 index 0000000000000000000000000000000000000000..641186e1160aa7178646522d113b4a13accef09f --- /dev/null +++ b/Routing/TouegAlgorithm/TouegAlgorithmComponent.py @@ -0,0 +1,167 @@ +from Ahc import ComponentModel, Event, GenericMessage, GenericMessageHeader, EventTypes, ComponentRegistry, Lock, Thread, Topology +import time + +class TouegRoutingComponent(ComponentModel): + def __init__(self, componentname, componentid): + super(TouegRoutingComponent, self).__init__(componentname, componentid) + # two dictionaries are indexed with the component id, hence, while broadcasting, the other nodes can easily understant whose distance information they are currently working + self.DistanceInformation = {self.componentinstancenumber: {}} # stores the shortest path distance values + self.ParentInformation = {self.componentinstancenumber: {}} + self.all_process_ids = [] + self.Su = [] # processed node list, algorithm terminates when all nodes are processed... + self.neighbors = [] # the list of neighbors (ids) connected to main node... + self.message_queue = [] # for the next invication clear it... + self.queue_lock = Lock() + + def on_init(self, eventobj: Event): + super(TouegRoutingComponent, self).on_init(eventobj) + # the first process does not start immediate, it stars with a peer message + if self.componentinstancenumber != 0: + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def on_message_from_bottom(self, eventobj: Event): + message_destination = eventobj.eventcontent.header.messageto.split("-")[0] + if message_destination == TouegRoutingComponent.__name__: # process only the messages targeted to this component... + message_source_id = eventobj.eventcontent.header.messagefrom.split("-")[1] + message_type = eventobj.eventcontent.header.messagetype + content = eventobj.eventcontent.payload + + if message_type == "INFO" or message_type == "DISTANCE": + self.queue_lock.acquire() # protect message_queue, both component thread and Toueg thread are trying to access data + self.message_queue.append((int(message_source_id), message_type, content)) + self.queue_lock.release() + + + def on_message_from_peer(self, eventobj: Event): + message_header = eventobj.eventcontent.header + message_target = eventobj.eventcontent.header.messageto.split("-")[0] + if message_target == "TouegRoutingComponent": + if self.componentinstancenumber == 0: + if message_header.messagetype == "INITIATEROUTE": + thread = Thread(target=self.job, args=[45, 54, 123]) + thread.start() + + def job(self, *arg): + self.all_process_ids = [] + for element in ComponentRegistry().components: + if "MachineLearningNode" in element: + parts = int(element.split("MachineLearningNode")[1]) + self.all_process_ids.append(parts) + print("Available nodes : ", self.all_process_ids) + self.neighbors = Topology().get_neighbors(self.componentinstancenumber) # retrieve all neighbor ids... + + self.neighbor_weights = {a: 1 for a in self.neighbors} # for the time being each edge weight is 1... + + neighbor_ids = [a for a in self.neighbors] + # found shortest path information will be sent to Coordinator component + message_payload = self.TOUEG(self.all_process_ids, neighbor_ids, self.neighbor_weights) + message_header = GenericMessageHeader("ROUTINGCOMPLETED", self.componentname+"-"+str(self.componentinstancenumber), + "Coordinator-"+str(self.componentinstancenumber)) + message = GenericMessage(message_header, message_payload) + event = Event(self, EventTypes.MFRP, message) + self.send_peer(event) + + + def TOUEG(self, vertices, neigbors, neighbor_weights): + self.process_id = self.componentinstancenumber + self.Su = set([]) + self.ParentInformation = {self.process_id: {}} + + for v in vertices: + if v == self.process_id: + self.DistanceInformation[self.process_id][v] = 0 + self.ParentInformation[self.process_id][v] = v + elif v in neigbors: + self.DistanceInformation[self.process_id][v] = neighbor_weights[v] + self.ParentInformation[self.process_id][v] = v; + else: + self.DistanceInformation[self.process_id][v] = float("inf") + self.ParentInformation[self.process_id][v] = None + + # For pivot selection, nodes are labeled with their process id + unordered_vertices = [a for a in vertices] + unordered_vertices.sort() + sorted_ids = unordered_vertices + current_pivot_index = 0 + vertices = set(vertices) + print(vertices.difference(self.Su)) + while len(vertices.difference(self.Su)) != 0 : # Su != Vertices should be... + pivot = sorted_ids[current_pivot_index] + # print(f"Process {self.process_id} picks pivot={pivot}") + for neighbor in neigbors: + if self.ParentInformation[self.process_id][pivot] == neighbor: + self.sendMessageToNeighbor(neighbor, "INFO", "Child("+str(pivot)+")") + else: + self.sendMessageToNeighbor(neighbor, "INFO", "NotChild("+str(pivot)+")") + # wait for a specific number of messages + while True: + t = self.getPendingChildMessageCount(pivot) + if t != len(neigbors): + time.sleep(0.4) + else: + break + + if self.DistanceInformation[self.process_id][pivot] < float("inf"): + if self.process_id != pivot: + + D_pivot = self.waitPivotDistanceFrom(self.ParentInformation[self.process_id][pivot], pivot) + while D_pivot is None: + D_pivot = self.waitPivotDistanceFrom(self.ParentInformation[self.process_id][pivot], pivot) + + for neighbor in neigbors: + if self.getParticularChildMessage(neighbor, pivot): + self.sendMessageToNeighbor(neighbor, "DISTANCE", (pivot, D_pivot)) + for vertex in vertices: + if self.DistanceInformation[self.process_id][vertex] > self.DistanceInformation[self.process_id][pivot] + D_pivot[pivot][vertex]: + self.DistanceInformation[self.process_id][vertex] = self.DistanceInformation[self.process_id][pivot]+D_pivot[pivot][vertex] + self.ParentInformation[self.process_id][vertex] = self.ParentInformation[self.process_id][pivot] + elif self.process_id == pivot: + received_child_messages = [] + for neighbor in neigbors: + if self.getParticularChildMessage(neighbor, pivot): + received_child_messages.append(neighbor) + for neighbor in received_child_messages: + self.sendMessageToNeighbor(neighbor, "DISTANCE", (pivot, self.DistanceInformation)) + + self.Su.add(pivot) + current_pivot_index += 1 + print(f"\n\nPath Finding has been completed {self.process_id} - {self.DistanceInformation} - {self.ParentInformation}") + return (self.DistanceInformation, self.ParentInformation) + + + def sendMessageToNeighbor(self, neighbor_id, message_type, message): + message_header = GenericMessageHeader(message_type, TouegRoutingComponent.__name__+"-"+str(self.componentinstancenumber), + TouegRoutingComponent.__name__+"-"+str(neighbor_id), interfaceid=str(self.componentinstancenumber)+"-"+str(neighbor_id)) + mess_ = GenericMessage(message_header, message) + + event = Event(self, EventTypes.MFRT, mess_) + self.send_down(event) + + def getPendingChildMessageCount(self, pivot): + child_message_count = 0 + for i in self.message_queue: + if i[1] == "INFO" and (("Child(" + str(pivot) + ")" == i[2]) or ("NotChild(" + str(pivot) + ")" == i[2])): + child_message_count += 1 + return child_message_count + + def waitPivotDistanceFrom(self, source, pivot): + self.queue_lock.acquire() + for index, i in enumerate(self.message_queue): + if i[0] == source and i[1] == "DISTANCE" and i[2][0] == pivot: + data = self.message_queue.pop(index) + self.queue_lock.release() + return data[2][1] + self.queue_lock.release() + return None + + def getParticularChildMessage(self, neigh, pivot): + self.queue_lock.acquire() + for index, i in enumerate(self.message_queue): + if i[0] == neigh and i[1] == "INFO" and "Child("+str(pivot)+")" == i[2]: + data = self.message_queue.pop(index) + self.queue_lock.release() + return True + self.queue_lock.release() + return False + diff --git a/__init__.py b/__init__.py old mode 100644 new mode 100755 diff --git a/requirements.txt b/requirements.txt old mode 100644 new mode 100755 diff --git a/tests/MutualExclusion/testRicartAgrawala.py b/tests/MutualExclusion/testRicartAgrawala.py old mode 100644 new mode 100755 diff --git a/tests/test.py b/tests/test.py old mode 100644 new mode 100755 diff --git a/tests/testbroadcasting.py b/tests/testbroadcasting.py old mode 100644 new mode 100755 diff --git a/tests/testchannels.py b/tests/testchannels.py old mode 100644 new mode 100755 diff --git a/tests/testcomposition.py b/tests/testcomposition.py old mode 100644 new mode 100755 diff --git a/tests/testnx.py b/tests/testnx.py old mode 100644 new mode 100755