Leonel José Henriquez Orellana 5 år sedan
förälder
incheckning
7a4aba2f82
9 ändrade filer med 2018 tillägg och 202 borttagningar
  1. BIN
      ejemplos/predespacho2112/predespacho_2112.xlsx
  2. BIN
      ejemplos/predespacho_20200918.xlsx
  3. 60 20
      mct/makeMCT.py
  4. 202 176
      presdespacho.py
  5. 1 1
      red/create.py
  6. 4 4
      red/create1.py
  7. 1748 0
      red/nodos_pais.csv
  8. 2 0
      red/orderC.py
  9. 1 1
      red/read.py

BIN
ejemplos/predespacho2112/predespacho_2112.xlsx


BIN
ejemplos/predespacho_20200918.xlsx


+ 60 - 20
mct/makeMCT.py

@@ -10,23 +10,48 @@ from pandas import read_excel
 
 # Se definen las líneas que componenn las interconexiones entre las areas de
 # control
-#__GUAHON = ['1710-3190-1']
-__GUA = ['1126-29162-1', '1124-29161-1','1710-3190-1']
-__ES = ['1126-29162-1', '1124-29161-1','28181-29181-1', '28181-29182-2']
-#__ESAHON = ['28181-29181-1', '28181-29182-2']
-__HON = ['1710-3190-1', '28181-29181-1', '28181-29182-2','3301-4411-1','3310-4407-1']
+__GUAHON = ['1710-3190-1']
+__GUAELS =['1126-29162-1', '1124-29161-1']
+__ELSHON = ['28181-29181-1', '28181-29182-2']
 __HONNIC = ['3301-4411-1', '3310-4407-1']
-__NICCRC = ['4412-50050-1', '4408-50000-1']
-__CRCPAN = ['6500-56050-1', '6400-58350-1', '6000-56050-1']
+__NICCRI = ['4406-4412-1', '4750-4408-1']
+__CRIPAN = ['6500-56050-1', '6400-58350-1', '6000-56050-1']
 
-__INTER = {#'GUAHON': __GUAHON,
-           'GUA': __GUA,
-           #'ESAHON': __ESAHON,
-           'ES': __ES,
-           'HON': __HON,
+#__ELSHON_IND_28181_29182=['28181-29181-1', '28181-29182-2']
+#__IMP_TOT_ELSIND28181_29182=['28181-29181-1', '28181-29182-2']
+#__IMP_TOT_HONIND28181_29182=['28181-29181-1', '28181-29182-2']
+
+__EXP_TOT_GUA_NS = []
+__IMP_TOT_SAL = []
+__IMP_TOT_HON = []
+__IMP_TOT_NIC =[]
+__IMP_TOT_CRI =[]
+__IMP_TOT_PAN = []
+
+
+#__CRIPAN_IND_56050_6000=['6500-56050-1', '6400-58350-1', '6000-56050-1']
+#__IMP_TOT_CRIIND_56050_6000=['6500-56050-1', '6400-58350-1', '6000-56050-1']
+#__IMP_TOT_PANIND_56050_6000=['6500-56050-1', '6400-58350-1', '6000-56050-1']
+
+
+__INTER = {'GUAHON': __GUAHON,
+           'GUAELS':__GUAELS,
+           'ELSHON': __ELSHON,
+           #'ELSHON_IND_28181_29182': __ELSHON_IND_28181_29182,
+           #'IMP_TOT_ELSIND28181_29182': __IMP_TOT_ELSIND28181_29182,
+           #'IMP_TOT_HONIND28181_29182':__IMP_TOT_HONIND28181_29182,
+           #'CRIPAN_IND_56050_6000':__CRIPAN_IND_56050_6000,
+           #'IMP_TOT_CRIIND_56050_6000':__IMP_TOT_CRIIND_56050_6000,
+           #'IMP_TOT_PANIND_56050_6000':__IMP_TOT_PANIND_56050_6000,
            'HONNIC': __HONNIC,
-           'NICCRC': __NICCRC,
-           'CRCPAN': __CRCPAN}
+           'NICCRI': __NICCRI,
+           'CRIPAN': __CRIPAN,
+           'EXP_TOT_GUA_NS': __EXP_TOT_GUA_NS,
+           'IMP_TOT_SAL': __IMP_TOT_SAL,
+           'IMP_TOT_HON': __IMP_TOT_HON,
+           'IMP_TOT_NIC': __IMP_TOT_NIC,
+           'IMP_TOT_CRI': __IMP_TOT_CRI,
+           'IMP_TOT_PAN': __IMP_TOT_PAN}
 
 
 def linmct(brnames):
@@ -38,9 +63,12 @@ def linmct(brnames):
     for item in __INTER:
         lmct[item] = []
         for i in __INTER[item]:
-            l = int(argwhere(brnames == i))
-            lmct[item].append(l)
-    
+            try:
+
+                l = int(argwhere(brnames == i))
+                lmct[item].append(l)
+            except Exception:
+                0
     return lmct
 
 
@@ -48,7 +76,7 @@ def readmct(file):
     """Lee la información de Máximas Capacidades de Trasnferencia del archivo
     Excel del caso a resolver.
     """
-    mct = read_excel(file, 'mct', index_col=[0,1,2])
+    mct = read_excel(file, 'mct', index_col=[1,2,3])
     
     return mct
 
@@ -64,9 +92,21 @@ def set_dir_flujo():
     d = {}
     
     for key in __INTER.keys():
-        if key == 'CRCPAN':
+        if key == 'CRIPAN':
             d[key] = -1
-        elif key == 'HON':
+        elif key == 'IMP_TOT_HON':
+           d[key] = -1
+        elif key == 'IMP_TOT_PAN':
+           d[key] = -1
+        elif key == 'EXP_TOT_GUA_NS':
+           d[key] = -1
+        elif key == 'IMP_TOT_HONIND28181_29182':
+           d[key] = -1
+        elif key == 'CRIPAN_IND_56050_6000':
+           d[key] = -1
+        elif key == 'IMP_TOT_CRIIND_56050_6000':
+           d[key] = -1
+        elif key == 'IMP_TOT_PANIND_56050_6000':
            d[key] = -1
         else:
             d[key] = 1

+ 202 - 176
presdespacho.py

@@ -5,6 +5,7 @@ import logging
 import traceback
 from os import path
 import sys
+import pandas as pd
 
 import pyutilib.subprocess.GlobalData
 from numpy import array, zeros
@@ -16,6 +17,7 @@ from pyomo.kernel import value
 from common.data import APPDIRS
 
 from mct.makeMCT import linmct, readmct, set_dir_flujo
+from red.orderC import nodec
 from red.create import *
 from red.create1 import *
 from red.makeBdc import makeBdc
@@ -53,22 +55,7 @@ def setmodel(file, p_exec, all_day=True):
     # Parametros de la linea
     logger.info("Inicio Predespacho Regional")
     logger.info("Leyendo información de RTR...")
-    net = excel2net(file)
-    bus = setbus(net)  # Nodos
-    branch = setbranch(net, bus)  # Set lineas
-    bu = branch[:, 5]  # potenica max de la linea
-    bl = branch[:, 6]  # potenica min de la linea
-    xc = branch[:, 3]  # Reactancia de la linea
-    rc = branch[:, 4]  # Resistencia de la linea
-    nb = bus.shape[0]  # Numero de nodos
-    nbr = branch.shape[0]  # Numero de lineas
-    A = makeBdc(bus, branch)  # Matriz incidente
-    brnames = branchnames(bus, branch)  # Nombre de las lineas
-    inc = A.toarray()*-1
-
-    # Lineas para límites de MCT
-    br_t = brnames['Total'].to_numpy()
-    lin_mct = linmct(br_t)
+    net_t = excel2net(file)
     dirf = set_dir_flujo()
     mct = readmct(file)
 
@@ -89,12 +76,30 @@ def setmodel(file, p_exec, all_day=True):
     result_foo_r_t = DataFrame()
     result_fof_t = DataFrame()
     result_foff_t = DataFrame()
-    foo_ret_iny_t = DataFrame()
 
     # El range del for se modifica dependiendo los periodos que se quieren correr.
     for PERIODO in range(min, max):
         logger.info("Inicio de la ejecución para el periodo {}".format(PERIODO))
 
+        net=net_t[net_t.periodo.isin([PERIODO])].copy()
+        net.reset_index(drop=True, inplace=True)
+        net.drop(['periodo'], axis='columns', inplace=True)
+        bus = setbus(net)#Nodos
+        branch = setbranch(net, bus)#Set lineas
+        bu = branch[:, 5]#potenica max de la linea
+        bl = branch[:, 6]#potenica min de la linea
+        xc = branch[:,3]#Reactancia de la linea
+        rc = branch[:,4]#Resistencia de la linea
+        nb = bus.shape[0] #Numero de nodos
+        nbr = branch.shape[0]#Numero de lineas
+        A = makeBdc(bus, branch)#Matriz incidente
+        brnames = branchnames(bus, branch)#Nombre de las lineas
+        inc = A.toarray()*-1
+
+        # Lineas para límites de MCT
+        br_t = brnames['Total'].to_numpy()
+        lin_mct = linmct(br_t)
+
         logger.info("Leyendo información de los despacho nacionales.")
         # Dependiendo de los valores de la columna periodo del df son los valores que toma
         dg = dg_t[dg_t.periodo.isin([PERIODO])]
@@ -311,8 +316,7 @@ def setmodel(file, p_exec, all_day=True):
 
         # Máximas Capacidades de Trasferencia
         # Maxima transferenica(interconexion,sentido,periodo)
-        model.Mct = Param(model.inter, model.sen, model.per,
-                          initialize=mct.mct.to_dict())
+        model.Mct = Param(model.per, model.inter, model.sen,  initialize=mct.MCT.to_dict(), default=300, mutable=True)
         model.DirF = Param(model.inter, initialize=dirf)
 
         logger.info("Ecuación de Función Objetivo Max.")
@@ -473,187 +477,205 @@ def setmodel(file, p_exec, all_day=True):
 
         # Máximas capacidades de trasferencia entre áreas de control
         def eq_mct_ns_rule(model, inter):
-            if inter == 'ES':  # Maxima exportacion de El Salvador
-                return (-(model.DirF[inter]*model.rtmw_c[lin_mct[inter][0]]+model.DirF[inter]*model.rtmw_c[lin_mct[inter][1]]) +
-                        (model.DirF[inter]*model.rtmw_c[lin_mct[inter][2]]+model.DirF[inter]*model.rtmw_c[lin_mct[inter][3]])) <= model.Mct[inter, 'ns', PERIODO] + 0.001
-            elif inter == 'HON':  # Maxima importacion de Honduras
-                return (-(model.DirF[inter]*model.rtmw_c[lin_mct[inter][0]]+model.DirF[inter]*model.rtmw_c[lin_mct[inter][1]] +
-                          model.DirF[inter]*model.rtmw_c[lin_mct[inter][2]]) + (model.DirF[inter]*model.rtmw_c[lin_mct[inter][3]] +
-                                                                                model.DirF[inter]*model.rtmw_c[lin_mct[inter][4]])) <= model.Mct[inter, 'sn', PERIODO] + 0.001
+            if inter=='IMP_TOT_SAL':#Maxima exportacion de El Salvador
+                return ((sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['ELSHON']))-
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['GUAELS']))) <= model.Mct[PERIODO, inter, 'ns']
+            
+            elif inter=='EXP_TOT_GUA_NS':
+                return ((sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['GUAHON'])) +
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['GUAELS']))) <= model.Mct[PERIODO, inter, 'ns'] 
+
+            elif inter=='IMP_TOT_HON':#Maxima importacion de Honduras
+                return (-(sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['ELSHON'])) -
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['GUAHON'])) + 
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['HONNIC']))) <= model.Mct[PERIODO, inter, 'sn'] 
+            
+            elif inter=='IMP_TOT_NIC':#Maxima exportacion de Nicaragua
+                return ((sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['NICCRI'])) -
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['HONNIC']))) <= model.Mct[PERIODO, inter, 'ns']
+
+            elif inter=='IMP_TOT_CRI':#Maxima exportacion de Costa Rica
+                return ((sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['NICCRI'])) +
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['CRIPAN']))) <= model.Mct[PERIODO, inter, 'ns'] 
+            
+            elif inter=='IMP_TOT_PAN':
+                return sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['CRIPAN']) <= model.Mct[PERIODO, inter, 'ns'] 
+
             else:
-                return sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct[inter]) <= model.Mct[inter, 'ns', PERIODO] + 0.001
+                return (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct[inter]))  <= model.Mct[PERIODO, inter, 'ns'] 
         model.eq_mct_ns = Constraint(model.inter, rule=eq_mct_ns_rule)
 
         def eq_mct_sn_rule(model, inter):
-            if inter == 'ES':  # Maxima importacion de El Salvador
-                return (-(model.DirF[inter]*model.rtmw_c[lin_mct[inter][0]]+model.DirF[inter]*model.rtmw_c[lin_mct[inter][1]]) +
-                        (model.DirF[inter]*model.rtmw_c[lin_mct[inter][2]]+model.DirF[inter]*model.rtmw_c[lin_mct[inter][3]])) >= -model.Mct[inter, 'sn', PERIODO] + 0.00001
-            elif inter == 'HON':  # Maxima importacion de Honduras
-                return (-(model.DirF[inter]*model.rtmw_c[lin_mct[inter][0]]+model.DirF[inter]*model.rtmw_c[lin_mct[inter][1]] +
-                          model.DirF[inter]*model.rtmw_c[lin_mct[inter][2]]) + (model.DirF[inter]*model.rtmw_c[lin_mct[inter][3]] +
-                                                                                model.DirF[inter]*model.rtmw_c[lin_mct[inter][4]])) >= -model.Mct[inter, 'ns', PERIODO] + 0.00001
+            if inter=='IMP_TOT_SAL':#Maxima importacion de El Salvador
+                return ((sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['ELSHON'])) -
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['GUAELS'])))  >= -model.Mct[PERIODO, inter, 'sn'] 
+            
+            elif inter=='EXP_TOT_GUA_NS':
+                return ((sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['GUAHON'])) +
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['GUAELS']))) >= -model.Mct[PERIODO, inter, 'sn'] 
+            
+            elif inter=='IMP_TOT_HON':#Maxima importacion de Honduras
+                return (-((sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['ELSHON'])) +
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['GUAHON']))) + 
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['HONNIC']))) >= -model.Mct[PERIODO, inter, 'ns'] 
+            
+            elif inter=='IMP_TOT_NIC':#Maxima exportacion de Nicaragua
+                return ((sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['NICCRI'])) -
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['HONNIC']))) >= -model.Mct[PERIODO, inter, 'sn'] 
+
+            elif inter=='IMP_TOT_CRI':#Maxima exportacion de Costa Rica
+                return ((sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['NICCRI'])) +
+                (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['CRIPAN'])))>= -model.Mct[PERIODO, inter, 'sn'] 
+            
+            elif inter=='IMP_TOT_PAN':
+                return sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct['CRIPAN'])  >= -model.Mct[PERIODO, inter, 'sn'] 
+
             else:
-                return sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct[inter]) >= -model.Mct[inter, 'sn', PERIODO] + 0.00001
+                return (sum(model.DirF[inter]*model.rtmw_c[c] for c in lin_mct[inter])) >= -model.Mct[PERIODO, inter, 'sn'] 
         model.eq_mct_sn = Constraint(model.inter, rule=eq_mct_sn_rule)
 
         model.dual = Suffix(direction=Suffix.IMPORT)
 
-        logger.info("Construcción del modelo terminada.")
-
-        ########################################### ORIGINAL #########
-        # opt = SolverFactory('ipopt')
-        # # opt.options['max_iter']= 10000
-        # result = opt.solve(model)
-        # model.solutions.store_to(result)
-
-        ############################################ MODIFICADO POR OSCAR ############
-
-        filename = path.basename(file).split('.')[0]
-        filepath = path.dirname(file)
-
-        try:
+        print("Construcción del modelo terminada. Periodo: "+str(PERIODO))
 
-            opt = SolverFactory('ipopt')  # TODO
-
-            logger.info(
-                "Inicio de la optimización para el periodo {}...".format(p_exec))
-
-            result = opt.solve(
-                model, logfile=f'log/solver_{filename}_{p_exec}.log', tee=True)
-
-            model.solutions.store_to(result)
-
-            result.write(
-                filename=f"{APPDIRS['DATA']}/results_{filename}_periodo_{p_exec}.json",
-                format='json')
-            logger.info(
-                "Solucion encontrada para el periodo{}...".format(p_exec))
-
-        except Exception as e:
-            logger.error("No se ejecutó el problema de optimización")
-            logger.exception("Error: {}".format(e))
-
-            return
+        opt = SolverFactory('ipopt')
+        #opt.options['max_iter']= 10000
+        result = opt.solve(model)
+        model.solutions.store_to(result)
 
         # Cálculo de Precios Nodales
         # =============================================================================
-        logger.info("Calculando Precios Nodales. Periodo:" + str(PERIODO))
+        print("Calculando Precios Nodales. Periodo:" + str(PERIODO))
         Sigma = zeros(nb)
         for i in model.i:
             Sigma[i] = model.dual[model.balance_inyeccion_retiro_constraint[i]]
 
         # Construcción de array para grabar
         # =============================================================================
-        flujos = DataFrame()
-        flujos['Periodo'] = set_periodo(nbr, PERIODO)
+        flujos=DataFrame()
+        flujos['Periodo']=set_periodo(nbr,PERIODO)
         flujos['BUS I'] = brnames['BUS I']
         flujos['BUS J'] = brnames['BUS J']
         flujos['CKT'] = brnames['CKT']
         f = array(list(model.rtmw_c.get_values().values()))
-        perdidas = zeros(nbr)
+        perdidas=zeros(nbr)
         for c in model.c:
-            perdidas[c] = (f[c]**2)*rc[c]/100
+            perdidas[c]=(f[c]**2)*rc[c]/100
         flujos['Flujo'] = f
         flujos['Perdidas'] = perdidas
-        # Guarda los resultados con los anteriores
-        flujos_t = concat([flujos_t, flujos])
+        flujos=flujos.round({'Flujo':3,'Perdidas':3})
+        flujos_t=concat([flujos_t,flujos].copy())#Guarda los resultados con los anteriores
 
         pon = DataFrame()
         result_inyeccion = array(list(model.inyeccion.get_values().values()))
         result_retiro = array(list(model.retiro.get_values().values()))
-        pon['Periodo'] = set_periodo(nb, PERIODO)
-        pon['nodo'] = bus
+        pon['Periodo']=set_periodo(nb,PERIODO)
+        pon['Nodo']= bus
         pon['Precio Exante'] = Sigma*-1
-        # Guarda los resultados con los anteriores
-        pon_t = concat([pon_t, pon])
-        # print(pon)
-
-        iep = DataFrame()
-        iep['Periodo'] = set_periodo(nb, PERIODO)
-        iep['nodo'] = bus
+        pon=pon.round({'Precio Exante':2})
+        pon_t=concat([pon_t,pon]).copy()#Guarda los resultados con los anteriores
+        #print(pon)
+        
+        iep=DataFrame()
+        iep['Periodo']=set_periodo(nb,PERIODO)
+        iep['nodo']= bus
         iep['Inyeccion'] = result_inyeccion
         iep['Retiro'] = result_retiro
-        # Guarda los resultados con los anteriores
-        iep_t = concat([iep_t, iep])
-
-        result_pff_iny = array(
-            list(model.pff_iny_fisico.get_values().values()))
-        result_pff_ret = array(
-            list(model.pff_ret_fisico.get_values().values()))
-        result_pr = setvariable_p(
-            array(list(model.pr.get_values().values())), NOR)
-        result_pi = setvariable_p(
-            array(list(model.pi.get_values().values())), NOI)
-        result_pfi = setvariable_p(
-            array(list(model.pfi.get_values().values())), NCF)
-        result_pffr = setvariable_p(
-            array(list(model.pffr.get_values().values())), NCFF)
-        result_pffi = setvariable_p(
-            array(list(model.pffi.get_values().values())), NCFF)
-        result_pfft = setvariable_p(
-            array(list(model.pfft.get_values().values())), NCFF)
-
-        result_foo_r = DataFrame()
-        result_foo_r['Periodo'] = ex_oor['periodo']
-        result_foo_r['N°'] = ex_oor['N°']
-        result_foo_r['Pr Bloque 1'] = result_pr[:, 0]
-        result_foo_r['Pr Bloque 2'] = result_pr[:, 1]
-        result_foo_r['Pr Bloque 3'] = result_pr[:, 2]
-        result_foo_r['Pr Bloque 4'] = result_pr[:, 3]
-        result_foo_r['Pr Bloque 5'] = result_pr[:, 4]
-        # Guarda los resultados con los anteriores
-        result_foo_r_t = concat([result_foo_r_t, result_foo_r])
-
-        result_foo_i = DataFrame()
-        result_foo_i['Periodo'] = ex_ooi['periodo']
-        result_foo_i['N°'] = ex_ooi['N°']
-        result_foo_i['Pi Bloque 1'] = result_pi[:, 0]
-        result_foo_i['Pi Bloque 2'] = result_pi[:, 1]
-        result_foo_i['Pi Bloque 3'] = result_pi[:, 2]
-        result_foo_i['Pi Bloque 4'] = result_pi[:, 3]
-        result_foo_i['Pi Bloque 5'] = result_pi[:, 4]
-        # Guarda los resultados con los anteriores
-        result_foo_i_t = concat([result_foo_i_t, result_foo_i])
-
-        result_fof = DataFrame()
-        result_fof['Periodo'] = ex_cf['periodo']
-        result_fof['N°'] = ex_cf['N°']
-        result_fof['Pfi Bloque 1'] = result_pfi[:, 0]
-        result_fof['Pfi Bloque 2'] = result_pfi[:, 1]
-        result_fof['Pfi Bloque 3'] = result_pfi[:, 2]
-        result_fof['Pfi Bloque 4'] = result_pfi[:, 3]
-        result_fof['Pfi Bloque 5'] = result_pfi[:, 4]
-        # Guarda los resultados con los anteriores
-        result_fof_t = concat([result_fof_t, result_fof])
-
-        result_foff = DataFrame()
-        result_foff['Periodo'] = ex_cnfff['periodo']
-        result_foff['N°'] = ex_cnfff['N°']
-        result_foff['Pffr Bloque 1'] = result_pffr[:, 0]
-        result_foff['Pffr Bloque 2'] = result_pffr[:, 1]
-        result_foff['Pffr Bloque 3'] = result_pffr[:, 2]
-        result_foff['Pffr Bloque 4'] = result_pffr[:, 3]
-        result_foff['Pffr Bloque 5'] = result_pffr[:, 4]
-        result_foff['Pffi Bloque 1'] = result_pffi[:, 0]
-        result_foff['Pffi Bloque 2'] = result_pffi[:, 1]
-        result_foff['Pffi Bloque 3'] = result_pffi[:, 2]
-        result_foff['Pffi Bloque 4'] = result_pffi[:, 3]
-        result_foff['Pffi Bloque 5'] = result_pffi[:, 4]
-        result_foff['Pfft Bloque 1'] = result_pfft[:, 0]
-        result_foff['Pfft Bloque 2'] = result_pfft[:, 1]
-        result_foff['Pfft Bloque 3'] = result_pfft[:, 2]
-        result_foff['Pfft Bloque 4'] = result_pfft[:, 3]
-        result_foff['Pfft Bloque 5'] = result_pfft[:, 4]
-        # Guarda los resultados con los anteriores
-        result_foff_t = concat([result_foff_t, result_foff])
-
-        foo_ret_iny = DataFrame()
-        foo_ret_iny['Periodo'] = ex_cnfff['periodo']
-        foo_ret_iny['N°'] = ex_cnfff['N°']
-        foo_ret_iny['Inyeccion'] = result_pff_iny
-        foo_ret_iny['Retiro'] = result_pff_ret
-        # Guarda los resultados con los anteriores
-        foo_ret_iny_t = concat([foo_ret_iny_t, foo_ret_iny])
+        iep=iep.round({'Inyeccion':3,'Retiro':3})
+        iep_t=concat([iep_t,iep]).copy()#Guarda los resultados con los anteriores 
+
+        result_pff_iny=array(list(model.pff_iny_fisico.get_values().values()))
+        result_pff_ret=array(list(model.pff_ret_fisico.get_values().values()))
+        result_pr = setvariable_p(array(list(model.pr.get_values().values())),NOR)
+        result_pi = setvariable_p(array(list(model.pi.get_values().values())),NOI)
+        result_pfi = setvariable_p(array(list(model.pfi.get_values().values())),NCF)
+        result_pffr = setvariable_p(array(list(model.pffr.get_values().values())),NCFF)
+        result_pffi = setvariable_p(array(list(model.pffi.get_values().values())),NCFF)
+        result_pfft = setvariable_p(array(list(model.pfft.get_values().values())),NCFF)
+
+        result_foo_r=DataFrame()
+        result_foo_r['ID']=ex_oor['N°']
+        result_foo_r['Fecha']=ex_oor['Fecha'].apply( lambda d : d.date() )
+        result_foo_r['Periodo']=ex_oor['periodo']
+        result_foo_r['Nodo']=ex_oor['nodo_oor']
+        pais_foo_r=pd.concat([result_foo_r.set_index('Nodo'),nodec.set_index('ID_NODO')], axis=1, join='inner').reset_index()
+        pex_foo_r=pd.concat([result_foo_r.set_index('Nodo'),pon.set_index('Nodo')], axis=1, join='inner').reset_index()
+        result_foo_r.drop(['Nodo'], axis='columns', inplace=True)
+        result_foo_r['Pais']=pais_foo_r['ID_AREA']
+        result_foo_r['Nodo']=ex_oor['nodo_oor']
+        result_foo_r['Precio Exante']=pex_foo_r['Precio Exante']
+        result_foo_r['Agente']=ex_oor['Agente']
+        result_foo_r['MW Predespachados']=result_pr[:,0] + result_pr[:,1] + result_pr[:,2]+result_pr[:,3]+result_pr[:,4]
+        result_foo_r=result_foo_r.round({'MW Predespachados':3})
+        result_foo_r_t=concat([result_foo_r_t,result_foo_r]).copy()#Guarda los resultados con los anteriores
+
+        result_foo_i=DataFrame()
+        result_foo_i['ID']=ex_ooi['N°']
+        result_foo_i['Fecha']=ex_ooi['Fecha'].apply( lambda d : d.date() )
+        result_foo_i['Periodo']=ex_ooi['periodo']
+        result_foo_i['Nodo']=ex_ooi['nodo_i']
+        pex_foo_i=pd.concat([result_foo_i.set_index('Nodo'),pon.set_index('Nodo')], axis=1, join='inner').reset_index()
+        pais_foo_i=pd.concat([result_foo_i.set_index('Nodo'),nodec.set_index('ID_NODO')], axis=1, join='inner').reset_index()
+        result_foo_i.drop(['Nodo'], axis='columns', inplace=True)
+        result_foo_i['Pais']=pais_foo_i['ID_AREA']
+        result_foo_i['Nodo']=ex_ooi['nodo_i']
+        result_foo_i['Precio Exante']=pex_foo_i['Precio Exante']
+        result_foo_i['Agente']=ex_ooi['Agente']
+        result_foo_i['MW Predespachados']=result_pi[:,0]+result_pi[:,1]+result_pi[:,2]+result_pi[:,3]+result_pi[:,4]
+        result_foo_i=result_foo_i.round({'MW Predespachados':3})
+        result_foo_i_t=concat([result_foo_i_t,result_foo_i]).copy()#Guarda los resultados con los anteriores
+        
+        result_fof=DataFrame()
+        result_fof['ID']=ex_cf['N°']
+        result_fof['Fecha']=ex_cf['Fecha'].apply( lambda d : d.date() )
+        result_fof['Periodo']=ex_cf['periodo']
+        result_fof['Nodo Inyeccion']=ex_cf['nodo_cfi']
+        pex_fof_i=pd.concat([result_fof.set_index('Nodo Inyeccion'),pon.set_index('Nodo')], axis=1, join='inner').reset_index()
+        pais_fof_i=pd.concat([result_fof.set_index('Nodo Inyeccion'),nodec.set_index('ID_NODO')], axis=1, join='inner').reset_index()
+        result_fof.drop(['Nodo Inyeccion'], axis='columns', inplace=True)
+        result_fof['Pais Inyeccion']=pais_fof_i['ID_AREA']
+        result_fof['Nodo Inyeccion']=ex_cf['nodo_cfi']
+        result_fof['Precio Exante Inyeccion']=pex_fof_i['Precio Exante']
+        result_fof['Agente Inyeccion']=ex_cf['agente_cfi']
+        result_fof['Nodo Retiro']=ex_cf['nodo_cfr']
+        pais_fof_r=pd.concat([result_fof.set_index('Nodo Retiro'),nodec.set_index('ID_NODO')], axis=1, join='inner').reset_index()
+        pex_fof_r=pd.concat([result_fof.set_index('Nodo Retiro'),pon.set_index('Nodo')], axis=1, join='inner').reset_index()
+        result_fof.drop(['Nodo Retiro'], axis='columns', inplace=True)
+        result_fof['Pais Retiro']=pais_fof_r['ID_AREA']
+        result_fof['Nodo Retiro']=ex_cf['nodo_cfr']
+        result_fof['Precio Exante Retiro']=pex_fof_r['Precio Exante']
+        result_fof['Agente Retiro']=ex_cf['agente_cfr']
+        result_fof['MW Predespachados O.I. Flexibilidad']=result_pfi[:,0]+result_pfi[:,1]+result_pfi[:,2]+result_pfi[:,3]+result_pfi[:,4]
+        result_fof['MW Predespachados Ret. Requerido']=ex_cf['potencia_req']
+        result_fof=result_fof.round({'MW Predespachados O.I. Flexibilidad':3,'MW Predespachados Ret. Requerido':3})
+        result_fof_t=concat([result_fof_t,result_fof]).copy()#Guarda los resultados con los anteriores
+
+        result_foff=DataFrame()
+        result_foff['ID']=ex_cnfff['N°']
+        result_foff['Fecha']=ex_cnfff['Fecha'].apply( lambda d : d.date() )
+        result_foff['Periodo']=ex_cnfff['periodo']
+        result_foff['Nodo Inyeccion']=ex_cnfff['nodo_cnfffi']
+        pex_foff_i=pd.concat([result_foff.set_index('Nodo Inyeccion'),pon.set_index('Nodo')], axis=1, join='inner').reset_index()
+        pais_foff_i=pd.concat([result_foff.set_index('Nodo Inyeccion'),nodec.set_index('ID_NODO')], axis=1, join='inner').reset_index()
+        result_foff.drop(['Nodo Inyeccion'], axis='columns', inplace=True)
+        result_foff['Pais Inyeccion']=pais_foff_i['ID_AREA']
+        result_foff['Nodo Inyeccion']=ex_cnfff['nodo_cnfffi']
+        result_foff['Precio Exante Inyeccion']=pex_foff_i['Precio Exante']
+        result_foff['Agente Inyeccion']=ex_cnfff['agente_cnfffi']
+        result_foff['Nodo Retiro']=ex_cnfff['nodo_cnfffr']
+        pais_foff_r=pd.concat([result_foff.set_index('Nodo Retiro'),nodec.set_index('ID_NODO')], axis=1, join='inner').reset_index()
+        pex_foff_r=pd.concat([result_foff.set_index('Nodo Retiro'),pon.set_index('Nodo')], axis=1, join='inner').reset_index()
+        result_foff.drop(['Nodo Retiro'], axis='columns', inplace=True)
+        result_foff['Pais Retiro']=pais_foff_r['ID_AREA']
+        result_foff['Nodo Retiro']=ex_cnfff['nodo_cnfffr']
+        result_foff['Precio Exante Retiro']=pex_foff_r['Precio Exante']
+        result_foff['Agente Retiro']=ex_cnfff['agente_cnfffr']
+        result_foff['CVT']=result_foff['Precio Exante Retiro'] - result_foff['Precio Exante Inyeccion']
+        result_foff['MW Predespachados CNFFF']=result_pfft[:,0]+result_pfft[:,1]+result_pfft[:,2]+result_pfft[:,3]+result_pfft[:,4]
+        result_foff['MW Predespachados O.I. Flexibilidad']=result_pffi[:,0]+result_pffi[:,1]+result_pffi[:,2]+result_pffi[:,3]+result_pffi[:,4]
+        result_foff['MW Predespachados O.R. Flexibilidad']=result_pffr[:,0]+result_pffr[:,1]+result_pffr[:,2]+result_pffr[:,3]+result_pffr[:,4]
+        result_foff=result_foff.round({'CVT':2,'MW Predespachados CNFFF':3,'MW Predespachados O.R. Flexibilidad':3,'MW Predespachados O.I. Flexibilidad':3})
+        result_foff_t=concat([result_foff_t,result_foff])#Guarda los resultados con los anteriores
 
     logger.info("Escribiendo resultados en carpeta.")
     filename = path.basename(file).split('.')
@@ -667,17 +689,21 @@ def setmodel(file, p_exec, all_day=True):
         new_filename = filename[0]+'_results_{}.'.format(p_exec)+filename[1]
         new_file = path.join(filepath, new_filename)
 
-    writer = ExcelWriter(new_file)
-    flujos_t.to_excel(writer, 'IEP-RTR', index=False)
-    iep_t.to_excel(writer, 'IEP-TOTAL', index=False)
-    pon_t.to_excel(writer, 'PEXANTES', index=False)
-    result_foo_i_t.to_excel(writer, 'TOP-I', index=False)
-    result_foo_r_t.to_excel(writer, 'TOP-R', index=False)
-    result_fof_t.to_excel(writer, 'TCP-CF', index=False)
-    result_foff_t.to_excel(writer, 'TCP-CNFFF-1', index=False)
-    foo_ret_iny_t.to_excel(writer, 'TCP-CNFFF-2', index=False)
+    writer=ExcelWriter(new_file)
+    flujos_t.to_excel(writer,'IEP-RTR',index=False)
+    iep_t.to_excel(writer,'IEP-TOTAL',index=False)
+    pon_t.to_excel(writer,'PEXANTE',index=False)
+    result_foo_i_t.to_excel(writer,'TOP-I',index=False)
+    result_foo_r_t.to_excel(writer,'TOP-R',index=False)
+    result_fof_t.to_excel(writer,'TCP-CF',index=False)
+    result_foff_t.to_excel(writer,'TCP-CNFFF',index=False)
     writer.save()
 
+    print("{:=^100}".format(""))
+    print("{:^100}".format(" Script Finalizado "))
+    print("{:^100}".format(" Mercados Eléctricos de Centroamérica (c) 2020 "))
+    print("{:=^100}".format(""))
+        
     return 0
 
 

+ 1 - 1
red/create.py

@@ -71,7 +71,7 @@ def branchnames(b, br):
     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']
+        brnames.loc[i,'Total']=brnames.loc[i,'BUS I']+"-"+brnames.loc[i,'BUS J']+"-"+str(brnames.loc[i,'CKT'])
     return brnames
 
 def set_periodo(numero,periodo):

+ 4 - 4
red/create1.py

@@ -31,7 +31,7 @@ def readofertas_oois(predespacho_file):
     """
 
     ofer_ooi = read_excel(predespacho_file,sheet_name='ooi')
-    ofer_ooi.columns = ['N°','periodo','nodo_i','Generador','precio_ooi1','magnitud_ooi1','precio_ooi2','magnitud_ooi2','precio_ooi3','magnitud_ooi3','precio_ooi4','magnitud_ooi4','precio_ooi5','magnitud_ooi5']
+    ofer_ooi.columns = ['N°','Fecha','periodo','nodo_i','Agente','precio_ooi1','magnitud_ooi1','precio_ooi2','magnitud_ooi2','precio_ooi3','magnitud_ooi3','precio_ooi4','magnitud_ooi4','precio_ooi5','magnitud_ooi5']
     
     return ofer_ooi
 
@@ -73,7 +73,7 @@ def readofertas_oors(predespacho_file):
     """
 
     ofer_oor = read_excel(predespacho_file,sheet_name='oor')
-    ofer_oor.columns = ['N°','periodo','nodo_oor','generador','precio_oor1','magnitud_oor1','precio_oor2','magnitud_oor2','precio_oor3','magnitud_oor3','precio_oor4','magnitud_oor4','precio_oor5','magnitud_oor5']
+    ofer_oor.columns = ['N°','Fecha','periodo','nodo_oor','Agente','precio_oor1','magnitud_oor1','precio_oor2','magnitud_oor2','precio_oor3','magnitud_oor3','precio_oor4','magnitud_oor4','precio_oor5','magnitud_oor5']
 
     return ofer_oor
 
@@ -120,7 +120,7 @@ def readofertas_cfs(predespacho_file):
     """
 
     ofer_cf = read_excel(predespacho_file,sheet_name='cf')
-    ofer_cf.columns = ['N°','periodo','nodo_cfi','generador','nodo_cfr','energía_dec','potencia_req','precio_cf1','magnitu_cf1','precio_cf2','magnitu_cf2','precio_cf3','magnitu_cf3','precio_cf4','magnitu_cf4','precio_cf5','magnitu_cf5']
+    ofer_cf.columns = ['N°','Fecha','periodo','nodo_cfi','agente_cfi','nodo_cfr','agente_cfr','energía_dec','potencia_req','precio_cf1','magnitu_cf1','precio_cf2','magnitu_cf2','precio_cf3','magnitu_cf3','precio_cf4','magnitu_cf4','precio_cf5','magnitu_cf5']
     
     return ofer_cf
 
@@ -208,7 +208,7 @@ def readofertas_cnfffs(predespacho_file):
     """
 
     ofer_cnfffi = read_excel(predespacho_file,sheet_name='cnfff')
-    ofer_cnfffi.columns = ['N°','periodo','nodo_cnfffi','generador','nodo_cnfffr','energía_dec','precio_i1','magnitud_i1','precio_i2','magnitud_i2','precio_i3','magnitud_i3','precio_i4','magnitud_i4','precio_i5','magnitud_i5','precio_r1','magnitud_r1','precio_r2','magnitud_r2','precio_r3','magnitud_r3','precio_r4','magnitud_r4','precio_r5','magnitud_r5','k','precio_cvt1','magnitud_cvt1','precio_cvt2','magnitud_cvt2','precio_cvt3','magnitud_cvt3','precio_cvt4','magnitud_cvt4','precio_cvt5','magnitud_cvt5']
+    ofer_cnfffi.columns = ['N°','Fecha','periodo','nodo_cnfffi','agente_cnfffi','nodo_cnfffr','agente_cnfffr','energía_dec','precio_i1','magnitud_i1','precio_i2','magnitud_i2','precio_i3','magnitud_i3','precio_i4','magnitud_i4','precio_i5','magnitud_i5','precio_r1','magnitud_r1','precio_r2','magnitud_r2','precio_r3','magnitud_r3','precio_r4','magnitud_r4','precio_r5','magnitud_r5','k','precio_cvt1','magnitud_cvt1','precio_cvt2','magnitud_cvt2','precio_cvt3','magnitud_cvt3','precio_cvt4','magnitud_cvt4','precio_cvt5','magnitud_cvt5']
     
     return ofer_cnfffi
 

+ 1748 - 0
red/nodos_pais.csv

@@ -0,0 +1,1748 @@
+ID_NODO,ID_AREA
+22301,El Salvador
+54110,Costa Rica
+54130,Costa Rica
+54132,Costa Rica
+54154,Costa Rica
+54170,Costa Rica
+54171,Costa Rica
+54172,Costa Rica
+54250,Costa Rica
+54270,Costa Rica
+54271,Costa Rica
+54500,Costa Rica
+54520,Costa Rica
+54521,Costa Rica
+56000,Costa Rica
+56008,Costa Rica
+56030,Costa Rica
+56031,Costa Rica
+56050,Costa Rica
+56058,Costa Rica
+56080,Costa Rica
+56081,Costa Rica
+56100,Costa Rica
+56108,Costa Rica
+56110,Costa Rica
+56130,Costa Rica
+56131,Costa Rica
+58004,Costa Rica
+58008,Costa Rica
+58020,Costa Rica
+58021,Costa Rica
+58022,Costa Rica
+58030,Costa Rica
+58054,Costa Rica
+58058,Costa Rica
+58081,Costa Rica
+58104,Costa Rica
+58108,Costa Rica
+58120,Costa Rica
+58121,Costa Rica
+58122,Costa Rica
+58130,Costa Rica
+58154,Costa Rica
+58200,Costa Rica
+58204,Costa Rica
+58208,Costa Rica
+58213,Costa Rica
+58230,Costa Rica
+58231,Costa Rica
+58233,Costa Rica
+58234,Costa Rica
+58235,Costa Rica
+58254,Costa Rica
+58258,Costa Rica
+58280,Costa Rica
+58281,Costa Rica
+58300,Costa Rica
+58304,Costa Rica
+58308,Costa Rica
+58312,Costa Rica
+58320,Costa Rica
+58321,Costa Rica
+58322,Costa Rica
+58323,Costa Rica
+58324,Costa Rica
+58325,Costa Rica
+58326,Costa Rica
+58330,Costa Rica
+58331,Costa Rica
+58334,Costa Rica
+58335,Costa Rica
+58336,Costa Rica
+58350,Costa Rica
+58358,Costa Rica
+58380,Costa Rica
+3190,Honduras
+4402,Nicaragua
+4403,Nicaragua
+4404,Nicaragua
+4405,Nicaragua
+4406,Nicaragua
+4407,Nicaragua
+4408,Nicaragua
+4410,Nicaragua
+4411,Nicaragua
+4412,Nicaragua
+4415,Nicaragua
+4416,Nicaragua
+4600,Nicaragua
+4601,Nicaragua
+4602,Nicaragua
+4604,Nicaragua
+4605,Nicaragua
+4606,Nicaragua
+4608,Nicaragua
+4610,Nicaragua
+4611,Nicaragua
+4612,Nicaragua
+4613,Nicaragua
+4614,Nicaragua
+4615,Nicaragua
+4616,Nicaragua
+4617,Nicaragua
+4619,Nicaragua
+4620,Nicaragua
+4622,Nicaragua
+4623,Nicaragua
+4624,Nicaragua
+4625,Nicaragua
+4626,Nicaragua
+22361,El Salvador
+22371,El Salvador
+22372,El Salvador
+22421,El Salvador
+22451,El Salvador
+23131,El Salvador
+23441,El Salvador
+24111,El Salvador
+24112,El Salvador
+24131,El Salvador
+24161,El Salvador
+24171,El Salvador
+24181,El Salvador
+24301,El Salvador
+24321,El Salvador
+24341,El Salvador
+24351,El Salvador
+24381,El Salvador
+24391,El Salvador
+24401,El Salvador
+24411,El Salvador
+24412,El Salvador
+24441,El Salvador
+24461,El Salvador
+24471,El Salvador
+24481,El Salvador
+24491,El Salvador
+27101,El Salvador
+27111,El Salvador
+27131,El Salvador
+27133,El Salvador
+27161,El Salvador
+27171,El Salvador
+27181,El Salvador
+27211,El Salvador
+27301,El Salvador
+27321,El Salvador
+27341,El Salvador
+27351,El Salvador
+27361,El Salvador
+27371,El Salvador
+27381,El Salvador
+27391,El Salvador
+27401,El Salvador
+27411,El Salvador
+27421,El Salvador
+27431,El Salvador
+27441,El Salvador
+27451,El Salvador
+27461,El Salvador
+27471,El Salvador
+27481,El Salvador
+27491,El Salvador
+27511,El Salvador
+28161,El Salvador
+28181,El Salvador
+28371,El Salvador
+29161,El Salvador
+29162,El Salvador
+29181,El Salvador
+29182,El Salvador
+50000,Costa Rica
+50008,Costa Rica
+50030,Costa Rica
+50031,Costa Rica
+50050,Costa Rica
+50054,Costa Rica
+50058,Costa Rica
+50080,Costa Rica
+50081,Costa Rica
+50082,Costa Rica
+50083,Costa Rica
+50100,Costa Rica
+50103,Costa Rica
+50108,Costa Rica
+50120,Costa Rica
+50121,Costa Rica
+50122,Costa Rica
+50123,Costa Rica
+50130,Costa Rica
+50200,Costa Rica
+50208,Costa Rica
+50213,Costa Rica
+50214,Costa Rica
+50220,Costa Rica
+50221,Costa Rica
+50222,Costa Rica
+50230,Costa Rica
+50231,Costa Rica
+50232,Costa Rica
+50233,Costa Rica
+50234,Costa Rica
+50250,Costa Rica
+50253,Costa Rica
+50258,Costa Rica
+50260,Costa Rica
+50262,Costa Rica
+50270,Costa Rica
+50271,Costa Rica
+50272,Costa Rica
+50273,Costa Rica
+50280,Costa Rica
+50281,Costa Rica
+50282,Costa Rica
+50300,Costa Rica
+50308,Costa Rica
+50330,Costa Rica
+50350,Costa Rica
+50354,Costa Rica
+50358,Costa Rica
+50370,Costa Rica
+50371,Costa Rica
+50380,Costa Rica
+50382,Costa Rica
+50384,Costa Rica
+50404,Costa Rica
+50408,Costa Rica
+50410,Costa Rica
+50412,Costa Rica
+50430,Costa Rica
+50431,Costa Rica
+50454,Costa Rica
+50498,Costa Rica
+50499,Costa Rica
+50504,Costa Rica
+50512,Costa Rica
+50514,Costa Rica
+50530,Costa Rica
+50531,Costa Rica
+50532,Costa Rica
+50554,Costa Rica
+50558,Costa Rica
+50562,Costa Rica
+50580,Costa Rica
+50581,Costa Rica
+50604,Costa Rica
+50612,Costa Rica
+50614,Costa Rica
+50620,Costa Rica
+50621,Costa Rica
+50650,Costa Rica
+50658,Costa Rica
+50662,Costa Rica
+50664,Costa Rica
+50680,Costa Rica
+50681,Costa Rica
+50682,Costa Rica
+50700,Costa Rica
+50708,Costa Rica
+50710,Costa Rica
+50712,Costa Rica
+50720,Costa Rica
+50721,Costa Rica
+50722,Costa Rica
+50730,Costa Rica
+50731,Costa Rica
+50732,Costa Rica
+50750,Costa Rica
+50800,Costa Rica
+50808,Costa Rica
+50812,Costa Rica
+50820,Costa Rica
+50830,Costa Rica
+50831,Costa Rica
+50900,Costa Rica
+50908,Costa Rica
+50910,Costa Rica
+50920,Costa Rica
+50921,Costa Rica
+50922,Costa Rica
+50923,Costa Rica
+50930,Costa Rica
+50931,Costa Rica
+50950,Costa Rica
+50962,Costa Rica
+50970,Costa Rica
+50971,Costa Rica
+50980,Costa Rica
+51150,Costa Rica
+51152,Costa Rica
+51158,Costa Rica
+51180,Costa Rica
+51200,Costa Rica
+51208,Costa Rica
+51210,Costa Rica
+51230,Costa Rica
+51231,Costa Rica
+51250,Costa Rica
+51262,Costa Rica
+51264,Costa Rica
+51280,Costa Rica
+51281,Costa Rica
+53000,Costa Rica
+53004,Costa Rica
+53007,Costa Rica
+53008,Costa Rica
+53010,Costa Rica
+53022,Costa Rica
+53030,Costa Rica
+53031,Costa Rica
+53032,Costa Rica
+53033,Costa Rica
+53034,Costa Rica
+53036,Costa Rica
+53050,Costa Rica
+53058,Costa Rica
+53060,Costa Rica
+53080,Costa Rica
+53081,Costa Rica
+53100,Costa Rica
+53108,Costa Rica
+53110,Costa Rica
+53112,Costa Rica
+53130,Costa Rica
+53131,Costa Rica
+53132,Costa Rica
+53134,Costa Rica
+53150,Costa Rica
+53154,Costa Rica
+53158,Costa Rica
+53160,Costa Rica
+53180,Costa Rica
+53181,Costa Rica
+53182,Costa Rica
+53183,Costa Rica
+53184,Costa Rica
+53200,Costa Rica
+53204,Costa Rica
+53208,Costa Rica
+53210,Costa Rica
+53220,Costa Rica
+53221,Costa Rica
+53222,Costa Rica
+53230,Costa Rica
+53231,Costa Rica
+53254,Costa Rica
+53258,Costa Rica
+53280,Costa Rica
+53281,Costa Rica
+53304,Costa Rica
+53308,Costa Rica
+53310,Costa Rica
+53330,Costa Rica
+53331,Costa Rica
+53332,Costa Rica
+53354,Costa Rica
+53358,Costa Rica
+53360,Costa Rica
+53380,Costa Rica
+53381,Costa Rica
+53404,Costa Rica
+53408,Costa Rica
+53410,Costa Rica
+53430,Costa Rica
+53431,Costa Rica
+53454,Costa Rica
+53458,Costa Rica
+53460,Costa Rica
+53480,Costa Rica
+53481,Costa Rica
+53504,Costa Rica
+53508,Costa Rica
+53530,Costa Rica
+53554,Costa Rica
+53558,Costa Rica
+53580,Costa Rica
+53581,Costa Rica
+53604,Costa Rica
+53608,Costa Rica
+53609,Costa Rica
+53630,Costa Rica
+53631,Costa Rica
+53632,Costa Rica
+53633,Costa Rica
+53654,Costa Rica
+53658,Costa Rica
+53660,Costa Rica
+53670,Costa Rica
+53671,Costa Rica
+53680,Costa Rica
+53681,Costa Rica
+53682,Costa Rica
+53683,Costa Rica
+53704,Costa Rica
+53708,Costa Rica
+53710,Costa Rica
+53712,Costa Rica
+53714,Costa Rica
+53730,Costa Rica
+53731,Costa Rica
+53732,Costa Rica
+53733,Costa Rica
+53754,Costa Rica
+53756,Costa Rica
+53758,Costa Rica
+53762,Costa Rica
+53764,Costa Rica
+53780,Costa Rica
+53781,Costa Rica
+53782,Costa Rica
+53850,Costa Rica
+53854,Costa Rica
+53858,Costa Rica
+53870,Costa Rica
+53871,Costa Rica
+53872,Costa Rica
+53873,Costa Rica
+53874,Costa Rica
+53880,Costa Rica
+53881,Costa Rica
+53882,Costa Rica
+53900,Costa Rica
+53908,Costa Rica
+53930,Costa Rica
+54000,Costa Rica
+54008,Costa Rica
+54030,Costa Rica
+54031,Costa Rica
+54050,Costa Rica
+54058,Costa Rica
+54060,Costa Rica
+54080,Costa Rica
+54081,Costa Rica
+54104,Costa Rica
+54108,Costa Rica
+12178,Guatemala
+12181,Guatemala
+12183,Guatemala
+12188,Guatemala
+12193,Guatemala
+12194,Guatemala
+12195,Guatemala
+12196,Guatemala
+12197,Guatemala
+12204,Guatemala
+12205,Guatemala
+12210,Guatemala
+12211,Guatemala
+12216,Guatemala
+12218,Guatemala
+12219,Guatemala
+12220,Guatemala
+12221,Guatemala
+12225,Guatemala
+12229,Guatemala
+12230,Guatemala
+12232,Guatemala
+12234,Guatemala
+12235,Guatemala
+12236,Guatemala
+12237,Guatemala
+12238,Guatemala
+12239,Guatemala
+12240,Guatemala
+12241,Guatemala
+12242,Guatemala
+12243,Guatemala
+12244,Guatemala
+12247,Guatemala
+12248,Guatemala
+12250,Guatemala
+12251,Guatemala
+12252,Guatemala
+12253,Guatemala
+12254,Guatemala
+12255,Guatemala
+12256,Guatemala
+12257,Guatemala
+12258,Guatemala
+12269,Guatemala
+12270,Guatemala
+12271,Guatemala
+12280,Guatemala
+12502,Guatemala
+12506,Guatemala
+12510,Guatemala
+12511,Guatemala
+12517,Guatemala
+12526,Guatemala
+12531,Guatemala
+12533,Guatemala
+12538,Guatemala
+12542,Guatemala
+12544,Guatemala
+12550,Guatemala
+12551,Guatemala
+12553,Guatemala
+12557,Guatemala
+12559,Guatemala
+12562,Guatemala
+20301,El Salvador
+21101,El Salvador
+21102,El Salvador
+21103,El Salvador
+21104,El Salvador
+21105,El Salvador
+21111,El Salvador
+21112,El Salvador
+21131,El Salvador
+21132,El Salvador
+21134,El Salvador
+21135,El Salvador
+21136,El Salvador
+21137,El Salvador
+21138,El Salvador
+21139,El Salvador
+21161,El Salvador
+21162,El Salvador
+21163,El Salvador
+21171,El Salvador
+21172,El Salvador
+21181,El Salvador
+21182,El Salvador
+21211,El Salvador
+21212,El Salvador
+21213,El Salvador
+21214,El Salvador
+21301,El Salvador
+21304,El Salvador
+21341,El Salvador
+21371,El Salvador
+21372,El Salvador
+21373,El Salvador
+21374,El Salvador
+21376,El Salvador
+21411,El Salvador
+21412,El Salvador
+21451,El Salvador
+21481,El Salvador
+21482,El Salvador
+21513,El Salvador
+21521,El Salvador
+21531,El Salvador
+6282,Panama
+6290,Panama
+6291,Panama
+6292,Panama
+6293,Panama
+6300,Panama
+6301,Panama
+6302,Panama
+6303,Panama
+6305,Panama
+6306,Panama
+6307,Panama
+6330,Panama
+6331,Panama
+6332,Panama
+6333,Panama
+6334,Panama
+6335,Panama
+6336,Panama
+6340,Panama
+6341,Panama
+6360,Panama
+6361,Panama
+6362,Panama
+6363,Panama
+6364,Panama
+6365,Panama
+6366,Panama
+6367,Panama
+6368,Panama
+6380,Panama
+6381,Panama
+6382,Panama
+6383,Panama
+6384,Panama
+6386,Panama
+6387,Panama
+6388,Panama
+6389,Panama
+6390,Panama
+6391,Panama
+6392,Panama
+6393,Panama
+6394,Panama
+6395,Panama
+6400,Panama
+6500,Panama
+12003,Guatemala
+12005,Guatemala
+12006,Guatemala
+12007,Guatemala
+12017,Guatemala
+12036,Guatemala
+12043,Guatemala
+12044,Guatemala
+12047,Guatemala
+12049,Guatemala
+12050,Guatemala
+12051,Guatemala
+12053,Guatemala
+12061,Guatemala
+12062,Guatemala
+12065,Guatemala
+12080,Guatemala
+12089,Guatemala
+12094,Guatemala
+12108,Guatemala
+12116,Guatemala
+12117,Guatemala
+12127,Guatemala
+12129,Guatemala
+12137,Guatemala
+12142,Guatemala
+12153,Guatemala
+12154,Guatemala
+12157,Guatemala
+12158,Guatemala
+12171,Guatemala
+12177,Guatemala
+3207,Honduras
+3208,Honduras
+3209,Honduras
+3300,Honduras
+3301,Honduras
+3310,Honduras
+3311,Honduras
+3350,Honduras
+3351,Honduras
+3352,Honduras
+3353,Honduras
+3354,Honduras
+3355,Honduras
+3402,Honduras
+3408,Honduras
+3409,Honduras
+3411,Honduras
+3412,Honduras
+3413,Honduras
+3415,Honduras
+3416,Honduras
+3417,Honduras
+3418,Honduras
+3419,Honduras
+3420,Honduras
+3421,Honduras
+3423,Honduras
+3424,Honduras
+3427,Honduras
+3428,Honduras
+3429,Honduras
+3430,Honduras
+3431,Honduras
+3452,Honduras
+3453,Honduras
+3544,Honduras
+3545,Honduras
+3546,Honduras
+3549,Honduras
+4001,Nicaragua
+4002,Nicaragua
+4003,Nicaragua
+4004,Nicaragua
+4005,Nicaragua
+4006,Nicaragua
+4007,Nicaragua
+4009,Nicaragua
+4010,Nicaragua
+4011,Nicaragua
+4012,Nicaragua
+4013,Nicaragua
+4014,Nicaragua
+4015,Nicaragua
+4016,Nicaragua
+4017,Nicaragua
+4018,Nicaragua
+4019,Nicaragua
+4020,Nicaragua
+4021,Nicaragua
+4022,Nicaragua
+4023,Nicaragua
+4024,Nicaragua
+4025,Nicaragua
+4026,Nicaragua
+4027,Nicaragua
+4029,Nicaragua
+4032,Nicaragua
+4033,Nicaragua
+4046,Nicaragua
+4047,Nicaragua
+4048,Nicaragua
+4049,Nicaragua
+4050,Nicaragua
+4051,Nicaragua
+4052,Nicaragua
+4054,Nicaragua
+4055,Nicaragua
+4056,Nicaragua
+4057,Nicaragua
+4058,Nicaragua
+4059,Nicaragua
+4060,Nicaragua
+4061,Nicaragua
+4064,Nicaragua
+4065,Nicaragua
+4066,Nicaragua
+4067,Nicaragua
+4069,Nicaragua
+4070,Nicaragua
+4071,Nicaragua
+4072,Nicaragua
+4073,Nicaragua
+4074,Nicaragua
+4076,Nicaragua
+4078,Nicaragua
+4080,Nicaragua
+4081,Nicaragua
+4082,Nicaragua
+4083,Nicaragua
+4084,Nicaragua
+4085,Nicaragua
+4086,Nicaragua
+4087,Nicaragua
+4100,Nicaragua
+4101,Nicaragua
+4102,Nicaragua
+4103,Nicaragua
+4104,Nicaragua
+4105,Nicaragua
+4106,Nicaragua
+4107,Nicaragua
+4108,Nicaragua
+4109,Nicaragua
+4110,Nicaragua
+4111,Nicaragua
+4112,Nicaragua
+4113,Nicaragua
+4120,Nicaragua
+4121,Nicaragua
+4151,Nicaragua
+4152,Nicaragua
+4153,Nicaragua
+4154,Nicaragua
+4155,Nicaragua
+4156,Nicaragua
+4157,Nicaragua
+4158,Nicaragua
+4159,Nicaragua
+4160,Nicaragua
+4161,Nicaragua
+4162,Nicaragua
+4180,Nicaragua
+4186,Nicaragua
+4200,Nicaragua
+4201,Nicaragua
+4202,Nicaragua
+4203,Nicaragua
+4204,Nicaragua
+4205,Nicaragua
+4206,Nicaragua
+4208,Nicaragua
+4209,Nicaragua
+4210,Nicaragua
+4211,Nicaragua
+4212,Nicaragua
+4213,Nicaragua
+4214,Nicaragua
+4215,Nicaragua
+4217,Nicaragua
+4218,Nicaragua
+4219,Nicaragua
+4221,Nicaragua
+4222,Nicaragua
+4223,Nicaragua
+4224,Nicaragua
+4225,Nicaragua
+4226,Nicaragua
+4227,Nicaragua
+4228,Nicaragua
+4229,Nicaragua
+4230,Nicaragua
+4231,Nicaragua
+4232,Nicaragua
+4233,Nicaragua
+4234,Nicaragua
+4235,Nicaragua
+4236,Nicaragua
+4237,Nicaragua
+4239,Nicaragua
+4240,Nicaragua
+4241,Nicaragua
+4242,Nicaragua
+4243,Nicaragua
+4244,Nicaragua
+4246,Nicaragua
+4300,Nicaragua
+4301,Nicaragua
+4302,Nicaragua
+4303,Nicaragua
+4304,Nicaragua
+4305,Nicaragua
+4306,Nicaragua
+4307,Nicaragua
+4308,Nicaragua
+4309,Nicaragua
+4310,Nicaragua
+4311,Nicaragua
+4312,Nicaragua
+4313,Nicaragua
+4314,Nicaragua
+4315,Nicaragua
+4316,Nicaragua
+4317,Nicaragua
+4318,Nicaragua
+4319,Nicaragua
+4320,Nicaragua
+4321,Nicaragua
+4322,Nicaragua
+4323,Nicaragua
+4324,Nicaragua
+4325,Nicaragua
+4326,Nicaragua
+4327,Nicaragua
+4328,Nicaragua
+4329,Nicaragua
+4330,Nicaragua
+4331,Nicaragua
+4332,Nicaragua
+4333,Nicaragua
+4336,Nicaragua
+4337,Nicaragua
+4338,Nicaragua
+4339,Nicaragua
+4340,Nicaragua
+4341,Nicaragua
+4342,Nicaragua
+4343,Nicaragua
+4345,Nicaragua
+4346,Nicaragua
+4380,Nicaragua
+4400,Nicaragua
+4401,Nicaragua
+1101,Guatemala
+1102,Guatemala
+1103,Guatemala
+1105,Guatemala
+1106,Guatemala
+1107,Guatemala
+1108,Guatemala
+1109,Guatemala
+1110,Guatemala
+1111,Guatemala
+1112,Guatemala
+1113,Guatemala
+1114,Guatemala
+1115,Guatemala
+1116,Guatemala
+1117,Guatemala
+1118,Guatemala
+1119,Guatemala
+1120,Guatemala
+1121,Guatemala
+1122,Guatemala
+1123,Guatemala
+1125,Guatemala
+1126,Guatemala
+1128,Guatemala
+1129,Guatemala
+1131,Guatemala
+1132,Guatemala
+1141,Guatemala
+1151,Guatemala
+1153,Guatemala
+1154,Guatemala
+1155,Guatemala
+1159,Guatemala
+1163,Guatemala
+1204,Guatemala
+1206,Guatemala
+1207,Guatemala
+1215,Guatemala
+1216,Guatemala
+1217,Guatemala
+1218,Guatemala
+1219,Guatemala
+1220,Guatemala
+1221,Guatemala
+1223,Guatemala
+1235,Guatemala
+1240,Guatemala
+1241,Guatemala
+1249,Guatemala
+1250,Guatemala
+1301,Guatemala
+1302,Guatemala
+1303,Guatemala
+1304,Guatemala
+1305,Guatemala
+1306,Guatemala
+1307,Guatemala
+1308,Guatemala
+1309,Guatemala
+1310,Guatemala
+1311,Guatemala
+1312,Guatemala
+1313,Guatemala
+1314,Guatemala
+1315,Guatemala
+1316,Guatemala
+1317,Guatemala
+1318,Guatemala
+1320,Guatemala
+1321,Guatemala
+1322,Guatemala
+1323,Guatemala
+1324,Guatemala
+1325,Guatemala
+1326,Guatemala
+1327,Guatemala
+1328,Guatemala
+1329,Guatemala
+1330,Guatemala
+1331,Guatemala
+1335,Guatemala
+1336,Guatemala
+1337,Guatemala
+1338,Guatemala
+1339,Guatemala
+1350,Guatemala
+1351,Guatemala
+1352,Guatemala
+1353,Guatemala
+1354,Guatemala
+1355,Guatemala
+1356,Guatemala
+1358,Guatemala
+1359,Guatemala
+1360,Guatemala
+1361,Guatemala
+1362,Guatemala
+1363,Guatemala
+1365,Guatemala
+1366,Guatemala
+1367,Guatemala
+1368,Guatemala
+1369,Guatemala
+1370,Guatemala
+1371,Guatemala
+1372,Guatemala
+1373,Guatemala
+1374,Guatemala
+1375,Guatemala
+1376,Guatemala
+1377,Guatemala
+1378,Guatemala
+1379,Guatemala
+1380,Guatemala
+1381,Guatemala
+1382,Guatemala
+1383,Guatemala
+1384,Guatemala
+1385,Guatemala
+1386,Guatemala
+1387,Guatemala
+1388,Guatemala
+1389,Guatemala
+1398,Guatemala
+1399,Guatemala
+1403,Guatemala
+1406,Guatemala
+1407,Guatemala
+1408,Guatemala
+1409,Guatemala
+1410,Guatemala
+1411,Guatemala
+1412,Guatemala
+1413,Guatemala
+1414,Guatemala
+1415,Guatemala
+1416,Guatemala
+1417,Guatemala
+1418,Guatemala
+1419,Guatemala
+1420,Guatemala
+1421,Guatemala
+1422,Guatemala
+1423,Guatemala
+1424,Guatemala
+1425,Guatemala
+1426,Guatemala
+1427,Guatemala
+1428,Guatemala
+1429,Guatemala
+14319,
+1430,Guatemala
+1431,Guatemala
+1432,Guatemala
+1433,Guatemala
+1434,Guatemala
+1435,Guatemala
+1436,Guatemala
+1437,Guatemala
+1438,Guatemala
+1439,Guatemala
+1441,Guatemala
+1442,Guatemala
+1443,Guatemala
+1444,Guatemala
+1445,Guatemala
+1447,Guatemala
+1449,Guatemala
+1450,Guatemala
+1451,Guatemala
+1452,Guatemala
+1453,Guatemala
+1454,Guatemala
+1455,Guatemala
+1456,Guatemala
+1457,Guatemala
+1458,Guatemala
+1459,Guatemala
+1460,Guatemala
+1462,Guatemala
+1463,Guatemala
+1464,Guatemala
+1465,Guatemala
+1466,Guatemala
+1467,Guatemala
+1468,Guatemala
+1470,Guatemala
+1471,Guatemala
+1472,Guatemala
+1473,Guatemala
+1474,Guatemala
+1475,Guatemala
+1476,Guatemala
+1477,Guatemala
+1478,Guatemala
+1479,Guatemala
+1482,Guatemala
+1483,Guatemala
+1484,Guatemala
+1487,Guatemala
+1488,Guatemala
+1489,Guatemala
+1490,Guatemala
+1491,Guatemala
+1492,Guatemala
+1493,Guatemala
+1494,Guatemala
+1495,Guatemala
+1496,Guatemala
+1497,Guatemala
+1498,Guatemala
+1499,Guatemala
+1501,Guatemala
+1502,Guatemala
+1503,Guatemala
+1504,Guatemala
+1505,Guatemala
+1506,Guatemala
+1507,Guatemala
+1509,Guatemala
+1511,Guatemala
+1513,Guatemala
+1516,Guatemala
+1519,Guatemala
+1520,Guatemala
+1521,Guatemala
+1601,Guatemala
+1602,Guatemala
+1603,Guatemala
+1604,Guatemala
+1605,Guatemala
+1606,Guatemala
+1607,Guatemala
+1608,Guatemala
+1609,Guatemala
+1610,Guatemala
+1611,Guatemala
+1612,Guatemala
+1613,Guatemala
+1614,Guatemala
+1615,Guatemala
+1616,Guatemala
+1617,Guatemala
+1618,Guatemala
+1619,Guatemala
+1620,Guatemala
+1621,Guatemala
+1622,Guatemala
+1623,Guatemala
+1624,Guatemala
+1625,Guatemala
+1626,Guatemala
+1627,Guatemala
+1628,Guatemala
+4627,Nicaragua
+1633,Guatemala
+1634,Guatemala
+1635,Guatemala
+1636,Guatemala
+1637,Guatemala
+1638,Guatemala
+1639,Guatemala
+1640,Guatemala
+1641,Guatemala
+1642,Guatemala
+1643,Guatemala
+1644,Guatemala
+1645,Guatemala
+1646,Guatemala
+1647,Guatemala
+1648,Guatemala
+1649,Guatemala
+1651,Guatemala
+1652,Guatemala
+1653,Guatemala
+1654,Guatemala
+1655,Guatemala
+1656,Guatemala
+1657,Guatemala
+1658,Guatemala
+1659,Guatemala
+1660,Guatemala
+1661,Guatemala
+1662,Guatemala
+1663,Guatemala
+1664,Guatemala
+1665,Guatemala
+1666,Guatemala
+1667,Guatemala
+1668,Guatemala
+1669,Guatemala
+1670,Guatemala
+1671,Guatemala
+1672,Guatemala
+1673,Guatemala
+1674,Guatemala
+1676,Guatemala
+1686,Guatemala
+1687,Guatemala
+1688,Guatemala
+1689,Guatemala
+1690,Guatemala
+1691,Guatemala
+1692,Guatemala
+1693,Guatemala
+1694,Guatemala
+1699,Guatemala
+1702,Guatemala
+1710,Guatemala
+1712,Guatemala
+1713,Guatemala
+1714,Guatemala
+1715,Guatemala
+1718,Guatemala
+1719,Guatemala
+1720,Guatemala
+1723,Guatemala
+1725,Guatemala
+1751,Guatemala
+1752,Guatemala
+1753,Guatemala
+1754,Guatemala
+1758,Guatemala
+1762,Guatemala
+1763,Guatemala
+1806,Guatemala
+1810,Guatemala
+1811,Guatemala
+1812,Guatemala
+1813,Guatemala
+1814,Guatemala
+1815,Guatemala
+1816,Guatemala
+1817,Guatemala
+1819,Guatemala
+1820,Guatemala
+1821,Guatemala
+1822,Guatemala
+1823,Guatemala
+1828,Guatemala
+1829,Guatemala
+1830,Guatemala
+1832,Guatemala
+1833,Guatemala
+1834,Guatemala
+1835,Guatemala
+1836,Guatemala
+1837,Guatemala
+1838,Guatemala
+1845,Guatemala
+1901,Guatemala
+1902,Guatemala
+1903,Guatemala
+1904,Guatemala
+1905,Guatemala
+1906,Guatemala
+1907,Guatemala
+1912,Guatemala
+1913,Guatemala
+1914,Guatemala
+1915,Guatemala
+1916,Guatemala
+1917,Guatemala
+1923,Guatemala
+1924,Guatemala
+1958,Guatemala
+1959,Guatemala
+1964,Guatemala
+4701,Nicaragua
+4702,Nicaragua
+4731,Nicaragua
+4750,Nicaragua
+4801,Nicaragua
+4802,Nicaragua
+4803,Nicaragua
+4900,Nicaragua
+4902,Nicaragua
+4904,Nicaragua
+4906,Nicaragua
+4908,Nicaragua
+4910,Nicaragua
+4912,Nicaragua
+4914,Nicaragua
+4916,Nicaragua
+4918,Nicaragua
+4920,Nicaragua
+4921,Nicaragua
+4922,Nicaragua
+4923,Nicaragua
+4924,Nicaragua
+4925,Nicaragua
+4927,Nicaragua
+4928,Nicaragua
+4929,Nicaragua
+4930,Nicaragua
+4931,Nicaragua
+4932,Nicaragua
+4950,Nicaragua
+4951,Nicaragua
+4952,Nicaragua
+4953,Nicaragua
+4955,Nicaragua
+4960,Nicaragua
+6000,Panama
+6001,Panama
+6002,Panama
+6003,Panama
+6004,Panama
+6005,Panama
+6006,Panama
+6007,Panama
+6008,Panama
+6009,Panama
+6010,Panama
+6011,Panama
+6012,Panama
+6013,Panama
+6014,Panama
+6015,Panama
+6016,Panama
+6017,Panama
+6018,Panama
+6019,Panama
+6020,Panama
+6021,Panama
+6022,Panama
+6023,Panama
+6024,Panama
+6025,Panama
+6026,Panama
+6027,Panama
+6028,Panama
+6029,Panama
+6030,Panama
+6031,Panama
+6032,Panama
+6033,Panama
+6034,Panama
+6035,Panama
+6036,Panama
+6037,Panama
+6038,Panama
+6039,Panama
+6040,Panama
+6041,Panama
+6042,Panama
+6043,Panama
+6044,Panama
+6045,Panama
+6046,Panama
+6047,Panama
+6048,Panama
+6055,Panama
+6056,Panama
+6057,Panama
+6058,Panama
+6059,Panama
+6060,Panama
+6061,Panama
+6062,Panama
+6063,Panama
+6064,Panama
+6065,Panama
+6066,Panama
+6067,Panama
+6068,Panama
+6069,Panama
+6070,Panama
+6071,Panama
+6072,Panama
+6073,Panama
+6074,Panama
+6075,Panama
+6076,Panama
+6077,Panama
+6078,Panama
+6079,Panama
+6080,Panama
+6082,Panama
+6083,Panama
+6084,Panama
+6085,Panama
+6086,Panama
+6087,Panama
+6088,Panama
+6090,Panama
+6091,Panama
+6092,Panama
+6094,Panama
+6095,Panama
+6096,Panama
+6097,Panama
+6098,Panama
+6099,Panama
+6100,Panama
+6101,Panama
+6102,Panama
+6103,Panama
+6104,Panama
+6105,Panama
+6106,Panama
+6107,Panama
+6110,Panama
+6113,Panama
+6114,Panama
+6120,
+6123,
+6124,
+6125,
+6126,
+6127,Panama
+6128,Panama
+6129,Panama
+6130,Panama
+6131,
+6132,
+6133,
+6134,
+6135,
+6136,
+6137,
+6138,
+6139,
+6140,
+6142,
+6143,
+6144,
+6145,
+6146,
+6147,
+6148,
+6149,
+6151,
+6152,
+6153,
+6154,
+6155,
+6156,Panama
+6157,Panama
+6170,Panama
+6171,Panama
+6172,Panama
+6173,Panama
+6176,Panama
+6177,Panama
+6178,Panama
+6179,Panama
+6182,Panama
+6183,Panama
+6184,Panama
+6185,Panama
+6186,Panama
+6187,Panama
+6188,Panama
+6189,Panama
+6190,Panama
+6191,Panama
+6192,Panama
+6193,Panama
+6194,Panama
+6195,Panama
+6196,Panama
+6197,Panama
+6198,Panama
+6199,Panama
+6200,Panama
+6210,Panama
+6212,Panama
+6213,Panama
+6214,Panama
+6215,Panama
+6220,Panama
+6221,Panama
+6230,Panama
+6231,Panama
+6232,Panama
+6240,Panama
+6241,Panama
+6260,Panama
+6261,Panama
+6262,Panama
+6263,Panama
+6264,Panama
+6265,Panama
+6266,Panama
+6267,Panama
+6268,Panama
+6270,Panama
+6271,Panama
+6272,Panama
+6280,Panama
+6281,Panama
+1629,Guatemala
+1630,Guatemala
+1631,Guatemala
+1632,Guatemala
+1145,Guatemala
+12282,Guatemala
+12283,Guatemala
+14320,Guatemala
+50383,Costa Rica
+28182,El Salvador
+3165,Honduras
+3166,Honduras
+3167,Honduras
+3168,Honduras
+3169,Honduras
+3170,Honduras
+3171,Honduras
+3172,Honduras
+3173,Honduras
+3174,Honduras
+3175,Honduras
+3176,Honduras
+3177,Honduras
+3178,Honduras
+3179,Honduras
+3180,Honduras
+3181,Honduras
+3182,Honduras
+3183,Honduras
+3184,Honduras
+3203,Honduras
+3204,Honduras
+3205,Honduras
+3206,Honduras
+3077,Honduras
+3078,Honduras
+3079,Honduras
+3080,Honduras
+3081,Honduras
+3082,Honduras
+3083,Honduras
+3084,Honduras
+3085,Honduras
+3086,Honduras
+3087,Honduras
+3088,Honduras
+3089,Honduras
+3090,Honduras
+3091,Honduras
+3092,Honduras
+3093,Honduras
+3094,Honduras
+3095,Honduras
+3096,Honduras
+3097,Honduras
+3098,Honduras
+3099,Honduras
+3100,Honduras
+3101,Honduras
+3102,Honduras
+3103,Honduras
+3104,Honduras
+3105,Honduras
+3106,Honduras
+3107,Honduras
+3108,Honduras
+3109,Honduras
+3110,Honduras
+3111,Honduras
+3112,Honduras
+3113,Honduras
+3114,Honduras
+3115,Honduras
+3116,Honduras
+3117,Honduras
+3118,Honduras
+3119,Honduras
+3120,Honduras
+3121,Honduras
+3122,Honduras
+3123,Honduras
+3124,Honduras
+3125,Honduras
+3126,Honduras
+3127,Honduras
+3128,Honduras
+3129,Honduras
+3130,Honduras
+1965,Guatemala
+1967,Guatemala
+1968,Guatemala
+3001,Honduras
+3002,Honduras
+3003,Honduras
+3004,Honduras
+3005,Honduras
+3006,Honduras
+3007,Honduras
+3008,Honduras
+3009,Honduras
+3010,Honduras
+3011,Honduras
+3012,Honduras
+3013,Honduras
+3014,Honduras
+3015,Honduras
+3016,Honduras
+3017,Honduras
+3018,Honduras
+3019,Honduras
+3020,Honduras
+3021,Honduras
+3022,Honduras
+3023,Honduras
+3024,Honduras
+3025,Honduras
+3026,Honduras
+3027,Honduras
+3028,Honduras
+3029,Honduras
+3030,Honduras
+3031,Honduras
+3032,Honduras
+3033,Honduras
+3034,Honduras
+3035,Honduras
+3036,Honduras
+3037,Honduras
+3038,Honduras
+3039,Honduras
+3040,Honduras
+3041,Honduras
+3042,Honduras
+3043,Honduras
+3044,Honduras
+3045,Honduras
+3046,Honduras
+3047,Honduras
+3048,Honduras
+3049,Honduras
+3050,Honduras
+3051,Honduras
+3052,Honduras
+3053,Honduras
+3054,Honduras
+3055,Honduras
+3056,Honduras
+3057,Honduras
+3058,Honduras
+3059,Honduras
+3060,Honduras
+3061,Honduras
+3062,Honduras
+3063,Honduras
+3064,Honduras
+3065,Honduras
+3066,Honduras
+3067,Honduras
+3068,Honduras
+3069,Honduras
+3070,Honduras
+3071,Honduras
+3073,Honduras
+3074,Honduras
+3075,Honduras
+3076,Honduras
+3131,Honduras
+3132,Honduras
+3133,Honduras
+3134,Honduras
+3135,Honduras
+3136,Honduras
+3137,Honduras
+3138,Honduras
+3139,Honduras
+3141,Honduras
+3142,Honduras
+3143,Honduras
+3144,Honduras
+3145,Honduras
+3146,Honduras
+3148,Honduras
+3149,Honduras
+3150,Honduras
+3151,Honduras
+3152,Honduras
+3153,Honduras
+3154,Honduras
+3155,Honduras
+3156,Honduras
+3157,Honduras
+3158,Honduras
+3159,Honduras
+3160,Honduras
+3161,Honduras
+3162,Honduras
+3163,Honduras
+3164,Honduras
+56051,Costa Rica
+28162,El Salvador
+4000,Nicaragua
+50001,Costa Rica
+1518,Guatemala
+4832,Nicaragua
+50150,Costa Rica
+1124,Guatemala
+4122,Nicaragua
+3211,Honduras
+51300,Costa Rica
+1862,Guatemala
+1863,Guatemala
+51450,Costa Rica
+6550,Panama
+12305,Guatemala
+1166,Guatemala
+1755,Guatemala
+3550,Honduras
+58150,Costa Rica
+4090,Nicaragua
+4358,Nicaragua
+4362,Nicaragua
+4357,Nicaragua
+4420,Nicaragua
+6490,Panama
+6510,Panama
+6511,Panama
+6513,Panama
+6470,Panama
+58500,Costa Rica
+6443,Panama
+1140,Guatemala
+58450,Costa Rica
+3213,Honduras
+12285,Guatemala
+6460,Panama
+1522,Guatemala
+6440,Panama
+6441,Panama
+6442,Panama
+1772,Guatemala
+1771,Guatemala
+1524,Guatemala
+1251,Guatemala
+12292,Guatemala
+12281,Guatemala
+12029,Guatemala
+12144,Guatemala
+12295,Guatemala
+12031,Guatemala
+12030,Guatemala
+1794,Guatemala
+12294,Guatemala
+12136,Guatemala
+6684,Panama
+3592,Honduras
+6520,Panama
+27501,El Salvador
+54750,Costa Rica
+14011,Guatemala
+1846,Guatemala
+1764,Guatemala
+6601,Panama
+1908,Guatemala
+1174,Guatemala
+14002,Guatemala
+6604,Panama
+1842,Guatemala
+1841,Guatemala
+1528,Guatemala
+54200,Costa Rica
+3553,Honduras
+3219,Honduras
+1170,Guatemala
+1795,Guatemala
+4124,Nicaragua
+1732,Guatemala
+1736,Guatemala
+1869,Guatemala
+1730,Guatemala
+1735,Guatemala
+1527,Guatemala
+1526,Guatemala
+1857,Guatemala
+4419,Nicaragua
+4354,Nicaragua
+53550,Costa Rica
+4392,Nicaragua
+4919,Nicaragua
+6243,Panama
+1164,Guatemala
+14005,Guatemala
+1840,Guatemala
+4361,Nicaragua
+6713,Panama
+4386,Nicaragua
+6753,Panama
+6755,Panama
+27281,El Salvador
+1169,Guatemala
+1165,Guatemala
+4800,Nicaragua
+4827,Nicaragua
+4173,Nicaragua
+1133,Guatemala
+4359,Nicaragua
+4350,Nicaragua
+1168,Guatemala
+58600,Costa Rica
+53104,Costa Rica
+4355,Nicaragua

+ 2 - 0
red/orderC.py

@@ -0,0 +1,2 @@
+from pandas import read_csv
+nodec=read_csv("red/nodos_pais.csv")

+ 1 - 1
red/read.py

@@ -45,6 +45,6 @@ def excel2net(file):
         La información debe de estar en una hoja del archivo llamada 'rtr'.
     """
     df = read_excel(file, sheet_name='rtr')
-    df.columns = ['bus_i', 'bus_j', 'ckt', 'x', 'r', 'max', 'min']
+    df.columns = ['periodo','bus_i', 'bus_j', 'ckt', 'x', 'r', 'max', 'min']
     
     return df