示例#1
0
def multi_processor_solve(Graph, solver, alpha):
    # -- Setting up for the solve --
    print 'Solving network for alpha = %1.3f' % alpha
    for node in Graph.nodes_iter():
        Graph.node[node]['Mismatch'] = float(alpha)*Graph.node[node]['Gw'] \
                                       + (1 - float(alpha))*Graph.node[node]['Gs'] \
                                       - Graph.node[node]['Load']

    # -- Solving --
    if solver == 'synchronized':
        syncSolver(Graph)
    else:
        print 'Valid solvers are:\n- \'synchronized\''

    # -- Adding new data to the proper containers --
    balance_dict = {}
    ip_dict = {}
    flow_dict = {}
    for node in Graph.nodes_iter():
        balance_dict.update({node: Graph.node[node]['Balance']})
        ip_dict.update({node: Graph.node[node]['Injection Pattern']})

    for (m, n) in Graph.edges_iter():
        flow_dict.update({(m, n): Graph[m][n]['flow']})

    return [{alpha: balance_dict}, {alpha: ip_dict}, {alpha: flow_dict}]
示例#2
0
def solve_for_new_data(Graph, alpha):
    # Attempts to save all the results to './Results/europe_sorted_by_alpha.npz'

    if not os.path.isfile('./Results/europe_sorted_by_alpha.npz'):
        print 'Folder Results/ not found'
        print 'Creating folder Results/'
        os.makedirs(r'./Results')
    
        alpha_list = [alpha]
        balance_dict_list = [[]]
        ip_dict_list = [[]]
        flow_dict_list = [[]]
        print 'Calculating powerflows for alpha = %2.2f' % alpha
        syncSolver(Graph)
        for node in Graph.nodes_iter():
            balance_dict_list[-1].append({node: Graph.node[node]['Balance']})
            ip_dict_list[-1].append({node: Graph.node[node]['Injection Pattern']})
        
        for (m, n) in Graph.edges_iter():
            flow_dict_list[-1].append({(m, n): Graph[m][n]['flow']})

        np.savez_compressed('Results/europe_sorted_by_alpha.npz',\
                            alpha_list = alpha_list,\
                            balance_dict_list = balance_dict_list,\
                            ip_dict_list = ip_dict_list,\
                            flow_dict_list = flow_dict_list)
    
        print 'Saved data to Results/europe_sorted_by_alpha.npz'
        
    else:
        print 'Loading data from Results/europe_sorted_by_alpha.npz'
    
        Graph_data = np.load('Results/europe_sorted_by_alpha.npz')
        if not alpha in Graph_data['alpha_list']:
            print alpha
            np.append(Graph_data['alpha_list'], alpha)
            print Graph_data['alpha_list']
            np.append(Graph_data['balance_dict_list'], [])
            np.append(Graph_data['ip_dict_list'], [])
            np.append(Graph_data['flow_dict_list'], [])
            
            print 'Calculating powerflows for alpha = %2.2f' % alpha
            syncSolver(Graph)
            for node in Graph.nodes_iter():
                np.append(Graph_data['balance_dict_list'][-1], {node: Graph.node[node]['Balance']})
                np.append(Graph_data['ip_dict_list'][-1], {node: Graph.node[node]['Injection Pattern']})
                #balance_dict_list[-1].append({node: Graph.node[node]['Balance']})
                #ip_dict_list[-1].append({node: Graph.node[node]['Injection Pattern']})
        
            for (m, n) in Graph.edges_iter():
                np.append(Graph_data['flow_dict_list'][-1], {(m, n): Graph[m][n]['flow']})
                #flow_dict_list[-1].append({(m, n): Graph[m][n]['flow']})
        
            np.savez_compressed('Results/europe_sorted_by_alpha.npz',\
                                alpha_list = Graph_data['alpha_list'],\
                                balance_dict_list = Graph_data['balance_dict_list'],\
                                ip_dict_list = Graph_data['ip_dict_list'],\
                                flow_dict_list = Graph_data['flow_dict_list'])
    
            print 'Saved data to Results/europe_sorted_by_alpha.npz'
        else:
            print 'Data values for alpha = %2.2f found... Skipping...' % alpha