create1.py 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. from pandas import read_excel, concat
  2. from numpy import zeros
  3. #Ofertas de oportunidad inyeccion
  4. def readofertas_ooi(predespacho_file):
  5. """Lee del archivo Excel la información del Predespacho.
  6. Retorna un DataFrame con las columnas siguientes:
  7. 1. nodo_io : Nodo de inyección de la oferta
  8. 2. Generador : Potencia ofertada
  9. 3. Precio bloque 1: Oferta en dólares por la compra de DF
  10. 4. Magnitud bloque 1: Precio del MWh ofertado
  11. """
  12. ofer_ooi = read_excel(predespacho_file,sheet_name='ooi')
  13. ofer_ooi.columns = ['nodo_i','Generador','precio_ooi','magnitud_ooi']
  14. return ofer_ooi
  15. def readofertas_oois(predespacho_file):
  16. """Lee del archivo Excel la información del Predespacho.
  17. Retorna un DataFrame con las columnas siguientes:
  18. 1. nodo_io : Nodo de inyección de la oferta
  19. 2. Generador : Potencia ofertada
  20. 3. Precio bloque 1: Oferta en dólares por la compra de DF
  21. 4. Magnitud bloque 1: Precio del MWh ofertado
  22. """
  23. ofer_ooi = read_excel(predespacho_file,sheet_name='ooi')
  24. 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']
  25. return ofer_ooi
  26. #Ofertas de oportunidad retiro
  27. def readofertas_oor(predespacho_file):
  28. """Lee del archivo Excel la información del Predespacho.
  29. Retorna un DataFrame con las columnas siguientes:
  30. 1. nodo_r : Nodo de retiro de la oferta
  31. 2. Generador : Potencia ofertada
  32. 3. Precio bloque 1: Oferta en dólares por la compra de DF
  33. 4. Magnitud bloque 1: Precio del MWh ofertado
  34. """
  35. ofer_oor = read_excel(predespacho_file,sheet_name='oor')
  36. ofer_oor.columns = ['nodo_oor','generador', 'precio_oor','magnitud_oor']
  37. return ofer_oor
  38. def readofertas_oors(predespacho_file):
  39. """Lee del archivo Excel la información del Predespacho.
  40. Retorna un DataFrame con las columnas siguientes:
  41. 1. nodo_io : Nodo de inyección de la oferta
  42. 2. Generador : Potencia ofertada
  43. 3. Precio bloque 1: Oferta en dólares por la compra de DF
  44. 4. Magnitud bloque 1: Precio del MWh ofertado
  45. 5. Precio bloque 2: Oferta en dólares por la compra de DF
  46. 6. Magnitud bloque 2: Precio del MWh ofertado
  47. 7. Precio bloque 3: Oferta en dólares por la compra de DF
  48. 8. Magnitud bloque 3: Precio del MWh ofertado
  49. 9. Precio bloque 4: Oferta en dólares por la compra de DF
  50. 10. Magnitud bloque 4: Precio del MWh ofertado
  51. 11. Precio bloque 5: Oferta en dólares por la compra de DF
  52. 12. Magnitud bloque 5: Precio del MWh ofertado
  53. """
  54. ofer_oor = read_excel(predespacho_file,sheet_name='oor')
  55. 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']
  56. return ofer_oor
  57. #Ofertas de contrato firme
  58. def readofertas_cf(predespacho_file):
  59. """Lee del archivo Excel la información del Predespacho.
  60. Retorna un DataFrame con las columnas siguientes:
  61. 1. nodo_i : Nodo de inyección de la oferta
  62. 2. Generador : Potencia ofertada
  63. 3.Nodo_r: Nodo de retiro
  64. 4. Energía Declarada: Ofertas en dólares de CF
  65. 5. Potencia requerida: Oferta en dólares por la compra de DF
  66. 6. Precio bloque 1: Precio del MWh ofertado
  67. 7. Magnitud bloque 1 : Cantidad de MW a flexibilizar
  68. """
  69. ofer_cf = read_excel(predespacho_file,sheet_name='cf')
  70. ofer_cf.columns = ['nodo_cfi','generador','nodo_cfr','energía_dec','potencia_req','precio_cf','magnitu_cf']
  71. return ofer_cf
  72. def readofertas_cfs(predespacho_file):
  73. """Lee del archivo Excel la información del Predespacho.
  74. Retorna un DataFrame con las columnas siguientes:
  75. 1. nodo_i : Nodo de inyección de la oferta
  76. 2. Generador : Potencia ofertada
  77. 3.Nodo_r: Nodo de retiro
  78. 4. Energía Declarada: Ofertas en dólares de CF
  79. 5. Potencia requerida: Oferta en dólares por la compra de DF
  80. 6. Precio bloque 1: Precio del MWh ofertado
  81. 7. Magnitud bloque 1 : Cantidad de MW a flexibilizar
  82. 8. Precio bloque 2: Precio del MWh ofertado
  83. 9. Magnitud bloque 2 : Cantidad de MW a flexibilizar
  84. 10. Precio bloque 3: Precio del MWh ofertado
  85. 11. Magnitud bloque 3: Cantidad de MW a flexibilizar
  86. 12. Precio bloque 4: Precio del MWh ofertado
  87. 13. Magnitud bloque 4: Cantidad de MW a flexibilizar
  88. 14. Precio bloque 5: Precio del MWh ofertado
  89. 15. Magnitud bloque 5: Cantidad de MW a flexibilizar
  90. """
  91. ofer_cf = read_excel(predespacho_file,sheet_name='cf')
  92. 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']
  93. return ofer_cf
  94. def read_D_G(predespacho_file):
  95. """Lee del archivo Excel la información del Predespacho.
  96. Retorna un DataFrame con la demanda y generacion en el nodo:
  97. 1. nodo : Nodo de inyección de la oferta
  98. 2. Generador : Potencia ofertada
  99. 3.Nodo_r: Nodo de retiro
  100. """
  101. nodos_d_m = read_excel(predespacho_file,sheet_name='g_m')
  102. nodos_d_m.columns = ['nodo','periodo','generacion','demanda']
  103. return nodos_d_m
  104. #Ofertas contratos no firmes físicos flexible
  105. def readofertas_cnfff(predespacho_file):
  106. """Lee del archivo Excel la información del Predespacho.
  107. Retorna un DataFrame con las columnas siguientes:
  108. 1. nodo_i : Nodo de inyección de la oferta
  109. 2. Generador : Potencia ofertada
  110. 3.Nodo_r: Nodo de retiro
  111. 4. Energía Declarada: Ofertas en dólares de CF
  112. 5. Potencia requerida: Oferta en dólares por la compra de DF
  113. 6. Precio bloque inyeccion 1: Precio del MWh ofertado
  114. 7. Magnitud bloque inyeccion 1 : Cantidad de MW a flexibilizar
  115. 8. Precio bloque retiro 1: Precio del MWh ofertado
  116. 9. Magnitud bloque retiro 1 : Cantidad de MW a flexibilizar
  117. 10. k(cff) sin hay ofertas de max CVT va le 0 sino 1
  118. 11. Precio bloque max CVT 1: Precio del MWh ofertado
  119. 12. Magnitud bloque MAX CVT 1 : Cantidad de MW a flexibilizar
  120. """
  121. ofer_cnfffi = read_excel(predespacho_file,sheet_name='cnfff')
  122. ofer_cnfffi.columns = ['nodo_cnfffi','generador','nodo_cnfffr','energía_dec','precio_i','magnitud_i','precio_r','magnitud_r','k','precio_cvt','magnitud_cvt']
  123. return ofer_cnfffi
  124. def readofertas_cnfffs(predespacho_file):
  125. """Lee del archivo Excel la información del Predespacho.
  126. Retorna un DataFrame con las columnas siguientes:
  127. 1. nodo_i : Nodo de inyección de la oferta
  128. 2. Generador : Potencia ofertada
  129. 3.Nodo_r: Nodo de retiro
  130. 4. Energía Declarada: Ofertas en dólares de CF
  131. 5. Precio bloque inyeccion 1: Precio del MWh ofertado
  132. 6. Magnitud bloque inyeccion 1 : Cantidad de MW a flexibilizar
  133. 7. Precio bloque inyeccion 2: Precio del MWh ofertado
  134. 8. Magnitud bloque inyeccion 2 : Cantidad de MW a flexibilizar
  135. 9. Precio bloque inyeccion 3: Precio del MWh ofertado
  136. 10. Magnitud bloque inyeccion 3: Cantidad de MW a flexibilizar
  137. 11. Precio bloque inyeccion 4: Precio del MWh ofertado
  138. 12. Magnitud bloque inyeccion 4: Cantidad de MW a flexibilizar
  139. 13. Precio bloque inyeccion 5: Precio del MWh ofertado
  140. 14. Magnitud bloque inyeccion 5: Cantidad de MW a flexibilizar
  141. 15. Precio bloque retiro 1: Precio del MWh ofertado
  142. 16. Magnitud bloque retiro 1 : Cantidad de MW a flexibilizar
  143. 17. Precio bloque retiro 2: Precio del MWh ofertado
  144. 18. Magnitud bloque retiro 2: Cantidad de MW a flexibilizar
  145. 19. Precio bloque retiro 3: Precio del MWh ofertado
  146. 20. Magnitud bloque retiro 3: Cantidad de MW a flexibilizar
  147. 21. Precio bloque retiro 4: Precio del MWh ofertado
  148. 22. Magnitud bloque retiro 4: Cantidad de MW a flexibilizar
  149. 23. Precio bloque retiro 5: Precio del MWh ofertado
  150. 24. Magnitud bloque retiro 5: Cantidad de MW a flexibilizar
  151. 25. k si hay ofertas de max CVT va le 0 sino 1
  152. 26. Precio bloque max CVT 1: Precio del MWh ofertado
  153. 27. Magnitud bloque MAX CVT 1 : Cantidad de MW a flexibilizar
  154. 28. Precio bloque max CVT 2: Precio del MWh ofertado
  155. 29. Magnitud bloque MAX CVT 2: Cantidad de MW a flexibilizar
  156. 30. Precio bloque max CVT 3: Precio del MWh ofertado
  157. 31. Magnitud bloque MAX CVT 3: Cantidad de MW a flexibilizar
  158. 32. Precio bloque max CVT 4: Precio del MWh ofertado
  159. 33. Magnitud bloque MAX CVT 4: Cantidad de MW a flexibilizar
  160. 34. Precio bloque max CVT 5: Precio del MWh ofertado
  161. 35. Magnitud bloque MAX CVT 5: Cantidad de MW a flexibilizar
  162. """
  163. ofer_cnfffi = read_excel(predespacho_file,sheet_name='cnfff')
  164. 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']
  165. return ofer_cnfffi
  166. def MATRIZ_OOI(bus, ex):
  167. """Construye el vector de variables binareas de las Ofertas de Oportunidad de Inyeccion existentes
  168. Vector cuya dimensión es C{nb}, en donde nb es el número de nodos, y cuyas
  169. componentes son todas nulas, salvo la correspondiente al nodo de retiro
  170. del derecho firme donde tiene el valor de 1
  171. La función regresa una matriz de dimensión C{nb x ne}, en donde C{nb} es el
  172. número de nodos y C{ne} es el número de derechos firmes existentes. Cada
  173. columna de la matriz es el vector VRTEe de cada derecho firme e.
  174. """
  175. _vooi = zeros((bus.shape[0], ex.shape[0]))
  176. for i in range(0, ex.shape[0]):
  177. _vooi[bus[bus == ex.iloc[i].nodo_i].index[0],i] = 1
  178. return _vooi
  179. def MATRIZ_OOR(bus, ex):
  180. """Construye el vector de variables binareas de las Ofertas de Oportunidad de Retiro existentes
  181. Vector cuya dimensión es C{nb}, en donde nb es el número de nodos, y cuyas
  182. componentes son todas nulas, salvo la correspondiente al nodo de retiro
  183. del derecho firme donde tiene el valor de 1
  184. La función regresa una matriz de dimensión C{nb x ne}, en donde C{nb} es el
  185. número de nodos y C{ne} es el número de derechos firmes existentes. Cada
  186. columna de la matriz es el vector VRTEe de cada derecho firme e.
  187. """
  188. _voor = zeros((bus.shape[0], ex.shape[0]))
  189. for i in range(0, ex.shape[0]):
  190. _voor[bus[bus == ex.iloc[i].nodo_oor].index[0],i] = 1
  191. return _voor
  192. def MATRIZ_CFR(bus, ex):
  193. """Construye el vector VCD de Potencia Requerida
  194. Vector cuya dimensión es C{nb}, en donde nb es el número de nodos, y cuyas
  195. componentes son todas nulas, salvo la correspondiente al nodo de retiro
  196. del derecho firme donde tiene el valor correspondiene a la inyección
  197. asociada al derecho
  198. La función regresa una matriz de dimensión C{nb x ne}, en donde C{nb} es el
  199. número de nodos y C{ne} es el número de derechos firmes existentes. Cada
  200. columna de la matriz es el vector VRTEe de cada derecho firme e.
  201. """
  202. _vcf_pr = zeros((bus.shape[0], ex.shape[0]))
  203. for i in range(0, ex.shape[0]):
  204. _vcf_pr[bus[bus == ex.iloc[i].nodo_cfr].index[0],i] = 1
  205. return _vcf_pr
  206. def MATRIZ_CFI(bus, ex):
  207. """Construye el vector VCD de Precio del bloque 1 Requerida
  208. Vector cuya dimensión es C{nb}, en donde nb es el número de nodos, y cuyas
  209. componentes son todas nulas, salvo la correspondiente al nodo de retiro
  210. del derecho firme donde tiene el valor correspondiene a la inyección
  211. asociada al derecho
  212. La función regresa una matriz de dimensión C{nb x ne}, en donde C{nb} es el
  213. número de nodos y C{ne} es el número de derechos firmes existentes. Cada
  214. columna de la matriz es el vector VRTEe de cada derecho firme e.
  215. """
  216. _vcf_p = zeros((bus.shape[0], ex.shape[0]))
  217. for i in range(0, ex.shape[0]):
  218. _vcf_p[bus[bus == ex.iloc[i].nodo_cfi].index[0],i] = 1
  219. return _vcf_p
  220. def VCF_M(bus, ex):
  221. """Construye el vector VCD de Magnitud en MW del bloque 1 Requerida
  222. Vector cuya dimensión es C{nb}, en donde nb es el número de nodos, y cuyas
  223. componentes son todas nulas, salvo la correspondiente al nodo de retiro
  224. del derecho firme donde tiene el valor correspondiene a la inyección
  225. asociada al derecho
  226. La función regresa una matriz de dimensión C{nb x ne}, en donde C{nb} es el
  227. número de nodos y C{ne} es el número de derechos firmes existentes. Cada
  228. columna de la matriz es el vector VRTEe de cada derecho firme e.
  229. """
  230. _vcf_m = zeros((bus.shape[0], ex.shape[0]))
  231. for i in range(0, ex.shape[0]):
  232. _vcf_m[bus[bus == ex.iloc[i].nodo_cfi].index[0],i] = 1
  233. return _vcf_m
  234. def MATRIZ_VNFFF_I(bus, ex):
  235. """Construye el vector VNFFF dela Magnitud del bloque declarada en MW del bloque 1 Requerida
  236. Vector cuya dimensión es C{nb}, en donde nb es el número de nodos, y cuyas
  237. componentes son todas nulas, salvo la correspondiente al nodo de retiro
  238. del derecho firme donde tiene el valor correspondiene a la inyección
  239. asociada al derecho
  240. La función regresa una matriz de dimensión C{nb x ne}, en donde C{nb} es el
  241. número de nodos y C{ne} es el número de derechos firmes existentes. Cada
  242. columna de la matriz es el vector VRTEe de cada derecho firme e.
  243. """
  244. _vnfff_m_i = zeros((bus.shape[0], ex.shape[0]))
  245. for i in range(0, ex.shape[0]):
  246. _vnfff_m_i[bus[bus == ex.iloc[i].nodo_cnfffi].index[0],i] = 1
  247. return _vnfff_m_i
  248. def MATRIZ_VNFFF_R(bus, ex):
  249. """Construye el vector VNFFF dela Magnitud del bloque declarada en MW del bloque 1 Requerida
  250. Vector cuya dimensión es C{nb}, en donde nb es el número de nodos, y cuyas
  251. componentes son todas nulas, salvo la correspondiente al nodo de retiro
  252. del derecho firme donde tiene el valor correspondiene a la inyección
  253. asociada al derecho
  254. La función regresa una matriz de dimensión C{nb x ne}, en donde C{nb} es el
  255. número de nodos y C{ne} es el número de derechos firmes existentes. Cada
  256. columna de la matriz es el vector VRTEe de cada derecho firme e.
  257. """
  258. _vnfff_m_r = zeros((bus.shape[0], ex.shape[0]))
  259. for i in range(0, ex.shape[0]):
  260. _vnfff_m_r[bus[bus == ex.iloc[i].nodo_cnfffr].index[0],i] = 1
  261. return _vnfff_m_r