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}]
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