def borne_sup(data): solution = Solution(data.graph) solution.name = 'sup' solution.num_evac_nodes = data.num_evac_nodes solution.method = 'computed ' + solution.name start_time = time() # start each evacuation one by one start_evac = 0 for (node_id, node_data) in data.graph.nodes(data=True): # to get only the evac nodes if 'population' in node_data: solution.evac_nodes[str(node_id)] = EvacNode( node_id, int(node_data['max_rate']), start_evac) path = node_data['path'] # add each route lenght to duration for a, b in zip([node_id] + path, path): start_evac += int(data.graph[a][b]['lenght']) solution.calc_time = time() - start_time solution.calc_obj() solution.create_timeline() solution.check_valid() return solution
def borne_inf(data): solution = Solution(data.graph) solution.name = 'inf' solution.num_evac_nodes = data.num_evac_nodes solution.method = 'computed' + solution.name start_time = time() # for each evac node, set start date to 0 and max rate for (node_id, node_data) in data.graph.nodes(data=True): # to get only the evac nodes if 'population' in node_data: solution.evac_nodes[str(node_id)] = EvacNode( node_id, int(node_data['max_rate']), 0) solution.calc_time = time() - start_time solution.calc_obj() solution.create_timeline() solution.check_valid() return solution