Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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