network = Network(source, c, Q)
    network.add_nodes(nodes)

    routes, total_cost = network.build_route()

    print([node.id for route in routes for node in route])

    # the route found by the heuristic should have less or equal number of vehicle
    #assert len(routes[0]) <= m
    m = len(routes)

    # cplex solution

    f = Formulation(A, V, N, q, Q, c, m, n, 3)
    f.set_formulation()
    f.add_formulation_constraints()

    # save initial solution as CPLEX file
    value_map = utils.write_cplex_solution(routes, n)
    solve_solution = SolveSolution(model=f.formulation,
                                   var_value_map=value_map,
                                   obj=total_cost)

    solution, routes_solution = f.run_formulation(solve_solution, True)

    utils.print_routes(routes_solution)

    if solution is None:
        new_value = {
            'Instance': dataset["instance"],