makeMCT.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. # -*- coding: utf-8 -*-
  2. # =============================================================================
  3. # Copyright (C) 2018 Mercados Electricos de Centroamérica. All rights reserved
  4. # =============================================================================
  5. """Crea limites de trasnferencia entre área de Control
  6. """
  7. from numpy import argwhere
  8. from pandas import read_excel
  9. # Se definen las líneas que componenn las interconexiones entre las areas de
  10. # control
  11. __GUAHON = ['1710-3190-1']
  12. __GUAELS =['1126-29162-1', '1124-29161-1']
  13. __ELSHON = ['28181-29181-1', '28181-29182-2']
  14. __HONNIC = ['3301-4411-1', '3310-4407-1']
  15. __NICCRI = ['4406-4412-1', '4750-4408-1']
  16. __CRIPAN = ['6500-56050-1', '6400-58350-1', '6000-56050-1']
  17. #__ELSHON_IND_28181_29182=['28181-29181-1', '28181-29182-2']
  18. #__IMP_TOT_ELSIND28181_29182=['28181-29181-1', '28181-29182-2']
  19. #__IMP_TOT_HONIND28181_29182=['28181-29181-1', '28181-29182-2']
  20. __EXP_TOT_GUA_NS = []
  21. __IMP_TOT_SAL = []
  22. __IMP_TOT_HON = []
  23. __IMP_TOT_NIC =[]
  24. __IMP_TOT_CRI =[]
  25. __IMP_TOT_PAN = []
  26. #__CRIPAN_IND_56050_6000=['6500-56050-1', '6400-58350-1', '6000-56050-1']
  27. #__IMP_TOT_CRIIND_56050_6000=['6500-56050-1', '6400-58350-1', '6000-56050-1']
  28. #__IMP_TOT_PANIND_56050_6000=['6500-56050-1', '6400-58350-1', '6000-56050-1']
  29. __INTER = {'GUAHON': __GUAHON,
  30. 'GUAELS':__GUAELS,
  31. 'ELSHON': __ELSHON,
  32. #'ELSHON_IND_28181_29182': __ELSHON_IND_28181_29182,
  33. #'IMP_TOT_ELSIND28181_29182': __IMP_TOT_ELSIND28181_29182,
  34. #'IMP_TOT_HONIND28181_29182':__IMP_TOT_HONIND28181_29182,
  35. #'CRIPAN_IND_56050_6000':__CRIPAN_IND_56050_6000,
  36. #'IMP_TOT_CRIIND_56050_6000':__IMP_TOT_CRIIND_56050_6000,
  37. #'IMP_TOT_PANIND_56050_6000':__IMP_TOT_PANIND_56050_6000,
  38. 'HONNIC': __HONNIC,
  39. 'NICCRI': __NICCRI,
  40. 'CRIPAN': __CRIPAN,
  41. 'EXP_TOT_GUA_NS': __EXP_TOT_GUA_NS,
  42. 'IMP_TOT_SAL': __IMP_TOT_SAL,
  43. 'IMP_TOT_HON': __IMP_TOT_HON,
  44. 'IMP_TOT_NIC': __IMP_TOT_NIC,
  45. 'IMP_TOT_CRI': __IMP_TOT_CRI,
  46. 'IMP_TOT_PAN': __IMP_TOT_PAN}
  47. def linmct(brnames):
  48. """Construye un diccionario con el indice que corresponde al nombre del
  49. circuito o linea que copone la interconexión entre las áreas de control
  50. """
  51. lmct = {}
  52. for item in __INTER:
  53. lmct[item] = []
  54. for i in __INTER[item]:
  55. try:
  56. l = int(argwhere(brnames == i))
  57. lmct[item].append(l)
  58. except Exception:
  59. 0
  60. return lmct
  61. def readmct(file):
  62. """Lee la información de Máximas Capacidades de Trasnferencia del archivo
  63. Excel del caso a resolver.
  64. """
  65. mct = read_excel(file, 'mct', index_col=[1,2,3])
  66. return mct
  67. def set_dir_flujo():
  68. """Consruye un diccionario en el cual se define la dirección del circuito
  69. que compone la interconexión.
  70. En el caso de la interconexión entre Costa Rica y Panamá, las líneas se
  71. encuentran definidas en el sentido Sur-Norte, por lo que su dirección de
  72. flujo corresponde a -1
  73. """
  74. d = {}
  75. for key in __INTER.keys():
  76. if key == 'CRIPAN':
  77. d[key] = -1
  78. elif key == 'IMP_TOT_HON':
  79. d[key] = -1
  80. elif key == 'IMP_TOT_PAN':
  81. d[key] = -1
  82. elif key == 'EXP_TOT_GUA_NS':
  83. d[key] = -1
  84. elif key == 'IMP_TOT_HONIND28181_29182':
  85. d[key] = -1
  86. elif key == 'CRIPAN_IND_56050_6000':
  87. d[key] = -1
  88. elif key == 'IMP_TOT_CRIIND_56050_6000':
  89. d[key] = -1
  90. elif key == 'IMP_TOT_PANIND_56050_6000':
  91. d[key] = -1
  92. else:
  93. d[key] = 1
  94. return d