# -*- coding: utf-8 -*- # ============================================================================= # Copyright (C) 2018 Mercados Electricos de Centroamérica. All rights reserved # ============================================================================= """Crea las estructuras con numeración secuencial de buses, circuitos y nombres de circuitos """ from numpy import array from numpy import zeros from utils.idx_brch import BUS_I, BUS_J, CKT from pandas import DataFrame def setbus(net): """Lee la información de la red y crea una serie con los códigos de nodos y su numeración correlativa. """ b = net['bus_i'].append(net['bus_j']).drop_duplicates().sort_values() b = b.reset_index(drop=True) return b def setbranch(net, b): """Utiliza la información de la red, lod códigos de nodos y su numeración correlativa para generar un listado con de los circuitos de acuerdo a la numeración correlativo del nodo. """ br = net.copy() for i in range(0, net.shape[0]): br.loc[i, 'bus_i'] = b[b == br['bus_i'][i]].index[0] br.loc[i, 'bus_j'] = b[b == br['bus_j'][i]].index[0] br = br.sort_values(['bus_i', 'bus_j']) return br.values def setvariable(variable): l=variable.shape[0] z=zeros(l) for i in range(0,variable.shape[0]): z[i]=variable[i] return z def setvariable_s(variable): (l,n)=variable.shape z=zeros((l,n)) for i in range(0,l): for j in range(0,n): z[i,j]=variable.iloc[i,j] return z def setvariable_p(variable, n): z=zeros((n,5)) m=0 for j in range(0,n): for i in range(0,5): z[j,i]=variable[m] m=m+1 return z def branchnames(b, br): """Devuelve un dataframe con los BUS I BUS J y CKT ordenados. """ brnames_bi = [] brnames_bj = [] for i in range(0, br.shape[0]): brnames_bi.append("".join([str(b[br[i, BUS_I]])])) brnames_bj.append("".join([str(b[br[i, BUS_J]])])) brnames=DataFrame() brnames['BUS I']=brnames_bi brnames['BUS J']=brnames_bj brnames['CKT']=br[:,2] brnames.loc[i,'Total']=0 for i in range(0, brnames.shape[0]): brnames.loc[i,'Total']=brnames.loc[i,'BUS I']+"-"+brnames.loc[i,'BUS J']+"-"+brnames.loc[i,'CKT'] return brnames def set_periodo(numero,periodo): """Devuelve una matriz con el periodo para usar en los array de rtr, iep y pexantes """ z=zeros(numero) for i in range(0,numero): z[i]=periodo return z def set_dgnacional(bus,dg): """Devuelve un dataframe con los despachos nacionales ordenados por nodos """ bus1=DataFrame() bus1['nodos']=bus bus1['Generacion']=0 bus1['Demanda']=0 for i in range(0,len(bus)): for j in range(0,len(dg)): if bus1.iat[i,0]==dg.iat[j,0]: bus1.loc[i,'Generacion']=dg.iat[j,2] bus1.loc[i,'Demanda']=dg.iat[j,3] break return bus1