scieee AI-readable full text Open interactive document viewer

Análisis de situaciones futuras de generación y consumo en el mercado diario de producción de energía eléctrica en España

Santa-María Cortés, Gonzalo

Abstract

En este trabajo se aborda el estudio de posibles situaciones futuras del panorama eléctrico de España en el Mercado Diario de la energía eléctrica. Para la recreación de las distintas casuísticas de estudio posibles se ha hecho uso de un software de de programación llamado MATLAB y de un programa de casación de casación del Departamento de Ingeniería Eléctrica de la US llamado GEMS que simula al original de casación EUPHEMIA. Las situaciones futuras estudiadas son los siguientes: • Impacto del autoconusmo instantáneo. • Impacto del autoconusmo con almacenamiento de energía eléctrica. • Impacto del desplazamiento de carga. • Impacto del desplazamiento de carga y autoconsumo instantáneo.

Full text

i Equation Chapter 1 Section 1 Trabajo Fin de Máster Máster Universitario en Ingeniería Industrial Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Autor: Gonzalo Santa-María Cortés Tutor: Ángel Luis Trigo García Dpto. Ingeniería Eléctrica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019 ii iii Trabajo Fin de Máster Máster Universitario en Ingeniería Industrial Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Autor: Gonzalo Santa-María Cortés Tutor: Ángel Luis Trigo García Profesor titular Dpto. Ingeniería Eléctrica Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019 iv Trabajo Fin de Máster: Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Autor: Gonzalo Santa-María Cortés Tutor: Ángel Luis Trigo García El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2019 El Secretario del Tribunal v Resumen En este trabajo se aborda el estudio de posibles situaciones futuras del panorama eléctrico de España en el Mercado Diario de la energía eléctrica. Para la recreación de las distintas casuísticas de estudio posibles se ha hecho uso de un software de de programación llamado MATLAB y de un programa de casación de casación del Departamento de Ingeniería Eléctrica de la US llamado GEMS que simula al original de casación EUPHEMIA. Las situaciones futuras estudiadas son los siguientes: • Impacto del autoconusmo instantáneo. • Impacto del autoconusmo con almacenamiento de energía eléctrica. • Impacto del desplazamiento de carga. • Impacto del desplazamiento de carga y autoconsumo instantáneo. vii Abstract Possible future situations in the short and medium terms ara addressed in this paper. To recreate the different study situations, it has been used of a programming software named MATLAB and a bidding program property of the Electrical Engineering Department (University of Seville) called GEMS that simulates the official bidding program EUPHEMIA. The different future situations studied are the following: • Impact of the instant self-consumption. • Impact of self-consumption with energy storage. • Impact of load shifting. • Impact of load shifting and instant self-consumption. ix Índice Resumen' v! Abstract' vii! Índice'ix! Índice'de'Tablas'xi! Índice'de'Ilustraciones'xiii! 1!Introducción'17! 2!Estado'del'arte'19! 3!Mercado'Ibérico'de'Electricidad' 21! 3.1!Estructura+del+MIBEL+ 22! 3.2!Sujetos+y+Agentes+del+Mercado+Ibérico+ 23! 3.3!Secuencia+de+desarrollo+del+mercado+ 24! 3.4!Mercado+Diario+ 26! 3.4.1! Presentación!de!ofertas!al!Mercado!Diario! 27! 3.4.2! Proceso!de!casación!del!Mercado!Diario.!EUPHEMIA.! 30! 3.4.3! Liquidación! 33! 4!Efecto'del'autoconsumo'y'desplazamiento'de'carga'en'mercado'diario'de'la'electricad'35! 4.1!Autoconsumo+ 35! 4.2!Desplazamiento+de+carga+ 40! 5!Implementación'45! 5.1!Datos+de+partida+ 46! 5.1.1! Caso!Base! 46! 5.1.2! Autoconsumo! 49! 5.2!Metodología+ 50! 5.2.1! Caso!Base! 50! 5.2.2! Escenarios!autoconsumo! 55! 5.2.3! Escenarios!desplazamiento!de!carga! 59! xvi Ilustración 6-55 - Evolución del decremento porcentual del precio media anual para los distintos escenarios ...................................................................................................................................... 95! Ilustración 6-56 - Evolución del decremento porcentual de la energía negociada para los distintos escenarios ...................................................................................................................................... 95! Ilustración 6-57 - Evolución porcentual del decremento del ingreso medio anual para generadoras para distintos escenarios ........................................................................................... 96! Ilustración 6-58 - Ahorro del coste de adquisición de energía para comercializadoras ............... 96! 17 1 INTRODUCCIÓN El cambio climático, la gran evolución de las tecnologías de generación renovable y la reducción de costes, son algunos de los motivos por los cuales se comenzó una reforma de la normativa del sector eléctrico de España en julio 2013 con el Real Decreto-Ley 9/2013, por el que se adoptan medidas urgentes para garantizar la estabilidad financiera de del sistema eléctrico. Un importante hito, debido al impacto en la mayoría de los consumidores domécticos y pequeños consumidores, ha sido la aprobación del RD 216/2014, de 28 marzo, por el que se establece la metodología de cálculo de los Precios Voluntarios para el Pequeño Consumidor (PVPC) de energía eléctrica y su régimen jurídico de contratación, sustituyendo así a la Tarifa de Último Recurso (TUR). Para poder contratar este tipo de tarifa se deben cumplir los siguientes requisitos: • Tener disponible un contador inteligente conectado al sistema de telegestión, con el fin de conocer cuántos kWh se consumen en cada hora del día. En caso de no disponer con contaor inteligente, se aplica el perfil de un consumidor promedio creado por Red Eléctrica de España. • Encontrarse conectado a baja tensión (V<1 kV) y con un máximo de potencia contratada de 10 kW (P≤10 kW). La tarifa regulada PVPC tiene un precio para el kWh de energía consumido diferente para cada hora y para cada día, el cual es calculado en base al precio horarios del mercado diario de la electricidad. De acuerdo al RD 216/2014 el operador del sistema, Red Eléctrica de España (REE), publica a las 20:15h los precios que se aplicarán a las 24 horas del día próximo. Otro tema de relevancia en la regulación del sistema eléctrico fue la regulación de la posibilidad del autoconsumo. Tanto el inicio de la regulación de tal actividad con el Real Decreto 900/2015, de 9 de octubre, por el que se describen las condiciones técnicas y económicas de las diferentes modalidades de autoconsumo mediante una serie de trabas y cargos al pequeño consumidor, como la publicación del Real Decreto-Ley 15/2018, de 5 de octubre, en el que se simplifican los trámites burocráticos y técnicos para las instalaciones de autoconsumo, se reconoce el derecho al autoconsumo compartido, así como el derecho a autoconsumir energía eléctrica sin peajes ni cargos. Introducción 18 En España la potencia instalada registrada en instalaciones de autoconsumo, según IDAE, asciende a 1.196 MW, de los cuales 170MW corresponden a instalaciones de fuentes de energía renovables. Dentro del autoconsumo con energías renovables, destacan las aportaciones correspondientes al aprovechamiento energético del biogás, 127 MW, y a la energía solar fotovoltáica, 28MW. El objetivo de este trabajo es preveer el impacto de las dos políticas energéticas aprobada en los últimos años, que afectan al mercado mayorista español de electricidad, mediante un análisis cualitativo y cuantitavo basándose en en las curvas de casación de de oferta y demanda del mercado ibérico diario de energía eléctrica del año 2017. 19 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España 2 ESTADO DEL ARTE El crecimiento de la concienciación social por el medio ambiente y el calentamiento global dio lugar al Protocolo de Kyoto en 1997, el cual ha sido reestructurando hasta su última versión en el acuerdo de Paris de 2015. Según el estudio de REN 21 (Renewable Energy Policy Network for the 21st Century) el mercado de la energía solar fotovoltaica ha experimentado un crecimiento histórico en el 2015 a nivel global, con un crecimiento de nueva capacidad del 25% con respecto al año anterior, lo que corresponde a 50GW, alcanzándose en 2015 una capacidad instalada de 227 GW. Esto muestra el interés de los gobiernos y empresas en el establecimiento de este tipo de sistemas, por lo que se espera que el mercado y las instalaciones crezca en los próximos años. La normativa del autoconusmo en España hasta el Real Decreto-Ley 15/2018, ha sido, probablemente, de las más restricitivas del mundo. España era el único país que no contemplaba la retribución de la energía vertida a la red. El desarrollo de las instalaciones de autoconsumo en Alemania se enmarca dentro del proyecto de transición energética (Energiewende) que el país está implementando desde el inicio de los años noventa. Este proceso de transformación del modelo energético ha permitido que la generación eléctrica renovable haya pasado a representar el 7% en 2001 al 33% en 2015. El verdadero impulso para el desarrollo edl autoconsumo se produjo con la German Renewable Energy Act (GEE) del año 2000, que garantizaba la retribución fija por la energía vertid a la red y reconocía el derecho de cobro durante 20 años. Para autoconusmo (P<10kW) fue bastante sencillo: los propietarios de la instalación pueden conusmir directamente la electricidad que generan sin pagar cargo alguno, además, vierten la energía que no utilizan y reciben un precio fijo por ella. California es, con diferencia, el estado de EEUU que más está impulsando la fotovoltáica. En 2015, aproximadamente el 7% generada allí tuvo origen fotovoltaico, ya fuera en grandes centrales oen pequeñas instalaciones de generación distribuida. En la próxima imagen se puede observar que, a final de 2015 había casi 5.500 MW agregada en grandes plantas de producción y casi 3.500 MW de potencia agregada en pequeñas plantas funcionando en régimen de autoconsumo. Se puede ver que el despegue del auconsumo comienza antes que el de las grandes plantas. Estado del arte 20 Ilustración 2-1 - Evolución de la Potencia PV en California (Fuente: Gov. of California) Según la Directiva de Eficiencia Energética (EED, por sus siglas en inglés) considera que el efecto de la demanda anima a los consumidores a tomar parte en el consumo e informarse de las faturas eléctricas. Existen simuladores de movimiento de carga orientado a consumidores que con libertad de acción del conusmo, de manera instantánea ve una repercusión en la factura, haciendo que el cliente entienda más del tema. Existen varios estudios sobre el efecto que tienen las tarifas de aceso fluctantes en consumidores residenciales (Faruqui et al., 2007, 2010a, 2010b, 2013; Álvarez Bel et al., 2009; Faruqui and Sergici, 2010; Alcázar-Ortega et al., 2011; Alparslan Zehir and Bagriyanik, 2012; Vine et al., 2013; He et al., 2014; Mehta et al., 2014; Bergaentzlé et al., 2014; Wang et al., 2015; Gils, 2016) También, J.M. Roldán Fernández et al, 2016, concluyó que las tarifas de acceso fluctuantes para pequeños consumidores tiene un doble efecto en el mercado mayorista de la electricidad y en sistema eléctrico. Viendo que una reducción de demanda puede cambiar el precio marginal de la energía eléctrica en el mercado mayorista también supone un efecto en la cantidad de energía casada, el coste de esta y por consecuente, un efecto en el volumen de gases de efecto invernadero producidos por la generación de energía 21 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España 3 MERCADO IBÉRICO DE ELECTRICIDAD La aprobación de la Ley 54/1997, de 27 de noviembre, del Sector Eléctrico, supuso el inicio del proceso de liberalización progresiva del sector mediante la apertura de las redes a terceros, el establecimiento de un mercado organizado de negociación de la energía y la reducción de la intervención pública en la gestión del sistema. Este proceso de liberalización se lleva a cabo en un entorno europeo de liberizacion de diferentes tipos de mercados. El Mercado Ibérico de Electricidad (MIBEL) tiene su origen el 29 de julio de 1998 cuando se inician conversaciones entre las administraciones portuguesa y española en temas de energía, firmándose el “Acuerdo para la Cooperanción en Materia de Energía Eléctrica”. Sin embargo, no sería hasta el 14 de noviembre de 2001 cuando se acordó la creación del Mercado Ibérico de Electricidad mediante la firma del “Protocolo de colaboración entre las administraciones española y portuguesa para la creación del MIBEL”. En ese momento se establecían las fases y mecanismos de implantación que permitirían la integración de los dos mercados, prevista en un inicio para el 1 de enero de 2003. Tras varios documentos de colaboración entre los organismos reguladores de ambos países (ERSE en Portugal y CNE en España) y los operadores del sistema (REN, Redes Energéticas Nacionais y REE, Red Eléctrica de España), se decide implantar gradualmente el mercado. Se define como un mercado bipolar, con un polo español y un polo portugués, creando una estrucutura organizativa en la que el Operador del Mercado Ibérico (OMI) pasó a convertirse en una entidad compuesta por dos sociedades: OMI-Polo Portugués, SGMR (OMIP) y OMI-Polo español, S.A. (OMIE) No obstante, no fue hasta julio de 2007 que comenzó a funcionar el MIBEL como tal. Mercado Ibérico de Electricidad 22 Ilustración 3-1 – Organización institucional del MIBEL. (Fuente: OMIE) 3.1 Estructura del MIBEL El mercado eléctrico ibérico, que no MIBEL, se caracteriza por las dos actividades abiertas a la competencia: producción (mercado mayorista) y comercialización (mercado minorista). Siendo el MIBEL el mercado mayorista. El funcinamiento del mercado mayorista de la energía eléctrica se basa en la existencia de un conjunto de modalidades de contratación de energía que se complementan entre sí. Estas modalidades, descritas a continuación, reflejan el funcionamiento del sector eléctrico. El hecho de tratarse de un mercado que ha de adpatarse a un régimen de equilibrio simultáneo de producción y consumo no consiente el arbitraje temporal que puede darse en otros mercados. El mercado mayorista del MIBEL se comprende actualmente: • Mercado de contratación a plazo, organizado por el OMIP (Operador del Mercado Ibérico Portugués). Es un mercado en el que se establacen contratos de comrpaventa futuros (años, meses, semanas) de producción y compra de energía eléctrica. Este mercado permite realizar una liquidación física, en la que se efectúa la entrega de la energía, o una liquidación financiera, una compensación de los valores monetarios subyacentes a la negociación. Siendo OMIClear la encargada de la compensación y liquidación de los contratos registrados en OMIP. • Mercado de contratación de contado o mercado spot, con un componenete diario (mercado diario) y un componente de ajustes intradiarios (mercados intradiarios). 23 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Mercado en el que se establecen los programas de compra y venta de energía eléctrica para el día siguiente al de la negociación. En un inicio fue la sociedad OMEL (Operador del Mercado Ibérico de Energía, Polo Español, S.A.) la encargada de la gestión de este mercado, pero a partir del 1 de julio de 2011 cuando OMIE asume laa gestión del mercado spot y OMEL se configura como sociedad tenedora parcial de las sociedades OMIE y OMIP. • Mercado de servicios que realiza el ajuste de equilibrio de la producción y de consumo, con el fin de adecuar los programas de producción a los requisitos de calidad, fiabilidad y seguridad del sistema eléctrico, siendo un mercado que funciona en tiempo real gestionados por los Operadores del Sistema español y portugués, REE y REN respectivamente. • Mercado de contratación bilateral, en el que los agentes efectúan compraventa de energía eléctrica para diferentes horizontes temporales. Es lo que se conoce como mercado OTC (over-the-counter o mercado paralelo no organizado). Estos contratos bilaterales son gestinados y recibidos por OMIClear Ilustración 3-2 - Visión funcional del MIBEL. (Fuente: OMIP) 3.2 Sujetos y Agentes del Mercado Ibérico Los sujetos del mercado son aquellas entidades habilitadas para actuar directamente en el mercado eléctrico, ya sea como compradores, vendedores o ambos al mismo tiempo. Por tanto, se entienden como sujetos del mercado: Mercado Ibérico de Electricidad 24 • Productores de energía eléctrica: Persona física o jurídica cuya función es generar energía eléctrica, así como contruir, operar y mantener centrales de producción. Ya sean productores en régimen ordinario como en régimen especial. Entendiendose por régimen especial aquellos productores que utilizan energía primaria de origen renovable o cogeneración de alta eficiencia y autoproductores con potencia instalada no superior a 50 MW. • Comercializadores: Empresas eléctricas que, accediendo a las redes de transporte y/o distribución, se encargan de vender electricidad a clientes finales mediante tarifas fijadas por ellas mismas. • Comercializadores de último recurso: Aquellas empresas comercializadoras que han sido designadas para proporcionar a los clientes la tarifa de último recurso (TUR), ahora llamada PVPC (Precio de Venta al Pequeño Consumidor). Dichas tarifas son fijadas por el gobierno teniendo en cuenta el coste de producción de la energía eléctrica y destinadas a usuarios con una potencia contratada no superior a 10 kW. • Consumidores directos del mercado: Son consumidores que pueden adquirir la energía eléctrica en cada momento mediante otros procedimientos diferentes al consumidor de tarfa, es decir, acuden directamente al pool eléctrico para su propio consumo. • Representantes: Se consideran como tales aquellos que actúan por cuenta de un sujeto del mercado, ya sea en nombre de dicho sujeto o en nombre propio. En caso de acudir en nombre propio, a efectos del negocio jurídico realizado por el representante imputarán a éste únicamente, sin perjucio de la relación interna con su representado. • Gestores de cargas: Sociedades mercantiles que, siendo consumidores, están legalmente habilitadas para la reventa de energía eléctrica para servicios de recarga energética, así como para la el alamcenamiento de energía eléctrica para una mejor gestión técnica del sistema eléctrico. El término agentes del mercado ser reserva para aquellos sujetos, anteriormente citados, que participen en los mercados diarios e intradiarios. Por tanto, los sujetos del mercado pueden acudir al mismo como agentes del mercado diario o realizar contratos bilaterales. 3.3 Secuencia de desarrollo del mercado La final para la presentación de ofertas del mercado diario son las 10:00h del día D-1, es decir, del día anterior anterior al de suministro; los resultados de la casación, con dichas ofertas se publican a las 11:00h del día D-1. Dicha casación incluye también las posiciones de mercado a 25 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España plazo para las que se ha solicitado la entrega física y los resultados de las subastas de capacidad de interconexión. Tras la incorporción de los contratos bilaterales, alrededor de las 14:00h del día D-1, se obtiene el programa diario bas de funcionamiento (PDBF) para cada uno de los sistemas, español y portugués. Los operadores de sistema, REE y REN, analizan y resuelven las posibles restricciones técnicas derivadas de esta primera casación y se generan sendos programas diarios viables provisionales (PDVP). El programa diario viable definitivo (PDV) se publica antes de las 16:00h del dia anterior tras incorporar al mercado el resultado de la regulación secundaria. Regulación con el objeto de mantener el equilibrio generación-demanda y las desviaciones de frecuencia del sistema, este servicio es retribuido a las unidades generadoras afectadas mediante dos conceptos: disponibilidad (banda de regulación) y utilización (energía). A continuación, se convocan las sesiones de intradiarios y el resultado, una vez libre de potenciales restricciones técnicas, resultan el programa horario final (PHF). Mercado Ibérico de Electricidad 32 Ilustración 3-6 - Welfare (Fuente: Energynews) El objetivo del subproblema de determinación de precios es encontrar, para cada área de oferta, el precio marginal apropiado, garantizando que no se acepten ofertas que no cumplan las condiciones de ingresos mínimos e indivisibilidad, y que los flujos de energía cumplen los requisitos técnicos del sistema. Tras encontrar una solución viable, EUPHEMIA continúa con el subproblema de búsqueda de PUN. Sin emabrgo, si no se encuentra una solución viable, se vuleve al principio y se reanuda el problema de maximización del welfare buscando la próxima mejor solución a la anterior. El objetivo del suproblema de búsqueda de PUN es encontrar precios y volúmenes de PUN válidos para cada hora del día, al mismo tiempo que se cumplen las restricciones de desequilibrio de PUN y se aplica la consecutividad de las ofertas PUN aceptadas. Esto se debe a que en algunos países existen reglas de casación en las que se dice que, si no se aceptan una serie de ofertas a un precio, las ofertas por debajo de ese precio no se aceptaran, aunque entren como parte de la solución viable. Una vez en contrada una solución viable sin introducir ofertas con condiciones complejas en la casación, EUPHEMIA continua con el subproblema de indeterminación de volumen, en caso contrario, volverá al inicio buscando la próxima solución que maximice el bienestar del mercado. En los subproblemas anteriores, el algoritmo ha determinado los precios marginales de cada región de oferta y los precios y volúmnes de PUN para las regiones con ofertas PUN, y una selección de ofertas con condiciones de ingresos mínimos e indivisibilidad. Sin embargo, puede darse que existan varios volumnes de cascación para los que el welfare encontrado es el mismo, por lo que EUPHEMIA presta atención y aplica las órdenes de mérito y máximiza el volumen negociado. 33 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España EUPHEMIA está orientada a proporcionar una primera solución factible lo más rápido posible. No obtsante, después de encontrar la primera solución, EUPHEMIA continúa buscando una mejor solución hasta que se alcanza un criterio de parada, ya sea el tiempo máximo: 10 minutos, o que no haya más ofertas con condiciones de ingresos mínimos o indivisibilidad. Ilustración 3-7 - Diagrama de flujo simplificado de EUPHEMIA (Fuente: PCR) De manera específica, dado que Portugal y España operan como región única para EUPHEMIA hasta que en la solución viable obtenida la capacidad de interconexión entre ambos países se vea cubierta, existe lo que se conoce como Market Splitting o separación de merados. Esto lleva a que los mercados evolucionan de manera desacoplada y en cada país se obtiene un precio marginal del Mercado Diario diferente, correspondiente a las ofertas de su mercado. 3.4.3 Liquidación El Operador de Mercado (OMIE), de acuerdo a sus funciones como gestor, se encarga de realizar la liquidación del programa resultante del proceso de casación, actuando de manera imparcial y garantizando el correcto flujo económico entre compradores y vendedores. En la liquidación se practican, para cada hora del mercado diario, las siguientes anotaciones: derecho de cobro a cada unidad que ha resultado vendedora, calculado cmo el producto de la energía vendida por el precio marginal de su zona, y obligación de pago a cada unidad que ha Mercado Ibérico de Electricidad 34 resultado compradora, calculada como el producto de la energía comprada por el precio marginal de su zona. Debido al desacoplamiento de mercados como consecuencia de cubrir la capacidad de interconexión, y siendo el precio de la zona que exporta es inferior al de la zona importadora, se generan unos importes conocidos como renta de congestión, calculada como como el total de la energía intercambiada por la diferencia de precios y se liquida de la siguiente manera: • En caso de desacoplamiento de mercados entre España y Portugal, la renta de congestión se reparte a partes iguales entre los operadores del sistema de ambos países. • En caso de separación de mercados entre España y Francia, la renta de congestión se reparte a partes iguales entre los operadores del sistema eléctrico español y francés. • En caso de desacoplamiento de mercados entre España y otro país fuera de la UE, la renta de congestión se asigna al operador del sistema español. 35 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España 4 EFECTO DEL AUTOCONSUMO Y DESPLAZAMIENTO DE CARGA EN MERCADO DIARIO DE LA ELECTRICAD En este capitulo se analiza cualitativamente el efecto que tienen el desplazamiento de la carga consumida por pequeños consumidores y el autonsumo en el mercado diario de la electricidad. Debido a la importancia y bien acogida tarifa PVPC en la economía doméstica, a la que se suma el aumento de la eficiencia energética y la posibilidad de programación de uso de los electrodomésticos, añadiendose la velocidad a la que avanzan las tecnologías de generación eléctrica a través de energías renovables, la posibilidad comercial de este tipo de instalaciones y la integración de esta generación distribuida en el sistema eléctrico actual, despierta un gran interés de estudio una posible futura situación del panorama eléctrico español. 4.1 Autoconsumo En virtud de la situación geográfica estratégica que tiene España y como consecuencia del cambio de las politicas energéticas, previamente introducidas, en las que el papel del autoconsumo es de gran importancia, la posibilidad de construir una instlación para el autoconsumo es bastante mayor. De manera más concreta, para el caso del autoconsumo con energía solar fotovoltaica se ha eliminado muchas de los trabas burocráticas y cargos existentes para este tipo de instalaciones. Como bien se sabe, los paneles fotovoltaicos generan energía eléctrica a partir de la radiación solar que les llega por tanto será durante el día cuando este tipo de instalaciones pueda generar electricidad. La curva de generación PV será diferente cada día, pero pueden agruparse en cuatro grupos según la estación del año, primavera, verano, otoño e invierno. En verano el sol sale más temprano y se pone más tarde, por lo que la cantidad de energía generada (kWh) a lo largo del día será mayor que en invierno. Sin embargo, los paneles fotovoltáicos tienen un menor rendimiento trabajando a altas temperaturas, será en invierno donde se produzca un mayor pico de generación en las horas centrales, momento del día en el que la radiación solar es mayor. Efecto del autoconsumo y desplazamiento de carga en mercado diario de la electricad 36 Ilustración 4-1 - Curva tipo generación PV (Datos: PVGIS) En su conjunto, nuestra sociedad demanda más energía en algunos momentos del día, estos momentos son conocidos como horas punta. Durante estas horas, el coste de la producción de energía es mayor dado que es necesario del funcionamiento de las centrales de producción más caras, que a su vez son las que más CO2 emiten. Las horas de menor consumo se les denomina horas valle, éstas se corresponden con las horas nocturnas que concuerdan con la menor actividad en todos los sectores de consumo. La cantidad de energía que se consume en los hogares fluctúa a lo largo del día y de manera diferente según la estación del año. En invierno la demanda máxima se produce a última hora de la tarde en la que da una elevada ocupación de los hogares con uso intensivo de iluminación, calefacción y televisión. En verano, además de la punta de la tarde/noche, se produce otro pico de demanda en las horas centrales del día, como consecuencia de las horas del día con mayor temperatura. 12345678910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Curva!tipo!generación!PV Invierno Verano 37 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Ilustración 4-2 - Curva tipo consumo residencial. (Datos: REE) Al superponer las curvas de generación PV y el perfil de la demanda, se observa que durante el día parte de la demanda o, en hasta en algunos casos, su totalidad está cubierta de manera instantánea con le energía generada por la instalación fotovoltáica. Esta cantidad de energía cubierta por autoconsumo instantáneo implica que cierta energía deja de ser comprada en horas puntuales del día. Ilustración 4-3 - Efecto del autoconsumo (Fuente: Elaboración propia) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Curvas!tipo!demanda!residencial Invierno Verano 12345678910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Efecto!del!autoconsumo Demanda Generación Demanda!Neta Efecto del autoconsumo y desplazamiento de carga en mercado diario de la electricad 38 Desde el punto de vista del mercado diario de la energía eléctrica, esto se traduce comouna medida de ahorro de energía y por consecuente una disminución de la energía ofertada a precio máximo (180.3 €/MWh). Visto de manera gráfica, se trata de un desplazamiento hacia la izquierda de la curva de demanda original, encontrando un nuevo punto de corte con la curva de venta de energía y dando lugar a unos precios marginales horarios y energías casadas menores que en el caso base de partida. Ilustración 4-4 - Efecto del decremento de energía (Fuente: J.M. Roldán Fdez. et al) Es muy común que, para ciertos días, en las horas centrales del día, la energía que se está generando no puede ser consumida de manera instantánea, como puede observarse en la ilustración 4.5. Esta situación implica que el espacio de tiempo de excedencia de energía generada, la energía que se compra es nula, es decir, el consumidor no estaría pagando absolutamente nada en término de energía para las horas indicadas en estos casos. El previamente comentado excedente de energía será inyectada en la red para ser consumida. Al tratarse de situaciones puntuales, el operador del sistema (REE) tiene una serie de mecanismos de ajuste para garantizar la estabilidad técnica del sistema haciendo cumplir la máxima de que pa energía genereda tiene que ser igual a la energía consumida en todo instante. Dado a que se trata de un ajuste del operador del sistema y no es competencia del operador de mercado y, por tanto, no afecta al mercado diario de la energía eléctrica no se simulará tal excedente. 39 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Ilustración 4-5 - Excedencia de generación (Fuente: Elaboración propia) Un tema que siempre va de la mano de la producción de energía con fuente renovable, y sobretodo con el autoconsumo, es la posibilidad de almacenamiento de energía mediante baterías. Este hecho permitiría poder consumir el excedente de generación en horas del día en las cuales la energía es más cara. Como el la investigación y desarrollo de producción de baterías comerciales para hogares está en auge, se planterá una serie de escenarios con esta casuística. De cara al Mercado Diaro de la energía eléctrica, el planteamiento del escenario de generación PV con posibilidad de almacenamiento se traduce como un desplazamiento adicional hacia la izquierda de la curva de la demanda en aquellas horas en las que se consuma la energía almacenada que, teniendo la posibilidad de elegir cuando consumirdicha energía almacenada, se haría en horas punta pues son las horas de mayores precios. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Curva!tipo!Excedencia!generación Demanda Generación Demanda!Neta Efecto del autoconsumo y desplazamiento de carga en mercado diario de la electricad 40 Ilustración 4-6 - Curva tipo de excedencia de generación más almacenamiento 4.2 Desplazamiento de carga Gracias al plan de telemedida y telegestión implantado a nivel nacional a través de las compañías de distribución de energía, se preeve que en 2019 se haya provisto al 100% de los consumidores residenciales de contadores inteligentes, según CNMC. Dando así, la viabilidad de aplicar correctamente la tarifa PVPC a todos los consumidores residenciales sin que se les tenga que aplicar una curva de consumo promedio. En vista de la posibilidad de contratación de una tarifa eléctrica PVPC en la que el precio por la energía consumida es diferente para cada hora de cada día, calculándose en base al precio marginal obtenido el mercado diario de la electricidad, invita a los consumidores con dicha tarifa a reducir la factura eléctrica desplazando, parcial o totalmente, el consumo de electricidad hacia las horas o tramos del día en los que los precios son menores, evitando los precios altos del día. En la siguiente imagen se pueden observar las tarifas de acceso existentes con discriminación horaria, que dan la oportunidad a reducción de costes en caso de desplazar la carga a horas de precios bajos. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Curva!tipo!Excedencia!Generación!+!Almacenamiento Demanda Generación Demanda!Neta Demanda!Neta!Final 41 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Ilustración 4-7 - Tarifas de acceso (Fuente: Endesa) Ilustración 4-8 - Discriminación horaria 2.0DHA y 2.0DHS El desplazamiento de carga consiste en dejar de trasladar cierta cantidad de energía de horas pico, donde el término de energía es mayor, y consumirla en horas valle, donde la energía es más barata. En la ilustración 4.3 se puede observar que para las tarifas PVPC con discriminación horaria (DHA y DHS) existe una gran diferencia de precio de término de energía para las horas valle y horas pico. Aquellos consumidores con tarifa contratada PVPC con discriminación horaria verán una reducción en la factura de la electricidad. Implementación 48 5.1.1.2 Fichero diario de capacidades comerciales e intercambios intracomunitarios e internacionales por forntera Se publica diariamente un fichero con el plan básico de casación en el que se haya la información diaria de los valores por frontera, diferenciando importaciones y exportaciones, con el valor de la capacidad comercial y los valores agregados horarios. Las diferentes fronteras, a nivel de sistema eléctrico, con España son Portugal (2), Francia (3), Andorra (4) y Marruecos (5). El nombre del fichero para cad día es capacidad_inter_pbc_aaaammdd.1 Tabla 5-3 - Descripción de ficheros capacidad_inter_pbc (Fuente: OMIE) 5.1.1.3 Precios marginales del Mercado Diario Fichero con los precios marginales del Mercado Diario para cada una de las horas. El nombre del fichero es marginalpdbc_aaaammdd.1. Tabla 5-4 - Descripción de ficheros marginal_pdbc (Fuente: OMIE) 5.1.1.4 Curvas agregadas de oferta y demanda de los mercados diarios Fichero en el que se encuentran todas las ofertas de compra y venta realizadas para cada día, además se incluye el dato de si el binomio precio-energía ha sido casada (C) o no (O). El nombre del fichero es curva_pbc_aaaammdd.1. 49 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Tabla 5-5 - Descripción fichero curva_pbc (Fuente: OMIE) 5.1.2 Autoconsumo En la página web oficial del operador del sistema se puede encontrar los perfiles finales de consumo tipo según la tarifa de PVPC contratada. En el caso de análsis de escenarios de autoconsumo, se parte de un caso de referencia a partir del cual se pueda realizar una extrapolación para los diferentes escenarios a estudiar. La población española ronda los 46M de habitantes y, según datos del Ministerio de Fomento en 2014, había registrada casi 26M de viviendas. Un estudio del INE (Instituto Nacional de Estadística) indica que aproximadamente el 66,5 % de los españoles viven en viviendas de bloque y el resto en casas unifamiliares. El panorama actual del autoconsumo en España, éste es bastante precario debida a las políticas energéticas previas. Según una publicación de IDAE (Instituto para la Divesificación y Ahorro de la Energía) existe unna potencia instalada de 1196MW para el autoconsumo, de los cuales 170MW corresponden a energía renovables y 28 MW son de solar fotovoltáica. Aporta, que lejos de los millones de autoconsumidores que tiene Alemania, en España existen alrededor de 1500 autoconsumidores únicamente. REE tiene disponibles para descargar, como hemos dichos antes, los datos horarios de los perfiles promedio de consumo. Implementación 50 Ilustración 5-2 - Captura de la web de REE para descargar perfiles de consumo (Fuente: REE) Los ficheros mensuales contienen los datos horarios para cada día del mes de los perfiles promedio de consumo. De la primera a la cuarta columna contiene el año, mes, día y hora respectivamente, la quinta columna indica si es un mes de invierno o verano (información no necesaria para el caso que aplica) y de la sexta a la novena columna contiene el perfil de carga según si el consumidor se acoje a peaje de acceso 2.0A o 2.1A, con peaje de acceso 2.0DHA o 2.1DHA, con peaje de acceso 2.0DHS y 2.1DHS y con peaje de acceso 3.0A o 3.1A Estos ficheros tienen como nombre PERFF_aaaamm.txt Gracias a estos perfiles promedios y a una curva de generación de una instalación fotovoltáica acorde, según equipos comerciales, a ese consumo tipo se puede obtener el ahorro actual en MWh en horas de generación. 5.2 Metodología 5.2.1 Caso Base En primer lugar, se genera el caso base y evaluarlo para ver cómo de óptimo son los resultados obtenidos y cómo de similar es respecto al caso base. Para ello, hay que crear para cada día del año las matrices VENTA, COMPRA y ATC que serán almacenadas en ficheros de texto llamados VENTA_aaaammdd.txt, COMPRA_aaaammdd.txt y ATC_aaaammdd.txt respectivamente. Estos ficheros serán los datos de entrada al programa de casación GEMS. La matriz VENTA tiene tantas filas como ofertas de venta haya habido en el día más una fila adicional correspondiente a una unidad ficticia que modela la interconexión con Francia, Andorra y Marruecos (los datos para crear esta unidad ficticia se encuentran recogidos en el fichero de texto capacidad_inter_pbc_aaaammdd.txt). Dicha matriz VENTA tiene, a su vez, 51 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España 2415 columnas para los días de 24 horas, 2315 columnas para el día de 23 horas (26 de marzo) y 2515 columnas para el día de 25 horas (29 de octubre). Cada fila contiene información sobre una oferta de venta realizada por una unidad al mercado diario. La estructura es la siguiente: • Columna 1: Código del país. Se obtiene esta información del fichero cab_aaaammdd.1. Vamos a establecer como unidades españolas (país=1) aquellas unidades que sean andorranas (país=4) o marroquíes (país=5).  • Columna 2: En lugar de guardar el nombre de la unidad, guardamos el índice de la fila en el que se encuentra el nombre de la unidad en el vector unidad. El vector unidad se obtiene del fichero cab_aaaammdd.1.  • Desde la columna 3 hasta la columna 2402 (día de 24 horas), 2302 (día de 23 horas) o 2502 (día de 25 horas), se almacena el precio, la energía y la información referida a si el bloque es divisible y si es retirable para cada tramo de cada hora. Para cada una de las horas del día se tienen 25 tramos que, a su vez, se dividen en 4 columnas que contienen la información anteriormente citada. Dentro de cada hora, la energía a de ser ascendente en los tramos que se oferta, es decir, el precio de la energía que se oferte en el tramo uno debe ser menor al del tramo dos. Esta información se obtiene del fichero det_aaaammdd.1.  • Columna 2403 (día de 24 horas), 2303 (día de 23 horas) o 2503 (día de 25 horas): Contiene  información sobre la potencia máxima de la unidad. Esta información se extrae del fichero cab_aaaammdd.1. • Columna 2404 (día de 24 horas), 2304 (día de 23 horas) o 2504 (día de 25 horas): Contiene información sobre el término fijo en Euros (€) de la condición de ingresos mínimos. Esta información la contiene el fichero cab_aaaammdd.1.  • Columna 2405 (día de 24 horas), 2305 (día de 23 horas) o 2505 (día de 25 horas): Contiene información sobre el término variable en Euros/MWh (€/MWh) de la condición de ingresos mínimos. Esta información la contiene el fichero cab_aaaammdd.1.  • Columna 2406 (día de 24 horas), 2306 (día de 23 horas) o 2506 (día de 25 horas): Contiene información sobre la máxima rampa de subida de la unidad que es necesario conocer en caso de que exista la condición de gradiente de carga. Esta información la obtenemos del fichero cab_aaaammdd.1.  • Columna 2407 (día de 24 horas), 2307 (día de 23 horas) o 2507 (día de 25 horas): Contiene información sobre la máxima rampa de bajada de la unidad que es necesario Implementación 52 conocer en caso de que exista la condición de gradiente de carga. Esta información la contiene el fichero cab_aaaammdd.1.  • Columna 2408 (día de 24 horas), 2308 (día de 23 horas) ó 2508 (día de 25 horas): Contiene información sobre la máxima rampa de arranque de la unidad que es necesario conocer en caso de que exista la condición de parada programada. Esta información viene dada en el fichero cab_aaaammdd.1.  • Columna 2409 (día de 24 horas), 2309 (día de 23 horas) o 2509 (día de 25 horas): Contiene información sobre la máxima rampa de parada de la unidad que es necesario conocer en caso de que exista la condición de parada programada. Esta información la contiene el fichero cab_aaaammdd.1.  • Las siguientes columnas hasta la columna 2415 (día de 24 horas), 2315 (día de 23 horas) o 2515 (día de 25 horas) contienen información de la fecha en la que la unidad lanza su oferta. La fecha se expresa por el año (columnas 2410, 2310 o 2510), el mes (columnas 2411, 2311 o 2511), el día (columnas 2412, 2312 o 2512), la hora (columnas 2413, 2313 o 2513), el minuto (columnas 2414, 2314 o 2514) y el segundo (columnas 2415, 2315 ó 1515). Esta información la contiene el fichero cab_aaaammdd.1.  La matriz COMPRA tiene tantas filas como unidades de adquisición hayan ofertado en el día más una fila adicional correspondiente a una unidad ficticia que modela la interconexión con, al igual que para el caso de la venta, Francia, Andorra y Marruecos. (Los datos para crear esta unidad ficticia se encuentran recogidos en el fichero de texto capacidad_inter_pbc_aaaammdd.txt). Tiene 1208 columnas para los días de 24 horas, 1158 columnas para el día de 23 horas (26 de marzo) y 1258 columnas para el día de 25 horas (29 de octubre). Cada fila contiene información sobre una oferta de compra casada en el mercado diario. La estructura es la siguiente: • Columna 1: Código del país. Se obtiene esta información del fichero cab_aaaammdd.1. Vamos a establecer como unidades españolas (país=1) aquellas unidades que sean francesas (país=3), andorranas (país=4) o marroquíes (país=5).  • Columna 2: En lugar de guardar el nombre de la unidad, guardamos el índice de la fila en el que se encuentra el nombre de la unidad en el vector unidad. El vector unidad se obtiene del fichero cab_aaaammdd.1.  • Desde la columna 3 hasta la columna 1202 (día de 24 horas), 1152 (día de 23 horas) o 1252 (día de 25 horas), se almacena la información referida al precio y a la energía en 53 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España cada tramo de cada hora. Cada hora tiene 25 tramos y cada tramo se divide en dos columnas. La primera columna contiene el precio y la segunda la energía. De la misma manera que para la venta, pero a la inversa, el precio de las ofertas de compra de cada hora debe ser descendente en los tramos. Esta información, así como la información sobre el tramo y la hora donde se oferta se obtiene del fichero det_aaaammdd.1.  • Desde la columna 1203 (día de 24 horas), 1153 (día de 23 horas) o 1253 (día de 25 horas) hasta la última columna, se almacena la fecha en la que fue lanzada la oferta de compra. Esta fecha se expresa con el año (1203, 1153 o 1253), el mes (1204, 1154 o 1254), el día (1205, 1155 o 1255), la hora (1206, 1156 o 1256), el minuto (1207, 1157 o 1257) y el segundo (1208, 1158 o 1258). Esta información se obtiene del fichero cab_aaaammdd.1.  La matriz ATC contiene la información acerca de la interconexión entre España y Portugal. Esta información se extrae del fichero capacidad_inter_pbc_aaaammdd.txt. La información acerca de la interconexión con Francia, Andorra y Marreucos no se recogen en esta matriz. Por ello se crea en las matrices VENTA y COMPRA una unidad que modele estas interconexiones. Para crear las matrices anteriormente descritas, se utiliza el programa MATLAB. Las funciones utilizadas se encuentran el Anexo A.  • Función import_cab.m extrae la información del fichero cab_aaaammdd.1.  • Funciones import_letrasdet.m e import_numdet.m extraen la información del fichero det_aaaammdd.1.  • Función import_pbc.m extrae la información acerca de la interconexión entre España y Portugal del fichero capacidad_inter_pbc_aaaammdd.txt  • Función import_capacidad.m extrae la información acerca de la interconexión entre España y Francia, Andorra y Marruecos del fichero capacidad_inter_pbc_aaaammdd.txt.  • Funciones CreaVenta17.m, Crea23Venta17.m y Crea25Venta17.m crean las matrices VENTA para los días de 24 horas, 23 horas y 25 horas respectivamente.  • Funciones CreaCompra17.m, Crea23Compra17.m y Crea25Compra17.m crean las matrices COMPRA para los días de 24 horas, 23 horas y 25 horas respectivamente.  • Función CreaATC17.m crea la matriz ATC.  Implementación 54 • Función Anio_17.m crea, para cada día del año, las matrices de VENTA, COMPRA y ATC y las almacena en ficheros de texto. Contiene todas las funciones anteriores. Una vez sea ejecutada la función Anio_2017_JG17.m, se puede ejecutar el algoritmo de casación GEMS. De la ejecución de este algoritmo obtenemos, para cada día del año, los ficheros Resumen_aaaammdd.txt y ResVenta_aaaammdd.txt.  • Resumen_aaaammdd.txt contiene la siguiente información para cada una de las horas del día: precio de casación en España (país 1) y en Portugal (país 2) expresado en €/MWh, energía total de compra, energía total de venta y energía total de exportación expresada en MWh para cada uno de los dos países y bienestar total de la casación, welfare, en €.  • ResVenta_aaaammdd.txt recoge la información de todas las unidades casadas de venta. Cada una de sus filas almacena la siguiente información: unidad que ha sido casada, país al que pertenece, y precio (€/MWh) y energía (MWh) casado por esa unidad en cada hora.  Para evaluar el programa de casación utilizado (GEMS) se compara, para cada día del año, el bienestar de mercado derivado de las soluciones obtenidas, con el bienestar que resulta de las soluciones de EUPHEMIA (datos obtenidos de ficheros de OMIE). Aquella solución que presente mayor bienestar de mercado será la solución más óptima. Las funciones creadas para calcular el bienestar de los resultados de EUPHEMIA y para almacenar aquellos días en los que los resultados obtenidos con GEMS son mejores que los de EUPHEMIA, se encuentran en el Anexo B.  • Función import_curva_2017.m extrae la información de los ficheros curva_pbc_aaaammdd.txt.  • Función Welfare_2017.m calcula, para cada día del año, el bienestar de los resultados de EUPHEMIA y los almacena en un fichero de texto llamado welfareOMIE_2017.txt. La información necesaria para poder realizar esta función se extrae de los ficheros curva_pbc_aaaammdd.txt.  • Función import_resumen_2017.m para extraer la información referida al bienestar del mercado del fichero Resumen_aaaammdd.txt.  • Función Welfare_mayor_2017.m calcula el tanto por ciento de días en que las soluciones obtenidas por el algoritmo de casación utilizado en este proyecto son mejores que las obtenidas por EUPHEMIA y almacena en un fichero de texto tales días.  55 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España De aplicar estas funciones, resulta que el 67,67% de los días del año, el resultado obtenido es mejor que el resultado de EUPHEMIA. Esto pone de manifiesto que el algoritmo de casación utilizado encuentra soluciones óptimas que EUPHEMIA para la mayoría de los días y por tanto el caso base del que se parte en este trabajo es distinto del real, pero válido. Welfare' Nº'Días' Porcentaje' Welfare!Menor! 96! 26.30%! Welfare!Igual! 22! 6.03%! Welfare!Mayor! 247! 67.67%! Tabla 5-6 - Resultados comparativa Welfare 5.2.2 Escenarios autoconsumo En este apartada se explica el proceso de creación de escenarios de autoconsumo. Ilustración 5-3 - Diagrama de flujo de creación de escenarios de autoconsumo Los escenarios que se estudian son según el tanto porciento de autoconsumidores existan en España. Sabiendo el numero de autoconsumidores existentes en 2017, el ahorro horario que implica una instalación fotovoltáica para un hogar con un perfil de consumo promedio dado por REE se podrá calcular la cantida de energía a retirar para cada hora en los diferentes escenarios de estudio. Escenarios de análisis: • Escenario 1: El 1% de la población es autoconsumidora. • Escenario 2: El 2% de la población. • Escenario 3: El 5% de la población tiene instalación de autoconsumo PV. • Escenario 4: El 7% de la población. • Escenario 5: El 10% de la población. • Escenario 6: El 20% de la población está conectada a una instalación de autoconsumo. Ficheros! COMPRA!Caso! base Escenario!i! Autoconsumo Nuevos! ficheros! COMPRA! Escenario!i Prgrama!de! casación! (GEMS) Resultados! Escenario!i Implementación 56 • Escenario 7: EL 30% de la población es autoconsumidora. Puede sonar atrevido decir que algún día el 10% de la población española se encuentre conectado a una instalación de autoconsumo, pero teniendo en cuenta las nuevas políticas energéticas y el énfasis hecho en la oportunidad del autoconsumo puede dar pie al desarrollo de autoconsumo compartido en bloques de edificios, en edificios de oficinas o el desarrollo de cooperativa de autoconsumo. Este tipo de crecimiento justificaría los escenarios de estudio de porcentajes tan altos. En primer lugar, tras haber descargado los perfiles promedio de consumo de la web oficial de REE, se ha obtenido 4 curvas de conusmo diario, una para cada estación de año. Primavera (marzo, abril y mayo), verano (junio, julio y agosto), otoño (septiembre, octubre y noviembre) e invierno (enero, febrero y diciembre). Se ha calculado una media para cada hora de todos los días que componen los meses de la estación pertinente. Ilustración 5-4 - Perfiles promedio estacionales. Las funciones empleadas se encuentran en el anexo C. • Funciones import_perf31.m, import_perf30.m e import_perf28.m obtienen la información de los ficheros PERFF_aaaamm.txt, según si el mes es de 31,30 o 28 días. • Función CreaPerfil_tot.m selecciona la información del fichero PERFF_aaaamm.txt que se requiere y lo ordena. 0 0.1 0.2 0.3 0.4 0.5 0.6 12345678910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 KWh Perfiles!de!consumo!residencial Invierno Primavera Verano Otoño 57 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España • Función CreaPerfil_est.m crea un fichero de texto con la media para cada hora de todos los días que componene los meses de cada estación pertinente. • Función Anio_17_PERF.m contiene todas las funciones anteriores. Recorre el año día a día almacenando en una variable la información ordenada con CreaPerfil_tot.m, la guarda en un un fichero de texto y posteriormente con CreaPerfil_est.m se generan los ficheros de texto con los perfiles promedio de consumo por estación. Teniendo unos perfiles de generación fotovoltáica, de una instalación acorde al tipo de consumo, estacionales se puede calcular el ahorro obtenido en cada hora para un consumidor. Realizando una extrapolación se puede calcular el ahorro horario de cada uno de los escenarios, restárselo a las ofertas de compra a precio instrumental (180.3 €/MWh), confeccionando los nuevos ficheros de compra. Ilustración 5-5 - Perfil estacional de generación PV Las funciones empleadas se encuentran en el anexo C. • Funciónes import_compra.m, import_compra23.m e import_compra25.m obtiene en un matriz el fichero de compra del caso base de los ficheros COMPRA_aaaammdd.txt, según si el día es de 24 horas, 23 horas o 25 horas, respectivamente. 0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 kWh Perfil!generación!PV Invierno Primavera Verano Otoño Implementación 64 En primer lugar, tanto para el caso base como para los escenarios genereados, se almacena en un único fichero anual la información de Resumen_aaaammdd.txt que devuelve el programa de casación. Haciendo uso de los ficheros de compra COMPRA_aaaammdd.txt de entrada al programa de casación GEMS y del precio que se devuelve en los ficheros resumen, se ha calculado el ahorro que supondría el efecto de la reducción del precio para comercializadoras y pequeños consumidores que realizan las ofertas a 180.3 €/MWh. Calculandose como el producto de la nueva demanda a precio máximo por la diferencia de precios marginales. Por último, se hace uso del programa Excel para la representación e interpretación de los resultados obtenidos. Las funciones utilizadas para ello se encuentran en el anexo F. • Función import_resumen.m extrae la información de los ficheros devueltos por el programa de casación Resumen_aaaammdd.txt. • Función EnergiaPrecio2017.m contiene la función anterior y recorre el año día a día alamcenando en un único fichero la información previamente extraida de Resumen_aaaammdd.txt. • Función OfertaInstrumental.m genera un fichero con la cantidad de energía ofertada a 180.3 €/MWh en cada hora del año para cada uno de los escenarios estudiados. 65 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España 6 RESULTADOS En el presente capítulo se muestran los resultados de los ensayos realizados comparándose con el case base de partida y entre ellos. Los resultados de precios y energías que se muestran se corresponden con el mercado español únicamente. 6.1 Autoconsumo En primer lugar, se muestra unas gráficas de cuatro días tipo estacionales, es decir un día de cada estación para ver cómo cómo se ven afectados los precios horarios marginales y energía casada a lo largo del día para cada uno de los escenarios. Ilustración 6-1 - Precio marginal horario en un día tipo de verano 30 35 40 45 50 55 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 €/MWh Evolución!precio!horario!marginal Primavera,!19!de!marzo Precio_Base Precio_1% Precio_2% Precio_5% Precio_7% Precio_10% Precio_20% Precio_30% Resultados 66 Ilustración 6-2 - Precio marginal horario en un día tipo de primavera Ilustración 6-3 - Precio marginal horario en un día tipo de otoño 30.00 35.00 40.00 45.00 50.00 55.00 12345678910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 €/MWh Evolución!precio!horario!marginal Verano,!!15!de!julio Precio_Base Precio_1% Precio_2% Precio_5% Precio_7% Precio_10% Precio_20% Precio_30% 40.00 45.00 50.00 55.00 60.00 65.00 70.00 12345678910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 €/MWh Evolución!precio!horario!marginal Otoño,!13!de!octubre Precio_Base Precio_1% Precio_2% Precio_5% Precio_7% Precio_10% Precio_20% Precio_30% 67 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Ilustración 6-4 - Precio marginal horario en un día tipo de invierno Como puede observarse, para cada una de las estaciones las horas en las que varía el precio es diferente dado que para cada estación el perfil de generación es diferente. Como era de esperar a medida que aumenta el porcentaje del escenario estudiado menor es el precio de casación obtenido. Como era de espera, para aquellas horas en las que las ofertas de compra no han sido modificadas, el desvío respecto al caso base de partida es mínimo y en la mayoría de los casos, nulo. De la misma manera sucede con la energía negociada para cada hora, esta disminurá con el crecimiento del autoconsumo. A continuación, se muestran gráficas para los cuatro días tipo de cada estación. 42.00 47.00 52.00 57.00 62.00 67.00 72.00 77.00 82.00 87.00 12345678910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 €/MWh Evolución!precio!horario!marginal Invierno,!13!de!enero Precio_Base Precio_1% Precio_2% Precio_5% Precio_7% Precio_10% Precio_20% Precio_30% Resultados 68 Ilustración 6-5 – Evolución horaria de la energía negociada en un día tipo de primavera Ilustración 6-6 - Evolución horaria de la energía negociada en un día tipo de verano 15000 16000 17000 18000 19000 20000 21000 22000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 MWh Primavera,!17!de!marzo Energía_Base Energía_1% Energía_2% Energía_5% Energía_7% Energía_10% Energía_20% Energía_30% 17500 18500 19500 20500 21500 22500 23500 24500 25500 26500 12345678910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 MWh Verano,!15!de!julio Energía_Base Energía_1% Energía_2% Energía_5% Energía_7% Energía_10% Energía_20% Energía_30% 69 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Ilustración 6-7 - Evolución horaria de la energía negociada en un día tipo de otoño Ilustración 6-8 - Evolución horaria de la energía negociada en un día tipo de invierno 15500 17500 19500 21500 23500 25500 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 MWh Otoño,!13!de!octubre Energía_Base Energía_1% Energía_2% Energía_5% Energía_7% Energía_10% Energía_20% Energía_30% 22500 23500 24500 25500 26500 27500 28500 29500 30500 31500 12345678910 11 12 13 14 15 16 17 18 19 20 21 22 23 24 MWh Invierno,!13!de!enero Energía_Base Energía_1% Energía_2% Energía_5% Energía_7% Energía_10% Energía_20% Energía_30% Resultados 70 De las gráficas anteriores, de los cuatro días tipo estacionales, se puede observar cómo va disminuyendo tanto el precio marginal como la energía casada a medida que aumenta el porcentaje en los escenarios. Sin embargo, para el caso del precio puede darse la situación que el precio aumente para alguna respecto al escenario anterior. Esto sucede debido a las condiciones complejas de las unidades de generación. No ocurre lo mismo con la energía, dado que por mucho que varíe la curva de casación compleja respecto a la simple, la energía siempre será menor. En las próximas imágenes se muestra la evolución de los precios marginales medios de manera mensual, estacional y anual de diferentes maneras. Ilustración 6-9 - Evolución mensual de los precios para cada uno de los escenarios Ilustración 6-10 - Evolución mensual del decremento de precios marginales 0 10 20 30 40 50 60 70 12345678910 11 12 Precio(€/MWh)! MES Evolución!de!los!precios!(Mensual) -8 -7 -6 -5 -4 -3 -2 -1 1 2 3 4 5 6 7 8 9 10 11 12 Precio(€/MWh)! MES Decremento!de!los!precios!(Mensual) 71 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Ilustración 6-11 - Evolución estacional de los precios marginales Ilustración 6-12 - Evolución estacional del decrementode precios marginales Como se contempla en las gráficas expuestas de evolución de precios marginales medios mensuales y estacionales, es en los meses de verano cuando mayor es la reducción obtenida en el precio. Es lógico esto que sucede puesto que es durante los mese de junio, julio y agosto (meses contemplados como verano en el estudio) cuando mayor generación de electricidad se consigue con la instalación fotovoltaica, dado que las horas de producción son mayores y el porcentaje de días de generación también es mayor puesto que que los días nublados en verano son bastante manores que en el resto de las estaciones. 0 10 20 30 40 50 60 1 2 3 4 Precio!(€/MWh)! ESTACIÓN Evolución!de!los!precios!(Estacional) -8 -7 -6 -5 -4 -3 -2 -1 1 2 3 4 Precio!(€/MWh) ESTACIÓN Evolución!del!decremento!de!los!precios!(Estacional) Resultados 72 A continuación, se muestra las variaciones a nivel de la media anual en valor, en decremento y en porcentaje de decremento del precio medio anual comparándose con el efecto del precio en las horas centrales del día donde se produce generación. Ilustración 6-13 - Evolución del precio medio anual Ilustración 6-14 - Evolución del decremento del precio medio anual 52.38 52.25 51.97 51.42 50.87 50.04 47.83 45.90 12345678 Precio'(€/MWh) EVOLUCIÓN'DEL'PRECIO'MEDIO'ANUAL -0.13 -0.41 -0.96 -1.51 -2.34 -4.55 -6.48 1 2 3 4 5 6 7 PRECIO'(€/MWh) EVOLUCIÓN'DEL'DECREMENTO'DEL'PRECIO' MEDIO'ANUAL 73 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Ilustración 6-15 - Evolución del decremento porcentual del predio medio anual De manera más precisa, si focalizamos en las horas centrales del día en las que se preduce la generación y, por tanto, el efecto del autoconusmo en el precio de casación del mercado diario es real, el porcentaje del decremento de precios en estas horas es mayor lógicamente. Se han tomado como horas centrales aquellas horas en las que hay generación, es decir, desde las 7 AM hasta las 21 PM. Ilustración 6-16 – Evolución del decremento porcentual del precio medio anual en horas de generación -0.25 -0.77 -1.81 -2.84 -4.40 -8.55 -12.19 1 2 3 4 5 6 7 % EVOLUCIÓN'DEL'DECREMENTO'PORCENTUAL' DEL'PRECIO'MEDIO'ANUAL -0.40 -1.23 -2.89 -4.55 -7.04 -13.69 -19.50 1234567 % EVOLUCIÓN'DE'DECREMENTO'PORCENTUAL' DEL'PRECIO'MEDIO'ANUAL'EN'HORAS'DE' GENERACIÓN Resultados 80 muestran ambos casos, escenarios de autoconusmo y casuística de escenarios de autoconsumo con posibilidad de almacenamiento. Ilustración 6-28 - Evolución del decremento porcentual del ingreso medio para la generación Ilustración 6-29 - Evolución del decremento porcentual del ingreso medio para la generación para autoconsumo con almacenamiento Al igual que para el precio y la energía, cuando existe autoconsumo con almacenamiento el ingreso económico que recibe el conjunto de unidades generadoras es menor. -0.50 -1.06 -2.60 -4.06 -6.05 -10.93 -16.36 1 2 3 4 5 6 7 % EVOLUCIÓN'DEL'DECREMENTO'PORCENTUAL'DEL' INGRESO'MEDIO'ANUAL'PARA'LA'GENERACIÓN -0.50 -1.20 -3.10 -4.91 -7.36 -13.32 -19.89 1 2 3 4 5 6 7 % EVOLUCIÓN'DEL'DECREMENTO'PORCENTUAL'DEL' INGRESO'MEDIO'ANUAL'PARA'LA'GENERACIÓN 81 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Al reducirse el precio la energía comprada por las comercializadoras y pequeños consumidores, aquellos que realizan compra a 180.3 €/MWh, verán una reducción del coste en la adquisición de la energía. En la siguiente imagen se muestra la media aritmética anual de dicho ahorro. Ilustración 6-30 - Media aritmética anual del ahorro que obtienen las comercializadoras Y como es lógico en el estudio de autoconsumo con almacenamiento este ahorro es mayor y aumenta la diferencia con el aumento del porcentaje del caso de estudio como se puede observar a continuación. Ilustración 6-31 - Media aritmética anual del ahorra que obtienen las comercializadoras para los diferentes escenariso de autoconsumo con almacenamiento 3094.55 9652.52 22728.94 35776.57 55283.95 106789.03 151171.38 E1% E2% E5% E7% E10% E20% E30% € Ahorro'del'coste'de'comercializadoras/peq.' consumidor'(Media'anual) 3100.73 11520.10 28242.08 44863.82 69587.80 133975.39 188330.89 E1% E2% E5% E7% E10% E20% E30% € Ahorro'del'coste'para'comercializadoras/peq.' consumidor Resultados 82 6.2 Desplazamiento de carga En primera instancia, se representan la evolución tanto e los precios horarios marginales de casación como la energía horaria negociada para un día y contemplar el efecto del desplazamiento de carga sobre un día. Analizando las gráficas se percibe, que al tener la curva de generación menor pendiente en horas pico que en horas valle la influencia del precio es mayor al aumentar la energía en horas valle que en horas pico. Sin embargo, para el caso de la energía sucede totalmente lo contrario, el disminuir energía en horas pico produce un mayor efecto que incluirla en horas valle. Ilustración 6-32 - Evolución del precio horario marginal para los distintos escenarios el día 11/01/2017 50 55 60 65 70 75 80 85 90 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 €/MWh Precios!!horarios!marginales 11!de!enero Precio_Base Precio_1.5% Precio_3% Precio_6% 83 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Ilustración 6-33 - Evolución de la energía horaria negociada para distintos escenarios el día 11/01/2017 En las próximas graficas mostradas se representa las evoluciones del precio marginal, energía negociada e impacto sobre el ingreso económico para las unidades de generación. Ilustración 6-34 - Evolución de precios medios mensuales para distintos escenarios 22600 24600 26600 28600 30600 32600 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 MWh Energía!horaria!casada 11!de!enero! Energía_Base Energía_1.5% Energía_3% Energía_6% 0 10 20 30 40 50 60 70 12345678910 11 12 PRECIO!(€/MWH) MES EVOLUCIÓN'DE'LOS'PRECIOS'(MENSUAL) Resultados 84 Ilustración 6-35 - Diferencias de precios medios mensuales para distintos escenarios En esta última gráfica puede observarse como en la mayoría de los escenarios, la mayoría de los meses el precio aumenta, aunque sea muy poco, en ningún mes en el mayor de los escenarios estudiados el preciomedio mensual aumenta mas de 1€. Para la media del año se tiene que para el escenario estudiado de mayor desplazamiento de carga el precio medio anual no aumenta ni siquiera el 1%. Ilustración 6-36 - Evolución porcentual del precio medio anual 0.02 0.00 0.02 0.04 0.05 0.05 0.05 0.04 0.05 0.03 0.01 -0.01 0.11 0.06 0.09 0.12 0.14 0.15 0.14 0.14 0.14 0.12 0.09 0.05 0.32 0.18 0.25 0.32 0.37 0.39 0.38 0.35 0.37 0.32 0.27 0.18 -0.02 0.03 0.08 0.13 0.18 0.23 0.28 0.33 0.38 12345678910 11 12 PRECIO!(€/MWH)! DIFERENCIA'DE'PRECIOS'(MENSUAL) 0.13 0.35 0.89 1 2 3 % EVOLUCIÓN'DEL'INCREMENTO'PORCENTUAL'DEL' PRECIO'MEDIO'ANUAL 85 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España El jugo de la casuística del estudio de desplazamiento de carga se encuentra en comparar la eevulución en horas punta y horas valle en las que se ha movido la carga. Para este estudio, la carga se ha movido de las horas 19 a 22 hacia las horas 24, 1, 2 y 3, retirando y añadiendo de manera proporcional a las energías consumidas en cada hora. Ilustración 6-37 - Comparación de la evolución de diferencias de precios en horas valle y punta Tal y como se había previsto, el efecto en el precio es mayor en horas valle que en horas pico, resultando en la media anual del precio un incremento de menos de 50 céntimos de euro en el mayor de los casos estudiados. Ilustración 6-38 - Evolución del incremento del precio medio anual -1.39 -2.49 -5.43 1.56 3.17 7.29 -6 -4 -2 0 2 4 6 8 123 Precio'(€/MWh) PUNTA VALLE 0.03 0.11 0.31 1 2 3 PRECIO'(€/MWh) EVOLUCIÓN'DEL'INCREMENTO'DEL'PRECIO' MEDIO'ANUAL Resultados 86 Como se ha dicho previamente, para la energía es lo contrario el efecto en horas pico es mayor que en horas valle. Ilustración 6-39 - Comparación de la evolución de diferencia de energía en punta y valle Observándose que la energía negociada en horas pico y en horas valle, se deduce que el efecto que tiene la energía sobre el precio es muy importante, por lo que se ha decidido ver como evoluciona el precio medio ponderado según la energía negociada de manera mensual y anual. Claculándose el precio medio como 𝑃𝑤 = (∑ 𝑃𝑖 ∗𝐸𝑖 )/∑𝐸𝑖 Ilustración 6-40 - Evolución de la diferencia del precio medio ponderado mensiual para los distintos escenarios -1002.72 -2256.11 -4512.22 222.02 444.03 948.61 -5000 -4000 -3000 -2000 -1000 0 1000 123 Energía'(GWh) PUNTA VALLE -0.30 -0.20 -0.10 0.00 0.10 0.20 0.30 12345678910 11 12 Precio!(€/MWh) Evolución!de!la!diferencia!del!precio!medio!ponderado!mensual E1 E2 E3 87 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Como puede verse para cada mes es diferente sin seguir un patrón. En cuanto al anual la tendencia del precio medio ponderado es disminuir puesto que la reducción del precio medio ponderado en horas pico es mayor que el decremento en horas valle. Ilustración 6-41 - Evolución del decremento del precio medio pondereado anual para los distintos esceanrios Ilustración 6-42 - Evolución del decremento porcentual del precio medio ponderado anual Resultando para el total anual de la energía negociada un decremento en cada uno de los escenarios. -0.03 -0.05 -0.09 E1 E2 E3 Precio'(€/MWh) Evolución'del'decremento'del'precio'medio' ponderado'anual -0.05 -0.09 -0.16 E1 E2 E3 % Evolución'del'decremento'porcentual'del'precio' medio'ponderado'anual Resultados 88 Ilustración 6-43 - Evolución del decremento anual total de energía negociada Ilustración 6-44 - Evulución del decremento porcentual de la energía media anual negociada Para los generadores la cantidad económica que dejan de ingresar no se ve tan reducida como para los casos de autoconcumo y autoconusmo con desplazamiento, llegando a reducirse no más del 1% en el escenario estudiado de mayor pordentaje de desplazamiento de carga. -130.12 -302.01 -593.93 1 2 3 Energía'(GWh) EVOLUCIÓN'DEL'DECREMENTO'DE'LA' ENERGÍA'CASADA'TOTAL'ANUAL -0.48 -1.13 -2.22 1 2 3 % EVOLUCIÓN'DEL'DECREMENTO'PORCENTUAL'DE' LA'ENERGÍA'CASADA'ANUAL 89 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Ilustración 6-45 - Evolución del decremtno porcentual del ingreso económico para la generación. Al verse reducido el precio marginal, al igual que para los escenarios de estudio de de autoconsumo y autoconsumo con almacenamiento, se verá reflejado como un ahorro de adquisición de energía para las comercializadoras. En la siguiente gráfica se muestra la media aritmética anual del ahorro. Ilustración 6-46 - Ahorro del coste de adquisición depara comercializadoras -0.33 -0.69 -0.93 % EVOLUCIÓN'DEL'DECREMENTO'PORCENTUAL'DEL' INGRESO'ANUAL'PARA'LA'GENERACIÓN -6431.81 -28987.62 -135105.51 E1,5% E3% E6% € Ahorro'del'coste'para' comercializadoras/peq.'consumidores Resultados 96 En cuanto al ingreso económico recibido por las unidades generadoras también cambiara la tendencia de reducción con el aumento del porcentaje del desplazamiento de carga. Ilustración 6-57 - Evolución porcentual del decremento del ingreso medio anual para generadoras para distintos escenarios Al igual que para las casuíticas de estudio anteriores se muestra el ahorro que supone para los consumidores que entran en el mercado diario de la electricidad con oferta a precio instrumental, es decir a 180.3 €/MWh. Se muestra la evolución de la media artimética anual. Ilustración 6-58 - Ahorro del coste de adquisición de energía para comercializadoras -1.39 -4.36 -3.25 -5.00 -4.50 -4.00 -3.50 -3.00 -2.50 -2.00 -1.50 -1.00 123 % EVOLUCIÓN'DEL'DECREMENTO'PORCENTUAL' DEL'INGRESO'MEDIO'ANUAL'PARA' GENERACIÓN 5626.78 31589.13 13185.77 E1 E2 E3 € Ahorro'del'coste'para'comercializadoras/peq.' consumidores 97 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España 7 CONCLUSIONES • El precio medio marginal, tanto mensual como estacional y anual, es menor cuanto mayor sea el escenario de autoconsumo instantáneo, y aún mayor si además existe posibilidad de almacenamiento. La tendencia del decremento de los precios medios es prácticamente lineal. • El precio medio marginal, tanto mensual como anual, aumenta levemente con el incremento del escenario de estudio de desplazamiento de carga. • El efecto que produce el desplazamiento de carga sobre el precio en horas valle es aumentar mientras que en horas pico es disminuir, siendo mayor la influecia de variar el precio en horas valle que en horas punta de donde se elimina carga para desplazarla. • La energía media negociada en el mercado diario, tanto mensual como estacional y anual, se ve decrementada con el aumento de las instalaciones de autoconsumo. La tendencia de dismnuir de ésta es prácticamente lineal. Si además se tiene la posibilidad de almacenamiento la energía media negociada será menor y la pendiente con la que disminuye es mayor, en valor absoluto. • La energía media negociada, tanto mensual como anual, disminuyen con el aumento de los escenarios de desplazamiento de carga. • La influencia que tiene la energía negociada en el mercado diario del desplazamiento de carga en horas valle es aumentar mientras que en horas punta es disminuir. El efecto de disminuir en horas punta es mayor que la de aumentar en horas valle. Del mismo modo la tendencia con la que disminuye en horas punta es mayor que con la que aumenta en horas valle. • En cuanto al impacto sobre el ingreso económico de las generadoras, en ambos casos es disminuir, siendo más pronunciada la tendencia en los escenarios de autoconsumo que en los escenarios de desplazamiento de carga. Conclusiones 98 • El impacto que produce la inyección de autoconsumo sobre la energía negociada y el precio marginal del mercado diario de la electricidad es mayor que el aumento del desplazamiento de carga. 99 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España REFERENCIAS 1) Agosti, L., Padilla, A. J., & Requejo, A. (2007). El mercado de generación eléctrica en españa: Estructura, funcionamiento y resultados. Economía Industrial, 364, 21-37. 2) Carbajo, A. (2007). Los mercados eléctricos y los servicios de ajuste del sistema. Economía Industrial, 364, 55-62. 3) Ciarreta, A., Espinosa, M. P., & Pizarro-Irizar, C. (2012). Efecto de la energía renovable en el mercado diario de electricidad. escenario 2020. Cuadernos Económicos De ICE, 83, 101-116. 4) Dourbois, G. A., & Biskas, P. N. (2015). European market coupling algorithm incorporating clearing conditions of block and complex orders. Paper presented at the PowerTech, 2015 IEEE Eindhoven, 1-6. 5) Fernández, J. M. R., Payán, M. B., Santos, J. M. R., & García, Á. L. T. (2017). The voluntary price for the small consumer: Real-time pricing in Spain. Energy Policy, 102, 41-51. 6) IDAE - Instituto para la Diversificación y Ahorro de la Energía, 2011. SPAHOUSEC, Análisis del consumo energético del sector residencial en España, (Analysis of the Energy Consumption in the Spanish Households) Final Report, July 2011. Referencias 100 7) Faruqui, A., Sergici, S., Shultz, E., 2013. Consistency of Results in Dynamic Pricing Experiments – Toward a Meta Analysis. Proceedings of DistribuTECH Conference, San Diego, CA, January 29, 2013. 8) REE-Red Eléctrica de España, online a. (Voluntary price for the small consumer (PVPC)) Active energy invoicing price, 〈https://www.esios.ree.es/en/pvpc〉 9) MIET-Ministerio de Industria, Energía y Turismo; Real Decreto 216/2014, de 28 de marzo, por el que se establece la metodología de cálculo de los precios voluntarios para el pequeño consumidor de energía eléctrica y su régimen jurídico de contratación, BOE 77, de 29 de marzo de 2014, pp. 27397-27428 10) JE-Jefatura del Estado, 2013. Real Decreto-Ley 9/2013, de 12 de julio, por el que se adoptan medidas urgentes para garantizar la estabilidad financiera del sistema eléctrico, BOE 167, de 13 de julio de, pp. 52106–52147 11) JE-Jefatura del Estado, 2014b. Ley 18/2014, de 15 de octubre, de aprobación de medidas urgentes para el crecimiento, la competitividad y la eficiencia, BOE. 252, de 17 de octubre de2014, pp. 83921–84082. 12) 13) Marín, C. E. (2004). La electricidad en las relaciones españa-portugal. Finisterra, 39(78) 14) PXs, P. (2016). Euphemia public description. pcr market coupling algorithm. Tech.Rep., 15) Rosenzweig Mendialdua, F. d. (2003). Mercado ibérico de electricidad: Avances y retos. 16) CMVM, CNMV, ERSE, CNE. (2009). Descripción del funcionamiento del MIBEL. 17) www.ree.es ® Actividades ® Operación del sistema eléctrico (https://www.ree.es/es/actividades/operacion-del-sistema-electrico) 101 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España 18) www.omie.es ® Mercados y productos ® Mercado Diario y Liquidación (http://www.omie.es/inicio/mercados-y-productos/conoces-nuestro-mercado-deelectricidad) 19) Informe anual OMIE 2017 ! 103 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España ANEXOS Anexo A • Import_cab.m function [codigo,numver,unidad,desc,cov,nout1,nop,nout2,nout3,maxrampasub,maxrampabaj,termfijo,termvar,pot encia,maxrampaarr,maxrampapar,pais,anio,mes,dia,hora,minuto,segundo] = import_cab(filename, startRow, endRow) %IMPORTA_CAB Importa el cab del fichero de texto con unidades como nombres y las convierte en vectores columna. % Ejemplo: % [codigo,numver,unidad,desc,cov,nout1,nop,nout2,nout3,maxrampasub,maxrampabaj,termfijo,termvar ,potencia,maxrampaarr,maxrampapar,pais,anio,mes,dia,hora,minuto,segundo]= import_cab('CAB_20140101.txt'); % Función Auto-generada por Matlab importdata tool. %% Initialize variables. if nargin<=2 startRow = 1; endRow = inf; end %% Format string for each line of text: formatSpec = '%7f%3f%7s%30s%1s%1s%1s%17f%17f%7f%7f%17f%17f%7f%7f%7f%1f%4f%2f%2f%2f%2f%2f%[^\n\r]'; %% Open the text file. fileID = fopen(filename,'r'); %% Read columns of data according to format string. dataArray = textscan(fileID, formatSpec, endRow(1)-startRow(1)+1, 'Delimiter', '', 'WhiteSpace', '', 'HeaderLines', startRow(1)-1, 'ReturnOnError', false); for block=2:length(startRow) frewind(fileID); dataArrayBlock = textscan(fileID, formatSpec, endRow(block)-startRow(block)+1, 'Delimiter', '', 'WhiteSpace', '', 'HeaderLines', startRow(block)-1, 'ReturnOnError', false); for col=1:length(dataArray) dataArray{col} = [dataArray{col};dataArrayBlock{col}]; end end %% Remove white space around all cell columns. dataArray{3} = strtrim(dataArray{3}); dataArray{4} = strtrim(dataArray{4}); dataArray{5} = strtrim(dataArray{5}); dataArray{6} = strtrim(dataArray{6}); dataArray{7} = strtrim(dataArray{7}); %% Close the text file. fclose(fileID); %% Allocate imported array to column variable names codigo = dataArray{:, 1}; numver = dataArray{:, 2}; unidad = dataArray{:, 3}; desc = dataArray{:, 4}; cov = dataArray{:, 5}; nout1 = dataArray{:, 6}; nop = dataArray{:, 7}; nout2 = dataArray{:, 8}; nout3 = dataArray{:, 9}; maxrampasub = dataArray{:, 10}; maxrampabaj = dataArray{:, 11}; Anexos 104 termfijo = dataArray{:, 12}; termvar = dataArray{:, 13}; potencia = dataArray{:, 14}; maxrampaarr = dataArray{:, 15}; maxrampapar = dataArray{:, 16}; pais = dataArray{:, 17}; anio = dataArray{:, 18}; mes = dataArray{:, 19}; dia = dataArray{:, 20}; hora = dataArray{:, 21}; minuto = dataArray{:, 22}; segundo = dataArray{:, 23}; • Import_letrasdet.m function DET1 = import_letrasdet(filename, startRow, endRow) %IMPORT_LETRASDET Importación de los datos alfabeticos de los ficheros DET % Función Auto-generada por Matlab importdata tool. %% Initialize variables. if nargin<=2 startRow = 1; endRow = inf; end %% Format string for each line of text: % column8: text (%s) % column9: text (%s) formatSpec = '%*55s%1s%s%[^\n\r]'; %% Open the text file. fileID = fopen(filename,'r'); %% Read columns of data according to format string. dataArray = textscan(fileID, formatSpec, endRow(1)-startRow(1)+1, 'Delimiter', '', 'WhiteSpace', '', 'EmptyValue' ,NaN,'HeaderLines', startRow(1)-1, 'ReturnOnError', false); for block=2:length(startRow) frewind(fileID); dataArrayBlock = textscan(fileID, formatSpec, endRow(block)-startRow(block)+1, 'Delimiter', '', 'WhiteSpace', '', 'EmptyValue' ,NaN,'HeaderLines', startRow(block)-1, 'ReturnOnError', false); for col=1:length(dataArray) dataArray{col} = [dataArray{col};dataArrayBlock{col}]; end end %% Close the text file. fclose(fileID); %% Create output variable DET1 = [dataArray{1:end-1}]; • Import_numdet.m function [coddet,numverdet,horadet,tramodet,h,preciodet,energiadet] = import_numdet(filename, startRow, endRow) %IMPORT_NUMDET Importación de datos numéricos de los ficheros DET y su %conversion a vectores columna. % %% Initialize variables. if nargin<=2 startRow = 1; endRow = inf; end %% Read columns of data as strings: formatSpec = '%7s%3s%2s%2s%17s%17s%7s%[^\n\r]'; %% Open the text file. fileID = fopen(filename,'r'); %% Read columns of data according to format string. textscan(fileID, '%[^\n\r]', startRow(1)-1, 'ReturnOnError', false); dataArray = textscan(fileID, formatSpec, endRow(1)-startRow(1)+1, 'Delimiter', '', 'WhiteSpace', '', 'ReturnOnError', false); for block=2:length(startRow) frewind(fileID); textscan(fileID, '%[^\n\r]', startRow(block)-1, 'ReturnOnError', false); dataArrayBlock = textscan(fileID, formatSpec, endRow(block)-startRow(block)+1, 'Delimiter', '', 'WhiteSpace', '', 'ReturnOnError', false); for col=1:length(dataArray) dataArray{col} = [dataArray{col};dataArrayBlock{col}]; end 105 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España end coddet = str2num(cell2mat(dataArray{1})); %COMO PARECE QUE FUNCIONA numverdet = str2num(cell2mat(dataArray{2})); horadet = str2num(cell2mat(dataArray{3})); tramodet = str2num(cell2mat(dataArray{4})); h=str2num(cell2mat(dataArray{5})); preciodet= str2num(cell2mat(dataArray{6})); energiadet = str2num(cell2mat(dataArray{7})); fclose(fileID); • Import_pbc.m function matriz_atc3 = import_pbc(filename, startRow, endRow) %% Initialize variables. delimiter = ';'; if nargin<=2 startRow = 3; endRow = 26; end %% Read columns of data as strings: formatSpec = '%*s%*s%*s%s%*s%*s%s%[^\n\r]'; %% Open the text file. fileID = fopen(filename,'r'); %% Read columns of data according to format string. textscan(fileID, '%[^\n\r]', startRow(1)-1, 'ReturnOnError', false); dataArray = textscan(fileID, formatSpec, endRow(1)-startRow(1)+1, 'Delimiter', delimiter, 'ReturnOnError', false); for block=2:length(startRow) frewind(fileID); textscan(fileID, '%[^\n\r]', startRow(block)-1, 'ReturnOnError', false); dataArrayBlock = textscan(fileID, formatSpec, endRow(block)-startRow(block)+1, 'Delimiter', delimiter, 'ReturnOnError', false); for col=1:length(dataArray) dataArray{col} = [dataArray{col};dataArrayBlock{col}]; end end %% Close the text file. fclose(fileID); %% Convert the contents of columns containing numeric strings to numbers. % Replace non-numeric strings with NaN. raw = repmat({''},length(dataArray{1}),length(dataArray)-1); for col=1:length(dataArray)-1 raw(1:length(dataArray{col}),col) = dataArray{col}; end numericData = NaN(size(dataArray{1},1),size(dataArray,2)); for col=[1,2] % Converts strings in the input cell array to numbers. Replaced non-numeric % strings with NaN. rawData = dataArray{col}; for row=1:size(rawData, 1); % Create a regular expression to detect and remove non-numeric prefixes and % suffixes. regexstr = '(?<prefix>.*?)(?<numbers>([-]*(\d+[\.]*)+[\,]{0,1}\d*[eEdD]{0,1}[- +]*\d*[i]{0,1})|([-]*(\d+[\.]*)*[\,]{1,1}\d+[eEdD]{0,1}[-+]*\d*[i]{0,1}))(?<suffix>.*)'; try result = regexp(rawData{row}, regexstr, 'names'); numbers = result.numbers; % Detected commas in non-thousand locations. invalidThousandsSeparator = false; if any(numbers=='.'); thousandsRegExp = '^\d+?(\.\d{3})*\,{0,1}\d*$'; if isempty(regexp(thousandsRegExp, '.', 'once')); numbers = NaN; invalidThousandsSeparator = true; end end % Convert numeric strings to numbers. if ~invalidThousandsSeparator; numbers = strrep(numbers, '.', ''); Anexos 112 lista=unique(unidad); for i=1:filaCAB if i~=indice1 && i~=indice2 && i~=indice3 if cov{i}=='C' if pais(i,1)>2 %Las unidades con paises diferentes a España y Portugal pais(i,1)=1; %las tomamos como si fueran de España C(r,1)=pais(i,1);%(1) else C(r,1)=pais(i,1);%(1) end p=find(strcmp(unidad(i),lista(:,1))); C(r,2)=p;%(2) r=r+1; end end end %Rellenamos la matriz de comra C, sabiendo que no tenemos que tener en %cuenta las unidades francesas(1), que sea compra(2). Para ello recorremos %el CAB y el DET r=1; for j=1:filaCAB if cov{j}=='C'%(2) if j~=indice1 && j~=indice2 && j~=indice3%(1) pos_det=find(coddet==codigo(j,1)); tam_pos_det=size(pos_det); for indice=1:tam_pos_det k=pos_det(indice); if k==1 a=horadet(k,1); b=1; c=3+(a-1)*50+(b-1)*2; C(r,c)=preciodet(k,1); C(r,c+1)=energiadet(k,1); else if coddet(k,1)~=coddet(k-1,1) a=horadet(k,1); b=1; c=3+(a-1)*50+(b-1)*2; C(r,c)=preciodet(k,1); C(r,c+1)=energiadet(k,1); elseif coddet(k,1)==coddet(k-1,1) if horadet(k,1)==horadet(k-1,1) a=horadet(k,1); b=b+1; c=3+(a-1)*50+(b-1)*2; C(r,c)=preciodet(k,1); C(r,c+1)=energiadet(k,1); elseif horadet(k,1)~=horadet(k-1,1) a=horadet(k,1); b=1; c=3+(a-1)*50+(b-1)*2; C(r,c)=preciodet(k,1); C(r,c+1)=energiadet(k,1); end end end end C(r,1203)=anio(j); C(r,1204)=mes(j); C(r,1205)=dia(j); C(r,1206)=hora(j); C(r,1207)=minuto(j); C(r,1208)=segundo(j); r=r+1; r; end end end [a,~]=size(C); f=a+1; C(f,:)=zeros; %Añado una fila de ceros para poder añadir la unidad que en el fichero de compra que simula la interconexion con Francia [t,~]=size(Frontera); anadir_compra=zeros(t,2);%Matriz en la que se guarda en la primera columna la hora y en la segunda se rellena con el vector OcupacionImport %Cuando Frontera sea igual a 3 guardaremos la hora y sus ocupacionexport %correspondiente para después añadirlos a la matriz final de compra, C 113 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España c=1; %Contador que recorre la matriz anadir_compra cuando estamos guardando for i=1:t if Frontera(i)==3 || Frontera(i)==4 || Frontera(i)==5 anadir_compra(c,1)=HoraPBC(i); anadir_compra(c,2)=OcupacionExport(i); c=c+1; end end d=1; %Contador de la matriz anadir_compra cuando estamos aññadiendo a la matriz final de compra,C for i=3:50:1153 if anadir_compra(d,2) ~= 0 || anadir_compra(d+24,2) ~= 0 || anadir_compra(d+48,2) ~= 0 C(f,i)=180.3; C(f,i+1)=anadir_compra(d,2)+anadir_compra(d+24,2)+anadir_compra(d+48,2); end d=d+1; end C(f,1)=1; • CreaATC17.m function [ATC]=CreaATC17(nombre_atc) ATC=import_pbc(nombre_atc); • Anio17.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % FICHEROS VENTA COMPRA ATC % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tic %% Datos de partida (por orden de entrada en la funcion) anio=2017; %Año que analizamos. Asegurarnos de que tenemos todos los ficheros del año que queremos crear venta='VENTA_2017'; %Nombre asignado a los ficheros de las ventas compra='COMPRA_2017'; atc='ATC_2017'; cab='CAB_2017'; det='DET_2017'; pbc='capacidad_inter_pbc_2017'; %% LÓGICA DE EJECUCIÓN %Diferenciación de los nombres según el dia del año for k=11:12 if k==1||k==3||k==5||k==7||k==8||k==10||k==12 %Meses con 31 dias if k==1||k==3||k==5||k==7||k==8 %Meses de 31 dias de 1 digito (ENERO, MARZO, MAYO, JULIO, AGOSTO) %fechaa=[num2str(anio) num2str(0) num2str(k)]; for kk=1:9 %fecha=[fechaa num2str(0) num2str(kk) ]; nventa=[venta num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; natc=[atc num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; filenamecab=[cab num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; filenamedet=[det num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; filenamepbc=[pbc num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; V=CreaVenta17(filenamecab,filenamedet,filenamepbc); C=CreaCompra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); end for kk=10:31 %fecha=[fechaa num2str(kk)]; nventa=[venta num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; natc=[atc num2str(0) num2str(k) num2str(kk) '.txt']; Anexos 114 filenamecab=[cab num2str(0) num2str(k) num2str(kk) '.1']; filenamedet=[det num2str(0) num2str(k) num2str(kk) '.1']; filenamepbc=[pbc num2str(0) num2str(k) num2str(kk) '.1']; if k==3 && kk==26 V=Crea23Venta17(filenamecab,filenamedet,filenamepbc); C=Crea23Compra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); else V=CreaVenta17(filenamecab,filenamedet,filenamepbc); C=CreaCompra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); end end elseif k==10||k==12 %Meses de 31 dias de OCTUBRE Y DICIEMBRE(2 dígitos) %fechaa=[num2str(anio) num2str(k)]; for kk=1:9 %fecha=[fechaa num2str(0) num2str(kk)]; nventa=[venta num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(0) num2str(kk) '.txt']; natc=[atc num2str(k) num2str(0) num2str(kk) '.txt']; filenamecab=[cab num2str(k) num2str(0) num2str(kk) '.1']; filenamedet=[det num2str(k) num2str(0) num2str(kk) '.1']; filenamepbc=[pbc num2str(k) num2str(0) num2str(kk) '.1']; disp(nventa) V=CreaVenta17(filenamecab,filenamedet,filenamepbc); C=CreaCompra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); end for kk=10:31 if (k==10 && kk==30) kk=kk+1; else %fecha=[fechaa num2str(kk)]; nventa=[venta num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(kk) '.txt']; natc=[atc num2str(k) num2str(kk) '.txt']; filenamecab=[cab num2str(k) num2str(kk) '.1']; filenamedet=[det num2str(k) num2str(kk) '.1']; filenamepbc=[pbc num2str(k) num2str(kk) '.1']; disp(nventa) if k==10 && kk==29 V=Crea25Venta17(filenamecab,filenamedet,filenamepbc); C=Crea25Compra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); else V=CreaVenta17(filenamecab,filenamedet,filenamepbc); C=CreaCompra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); end end end end elseif k==2 %Mes de FEBRERO 28 dias %fechaa=[num2str(anio) num2str(0) num2str(k)]; for kk=1:9 115 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España %fecha=[fechaa num2str(0) num2str(kk)]; nventa=[venta num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; natc=[atc num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; filenamecab=[cab num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; filenamedet=[det num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; filenamepbc=[pbc num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; V=CreaVenta17(filenamecab,filenamedet,filenamepbc); C=CreaCompra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); end for kk=10:28 %fecha=[fechaa num2str(kk)]; nventa=[venta num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; natc=[atc num2str(0) num2str(k) num2str(kk) '.txt']; filenamecab=[cab num2str(0) num2str(k) num2str(kk) '.1']; filenamedet=[det num2str(0) num2str(k) num2str(kk) '.1']; filenamepbc=[pbc num2str(0) num2str(k) num2str(kk) '.1']; V=CreaVenta17(filenamecab,filenamedet,filenamepbc); C=CreaCompra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); end elseif k==4||k==6||k==9||k==11 %Meses con 30 Dias if k==4||k==6||k==9 %Meses con 30 Dias de 1 digito (ABRIL, JUNIO, SEPTIEMBRE) %fechaa=[num2str(anio) num2str(0) num2str(k)]; for kk=1:9 %fecha=[fechaa num2str(0) num2str(kk)]; nventa=[venta num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; natc=[atc num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; filenamecab=[cab num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; filenamedet=[det num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; filenamepbc=[pbc num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; V=CreaVenta17(filenamecab,filenamedet,filenamepbc); C=CreaCompra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); end for kk=10:30 %fecha=[fechaa num2str(kk)]; nventa=[venta num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; natc=[atc num2str(0) num2str(k) num2str(kk) '.txt']; filenamecab=[cab num2str(0) num2str(k) num2str(kk) '.1']; filenamedet=[det num2str(0) num2str(k) num2str(kk) '.1']; filenamepbc=[pbc num2str(0) num2str(k) num2str(kk) '.1']; V=CreaVenta17(filenamecab,filenamedet,filenamepbc); C=CreaCompra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); end elseif k==11 %Mes de NOVIEMBRE(2 dígitos) %fechaa=[num2str(anio) num2str(k)]; for kk=1:9 %fecha=[fechaa num2str(0) num2str(kk)]; nventa=[venta num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(0) num2str(kk) '.txt']; natc=[atc num2str(k) num2str(0) num2str(kk) '.txt']; Anexos 116 filenamecab=[cab num2str(k) num2str(0) num2str(kk) '.1']; filenamedet=[det num2str(k) num2str(0) num2str(kk) '.1']; filenamepbc=[pbc num2str(k) num2str(0) num2str(kk) '.1']; V=CreaVenta17(filenamecab,filenamedet,filenamepbc); C=CreaCompra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); end for kk=10:30 %fecha=[fechaa num2str(kk)]; nventa=[venta num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(kk) '.txt']; natc=[atc num2str(k) num2str(kk) '.txt']; filenamecab=[cab num2str(k) num2str(kk) '.1']; filenamedet=[det num2str(k) num2str(kk) '.1']; filenamepbc=[pbc num2str(k) num2str(kk) '.1']; matriz_atc3=import_pbc(filenamepbc); V=CreaVenta17(filenamecab,filenamedet,filenamepbc); C=CreaCompra17(filenamecab,filenamedet,filenamepbc); ATC=CreaATC17(filenamepbc); save(nventa,'V','-ascii'); save(ncompra,'C','-ascii'); save(natc,'ATC','-ascii'); end end end end toc Anexo B • Import_curva_2017.m function [Hora,Fecha,Pais,Unidad,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filename) %% Initialize variables. %filename = 'C:\Users\usuario\Documents\Industriales\4.Cuarto\TFG\Compara Metedo Curvas\Welfare\curva_pbc_20150101.1.txt'; delimiter = ';'; %% Read columns of data as strings: % For more information, see the TEXTSCAN documentation. formatSpec = '%s%s%s%s%s%s%s%s%[^\n\r]'; %% Open the text file. fileID = fopen(filename,'r'); %% Read columns of data according to format string. % This call is based on the structure of the file used to generate this % code. If an error occurs for a different file, try regenerating the code % from the Import Tool. dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'ReturnOnError', false); %% Close the text file. fclose(fileID); %% Convert the contents of columns containing numeric strings to numbers. % Replace non-numeric strings with NaN. raw = repmat({''},length(dataArray{1}),length(dataArray)-1); for col=1:length(dataArray)-1 raw(1:length(dataArray{col}),col) = dataArray{col}; end numericData = NaN(size(dataArray{1},1),size(dataArray,2)); % Converts strings in the input cell array to numbers. Replaced non-numeric % strings with NaN. 117 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España rawData = dataArray{1}; for row=1:size(rawData, 1); % Create a regular expression to detect and remove non-numeric prefixes and % suffixes. regexstr = '(?<prefix>.*?)(?<numbers>([-]*(\d+[\,]*)+[\.]{0,1}\d*[eEdD]{0,1}[- +]*\d*[i]{0,1})|([-]*(\d+[\,]*)*[\.]{1,1}\d+[eEdD]{0,1}[-+]*\d*[i]{0,1}))(?<suffix>.*)'; try result = regexp(rawData{row}, regexstr, 'names'); numbers = result.numbers; % Detected commas in non-thousand locations. invalidThousandsSeparator = false; if any(numbers==','); thousandsRegExp = '^\d+?(\,\d{3})*\.{0,1}\d*$'; if isempty(regexp(thousandsRegExp, ',', 'once')); numbers = NaN; invalidThousandsSeparator = true; end end % Convert numeric strings to numbers. if ~invalidThousandsSeparator; numbers = textscan(strrep(numbers, ',', ''), '%f'); numericData(row, 1) = numbers{1}; raw{row, 1} = numbers{1}; end catch me end end %% Split data into numeric and cell columns. rawNumericColumns = raw(:, 1); rawCellColumns = raw(:, [2,3,4,5,6,7,8]); %% Replace non-numeric cells with NaN R = cellfun(@(x) ~isnumeric(x) && ~islogical(x),rawNumericColumns); % Find non-numeric cells rawNumericColumns(R) = {NaN}; % Replace non-numeric cells %% Allocate imported array to column variable names Hora = cell2mat(rawNumericColumns(3:end, 1)); Fecha = rawCellColumns(3:end, 1); Pais = rawCellColumns(3:end, 2); Unidad = rawCellColumns(3:end, 3); Tipo_Oferta = rawCellColumns(3:end, 4); Energia = rawCellColumns(3:end, 5); Precio = rawCellColumns(3:end, 6); C_O = rawCellColumns(3:end, 7); • Welfare_2017.m function [welfare]=Welfare_2017 %Esta función devolverá el welfare del mercado para cada día y lo %almacenara en un vector. %% Datos de partida (por orden de entrada en la funcion) anio=2017; %Año que analizamos. Asegurarnos de que tenemos todos los ficheros del año que queremos crear curva='curva_pbc_uof_2017'; welfare=zeros(365,1); %Vector que contiene el welfare de cada día quitando 5,6 de Enero, 26 Marzo y 29 Octubre Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; Vol_Energia_V=0; Vol_Energia_C=0; c=1; %Contador que recorre el vector welfare %% LÓGICA DE EJECUCIÓN %Diferenciación de los nombres según el dia del año for k=1:12 if k==1||k==3||k==5||k==7||k==8||k==10||k==12 %Meses con 31 dias if k==1||k==3||k==5||k==7||k==8 %Meses de 31 dias de 1 digito (ENERO, MARZO, MAYO, JULIO, AGOSTO) for kk=1:9 Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; filenamecurva=[curva num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; Anexos 118 [Hora,~,Pais,~,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filenamecurva); precio=strrep(Precio,'.',''); PrecioFs=strrep(precio,',','.'); PrecioF=str2double(PrecioFs); energia=strrep(Energia,'.',''); EnergiaFs=strrep(energia,',','.'); EnergiaF=str2double(EnergiaFs); [a,~]=size(C_O); for i=1:a if C_O{i} == 'C' if Tipo_Oferta{i} == 'C' && Pais ~= 'PT' Sum_dia_Casadas_Compra=Sum_dia_Casadas_Compra+(PrecioF(i)*EnergiaF(i) ); Vol_Energia_C=Vol_Energia_C+EnergiaF(i); elseif Tipo_Oferta{i} == 'V' Sum_dia_Casadas_Venta=Sum_dia_Casadas_Venta+(PrecioF(i)*EnergiaF(i)); Vol_Energia_V=Vol_Energia_V+EnergiaF(i); end end end % end welfare(c,1)=Sum_dia_Casadas_Compra-Sum_dia_Casadas_Venta; Vol_Energia(c,1 c=c+1; end for kk=10:31 Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; filenamecurva=[curva num2str(0) num2str(k) num2str(kk) '.1']; [~,~,~,~,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filenamecurva); precio=strrep(Precio,'.',''); PrecioFs=strrep(precio,',','.'); PrecioF=str2double(PrecioFs); energia=strrep(Energia,'.',''); EnergiaFs=strrep(energia,',','.'); EnergiaF=str2double(EnergiaFs); [a,~]=size(C_O); for i=1:a if C_O{i} == 'C' if Tipo_Oferta{i} == 'C' Sum_dia_Casadas_Compra=Sum_dia_Casadas_Compra+(PrecioF(i)*EnergiaF(i) ); elseif Tipo_Oferta{i} == 'V' Sum_dia_Casadas_Venta=Sum_dia_Casadas_Venta+(PrecioF(i)*EnergiaF(i)); end end end % end welfare(c,1)=Sum_dia_Casadas_Compra-Sum_dia_Casadas_Venta; c=c+1; end elseif k==10||k==12 %Meses de 31 dias de OCTUBRE Y DICIEMBRE(2 dígitos) for kk=1:9 Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; filenamecurva=[curva num2str(k) num2str(0) num2str(kk) '.1']; [~,~,~,~,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filenamecurva); % Precio=Precio/100; % Energia=Energia/10; precio=strrep(Precio,'.',''); PrecioFs=strrep(precio,',','.'); PrecioF=str2double(PrecioFs); energia=strrep(Energia,'.',''); EnergiaFs=strrep(energia,',','.'); EnergiaF=str2double(EnergiaFs); [a,~]=size(C_O); for i=1:a if C_O{i} == 'C' if Tipo_Oferta{i} == 'C' Sum_dia_Casadas_Compra=Sum_dia_Casadas_Compra+(PrecioF(i)*EnergiaF(i) ); elseif Tipo_Oferta{i} == 'V' Sum_dia_Casadas_Venta=Sum_dia_Casadas_Venta+(PrecioF(i)*EnergiaF(i)); 119 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España end end end welfare(c,1)=Sum_dia_Casadas_Compra-Sum_dia_Casadas_Venta; c=c+1; end for kk=10:31 Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; filenamecurva=[curva num2str(k) num2str(kk) '.1']; [~,~,~,~,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filenamecurva); precio=strrep(Precio,'.',''); PrecioFs=strrep(precio,',','.'); PrecioF=str2double(PrecioFs); energia=strrep(Energia,'.',''); EnergiaFs=strrep(energia,',','.'); EnergiaF=str2double(EnergiaFs); [a,~]=size(C_O); for i=1:a if C_O{i} == 'C' if Tipo_Oferta{i} == 'C' Sum_dia_Casadas_Compra=Sum_dia_Casadas_Compra+(PrecioF(i)*EnergiaF(i) ); elseif Tipo_Oferta{i} == 'V' Sum_dia_Casadas_Venta=Sum_dia_Casadas_Venta+(PrecioF(i)*EnergiaF(i)); end end end % end welfare(c,1)=Sum_dia_Casadas_Compra-Sum_dia_Casadas_Venta; c=c+1; end end elseif k==2 %Mes de FEBRERO 28 dias for kk=1:9 Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; filenamecurva=[curva num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; [~,~,~,~,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filenamecurva); precio=strrep(Precio,'.',''); PrecioFs=strrep(precio,',','.'); PrecioF=str2double(PrecioFs); energia=strrep(Energia,'.',''); EnergiaFs=strrep(energia,',','.'); EnergiaF=str2double(EnergiaFs); [a,~]=size(C_O); for i=1:a if C_O{i} == 'C' if Tipo_Oferta{i} == 'C' Sum_dia_Casadas_Compra=Sum_dia_Casadas_Compra+(PrecioF(i)*EnergiaF(i) ); elseif Tipo_Oferta{i} == 'V' Sum_dia_Casadas_Venta=Sum_dia_Casadas_Venta+(PrecioF(i)*EnergiaF(i)); end end end welfare(c,1)=Sum_dia_Casadas_Compra-Sum_dia_Casadas_Venta; c=c+1; end for kk=10:28 Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; filenamecurva=[curva num2str(0) num2str(k) num2str(kk) '.1']; [~,~,~,~,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filenamecurva); precio=strrep(Precio,'.',''); PrecioFs=strrep(precio,',','.'); PrecioF=str2double(PrecioFs); energia=strrep(Energia,'.',''); EnergiaFs=strrep(energia,',','.'); EnergiaF=str2double(EnergiaFs); [a,~]=size(C_O); for i=1:a if C_O{i} == 'C' Anexos 120 if Tipo_Oferta{i} == 'C' Sum_dia_Casadas_Compra=Sum_dia_Casadas_Compra+(PrecioF(i)*EnergiaF(i) ); elseif Tipo_Oferta{i} == 'V' Sum_dia_Casadas_Venta=Sum_dia_Casadas_Venta+(PrecioF(i)*EnergiaF(i)); end end end welfare(c,1)=Sum_dia_Casadas_Compra-Sum_dia_Casadas_Venta; c=c+1; end elseif k==4||k==6||k==9||k==11 %Meses con 30 Dias if k==4||k==6||k==9 %Meses con 30 Dias de 1 digito (ABRIL, JUNIO, SEPTIEMBRE) for kk=1:9 Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; filenamecurva=[curva num2str(0) num2str(k) num2str(0) num2str(kk) '.1']; [~,~,~,~,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filenamecurva); % Precio=Precio/100; % Energia=Energia/10; precio=strrep(Precio,'.',''); PrecioFs=strrep(precio,',','.'); PrecioF=str2double(PrecioFs); energia=strrep(Energia,'.',''); EnergiaFs=strrep(energia,',','.'); EnergiaF=str2double(EnergiaFs); [a,~]=size(C_O); for i=1:a if C_O{i} == 'C' if Tipo_Oferta{i} == 'C' Sum_dia_Casadas_Compra=Sum_dia_Casadas_Compra+(PrecioF(i)*EnergiaF(i) ); elseif Tipo_Oferta{i} == 'V' Sum_dia_Casadas_Venta=Sum_dia_Casadas_Venta+(PrecioF(i)*EnergiaF(i)); end end end welfare(c,1)=Sum_dia_Casadas_Compra-Sum_dia_Casadas_Venta; c=c+1; end for kk=10:30 Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; filenamecurva=[curva num2str(0) num2str(k) num2str(kk) '.1']; [~,~,~,~,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filenamecurva); % Precio=Precio/100; % Energia=Energia/10; precio=strrep(Precio,'.',''); PrecioFs=strrep(precio,',','.'); PrecioF=str2double(PrecioFs); energia=strrep(Energia,'.',''); EnergiaFs=strrep(energia,',','.'); EnergiaF=str2double(EnergiaFs); [a,~]=size(C_O); for i=1:a if C_O{i} == 'C' if Tipo_Oferta{i} == 'C' Sum_dia_Casadas_Compra=Sum_dia_Casadas_Compra+(PrecioF(i)*EnergiaF(i) ); elseif Tipo_Oferta{i} == 'V' Sum_dia_Casadas_Venta=Sum_dia_Casadas_Venta+(PrecioF(i)*EnergiaF(i)); end end end welfare(c,1)=Sum_dia_Casadas_Compra-Sum_dia_Casadas_Venta; c=c+1; end elseif k==11 %Mes de NOVIEMBRE(2 dígitos) for kk=1:9 Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; filenamecurva=[curva num2str(k) num2str(0) num2str(kk) '.1']; [~,~,~,~,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filenamecurva); 121 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España % Precio=Precio/100; % Energia=Energia/10; precio=strrep(Precio,'.',''); PrecioFs=strrep(precio,',','.'); PrecioF=str2double(PrecioFs); energia=strrep(Energia,'.',''); EnergiaFs=strrep(energia,',','.'); EnergiaF=str2double(EnergiaFs); [a,~]=size(C_O); for i=1:a if C_O{i} == 'C' if Tipo_Oferta{i} == 'C' Sum_dia_Casadas_Compra=Sum_dia_Casadas_Compra+(PrecioF(i)*EnergiaF(i) ); elseif Tipo_Oferta{i} == 'V' Sum_dia_Casadas_Venta=Sum_dia_Casadas_Venta+(PrecioF(i)*EnergiaF(i)); end end end welfare(c,1)=Sum_dia_Casadas_Compra-Sum_dia_Casadas_Venta; c=c+1; end for kk=10:30 Sum_dia_Casadas_Compra=0; Sum_dia_Casadas_Venta=0; filenamecurva=[curva num2str(k) num2str(kk) '.1']; [~,~,~,~,Tipo_Oferta,Energia,Precio,C_O]=import_curva_2017(filenamecurva); % Precio=Precio/100; % Energia=Energia/10; precio=strrep(Precio,'.',''); PrecioFs=strrep(precio,',','.'); PrecioF=str2double(PrecioFs); energia=strrep(Energia,'.',''); EnergiaFs=strrep(energia,',','.'); EnergiaF=str2double(EnergiaFs); [a,~]=size(C_O); for i=1:a if C_O{i} == 'C' if Tipo_Oferta{i} == 'C' Sum_dia_Casadas_Compra=Sum_dia_Casadas_Compra+(PrecioF(i)*EnergiaF(i) ); elseif Tipo_Oferta{i} == 'V' Sum_dia_Casadas_Venta=Sum_dia_Casadas_Venta+(PrecioF(i)*EnergiaF(i)); end end end welfare(c,1)=Sum_dia_Casadas_Compra-Sum_dia_Casadas_Venta; c=c+1; end end end end save('Volumen_Energia.txt','Vol_Energia','-ascii'); save('welfareOMIE_2017.txt','welfare','-ascii'); • Import_resumen2017.m function [BienestarN,PrecioEN,PrecioPN,EnergiaCEN,EnergiaVEN,EnergiaCPN,EnergiaVPN,EnergiaExpEN,EnergiaExp PN]=import_resumen(filename) %% Initialize variables. delimiter = ';'; %% Read columns of data as strings: % For more information, see the TEXTSCAN documentation. formatSpec = '%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%[^\n\r]'; %% Open the text file. fileID = fopen(filename,'r'); %% Read columns of data according to format string. % This call is based on the structure of the file used to generate this % code. If an error occurs for a different file, try regenerating the code % from the Import Tool. Anexos 128 ncompra=[compra num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC(C_BASE,x,reducc_AC); save(ncompra,'C','-ascii'); end end end elseif k==2 %Mes de FEBRERO 28 dias for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC(C_BASE,x,reducc_AC); save(ncompra,'C','-ascii'); end for kk=10:28 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC(C_BASE,x,reducc_AC); save(ncompra,'C','-ascii'); end elseif k==4||k==6||k==9||k==11 %Meses con 30 Dias if k==4||k==6||k==9 %Meses con 30 Dias de 1 digito (ABRIL, JUNIO, SEPTIEMBRE) for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC(C_BASE,x,reducc_AC); save(ncompra,'C','-ascii'); end for kk=10:30 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC(C_BASE,x,reducc_AC); save(ncompra,'C','-ascii'); end elseif k==11 %Mes de NOVIEMBRE(2 dígitos) for kk=1:9 ncompra_base=[compra_base num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC(C_BASE,x,reducc_AC); save(ncompra,'C','-ascii'); end for kk=10:30 ncompra_base=[compra_base num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC(C_BASE,x,reducc_AC); save(ncompra,'C','-ascii'); 129 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España end end end end toc • Extrapola.m function [Reducc_AC,Excedente]=Extrapola(Perf_gen,Perf_dem,Porc_AC) N_casas_esp=26000000; N_autocons_act=1500; Porc_act=N_autocons_act/N_casas_esp; P_AC=Porc_AC/100; Ahorro_act=0; Excedente_aux=0; for i=1:24 Ahorro_act(i)=Perf_dem(i)-Perf_gen(i); if Ahorro_act(i)<0 Ahorr_act(i)=Perf_dem(i); end if (Perf_gen(i)-Perf_dem(i))>=0 Excedente_aux=Excedente_aux+(Perf_gen(i)-Perf_dem(i)); end end Reducc_AC=((Ahorro_act(:))*P_AC)/Porc_act; Excedente=Excedente_aux*P_AC/Porc_act; end • • COMPRA_AC.m function [COMPRA_AC]=COMPRA_AC(COMPRA_BASE,x,reducc_AC) COMPRA_BASE_aux=COMPRA_BASE; [f,c]=size(COMPRA_BASE_aux); c=c-6;%para nomcontar como columnas las columnas de informacion de la oferta(fecha,hora, etc) cont=0;%recorre el vector con el autoconsumo a eliminar para cada hora for i=3:50:c %recorre de hora en hora cont=cont+1; if cont<=x %que el vector de reducc de AC no haya llegado las horas reducc_h=reducc_AC(cont); if reducc_h ~= 0 %Realizar en caso de que haya que eliminar algo (por la noche no habra nada qe eliminar) for j=1:f %recorre todas las filas if reducc_h ~= 0 %que haya algo que elimianr de autoconsumo, es decir, que no se haya eliminado ya todo en las filas anteriores if COMPRA_BASE_aux(j,i)==180.3 && COMPRA_BASE_aux(j,1)==1 %Oferta española a 180.3 if COMPRA_BASE_aux(j,i+2:i+46)==0 %Que la oferta a 180.3 sea unica en el primer tramo if COMPRA_BASE_aux(j,i+1)>=reducc_h COMPRA_BASE_aux(j,i+1)=COMPRA_BASE_aux(j,i+1)-reducc_h; reducc_h=0; else reducc_h=reducc_h-COMPRA_BASE_aux(j,i+1); COMPRA_BASE_aux(j,i)=0; COMPRA_BASE_aux(j,i+1)=0; end end end end end end end end COMPRA_AC=COMPRA_BASE_aux; end Anexos 130 • COMPRA_AC_ALM.m unction [COMPRA_ACALM]=COMPRA_AC_ALM(COMPRA_BASE,x,reducc_AC,Excedente,h_cons_exc) COMPRA_BASE_aux=COMPRA_BASE; [f,c]=size(COMPRA_BASE_aux); [~,num_h]=size(h_cons_exc); c=c-6;%para nomcontar como columnas las columnas de informacion de la oferta(fecha,hora, etc) cont=0;%recorre el vector con el autoconsumo a eliminar para cada hora for i=3:50:c %recorre de hora en hora cont=cont+1; if cont<=x %que el vector de reducc de AC no haya llegado las horas reducc_h=reducc_AC(cont); if reducc_h ~= 0 %Realizar en caso de que haya que eliminar algo (por la noche no habra nada qe eliminar) for j=1:f %recorre todas las filas if reducc_h ~= 0 %que haya algo que elimianr de autoconsumo, es decir, que no se haya eliminado ya todo en las filas anteriores if COMPRA_BASE_aux(j,i)==180.3 && COMPRA_BASE_aux(j,1)==1 %Oferta española a 180.3 if COMPRA_BASE_aux(j,i+2:i+46)==0 %Que la oferta a 180.3 sea unica en el primer tramo if COMPRA_BASE_aux(j,i+1)>=reducc_h COMPRA_BASE_aux(j,i+1)=COMPRA_BASE_aux(j,i+1)-reducc_h; reducc_h=0; else reducc_h=reducc_h-COMPRA_BASE_aux(j,i+1); COMPRA_BASE_aux(j,i)=0; COMPRA_BASE_aux(j,i+1)=0; end end end end end end end end reducc_h_exc=Excedente/num_h; for w=h_cons_exc y=3+(w-1)*50; for t=1:f if reducc_h_exc ~= 0 if COMPRA_BASE_aux(t,y)==180.3 && COMPRA_BASE_aux(t,1)==1 %que haga una unica oferta en el primer tramo a 180.3 if COMPRA_BASE_aux(t,y+2:y+46)==0 if COMPRA_BASE_aux(t,y+1)>=reducc_h_exc COMPRA_BASE_aux(t,y+1)=COMPRA_BASE_aux(t,y+1)-reducc_h_exc; reducc_h_exc=0; else reducc_h_exc=reducc_h_exc-COMPRA_BASE_aux(t,y+1); COMPRA_BASE_aux(t,y)=0; COMPRA_BASE_aux(t,y+1)=0; end end end end end end COMPRA_ACALM=COMPRA_BASE_aux; end • Anio17_ACALM.m %% Datos de partida (por orden de entrada en la funcion) anio=2017; %Año que analizamos. Asegurarnos de que tenemos todos los ficheros del año que queremos crear %Nombre asignado a los ficheros de las ventas compra_base='COMPRA_2017'; %%Para cada escenario de estudio X_AC sera un numero diferente 131 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España compra='COMPRA_ACALM_30_2017'; X_AC=30;%%Para cada escenario de estudio X_AC sera un numero diferente reducc_AC=0; h_cons_exc=[20 21 22]; PERF_GEN_EST=load('PERF_GEN_EST.txt'); %% LÓGICA DE EJECUCIÓN %Diferenciación de los nombres según el dia del año for k=1:12 if k==1||k==2||k==12 Perf_est=load('PERF_MED_INV_2017.txt'); Perf_dem=Perf_est(:,3); Perf_gen=PERF_GEN_EST(:,5); [reducc_AC,Excedente]=Extrapola(Perf_gen,Perf_dem,X_AC); elseif k==3||k==4||k==5 Perf_est=load('PERF_MED_PRIM_2017.txt'); Perf_dem=Perf_est(:,3); Perf_gen=PERF_GEN_EST(:,2); [reducc_AC,Excedente]=Extrapola(Perf_gen,Perf_dem,X_AC); elseif k==6||k==7||k==8 Perf_est=load('PERF_MED_VER_2017.txt'); Perf_dem=Perf_est(:,3); Perf_gen=PERF_GEN_EST(:,3); [reducc_AC,Excedente]=Extrapola(Perf_gen,Perf_dem,X_AC); else Perf_est=load('PERF_MED_OTO_2017.txt'); Perf_dem=Perf_est(:,3); Perf_gen=PERF_GEN_EST(:,4); [reducc_AC,Excedente]=Extrapola(Perf_gen,Perf_dem,X_AC); end if k==1||k==3||k==5||k==7||k==8||k==10||k==12 %Meses con 31 dias if k==1||k==3||k==5||k==7||k==8 %Meses de 31 dias de 1 digito (ENERO, MARZO, MAYO, JULIO, AGOSTO) for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); end for kk=10:31 if k==3 && kk==26 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra23(ncompra_base); x=23; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); else ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); end end elseif k==10||k==12 %Meses de 31 dias de OCTUBRE Y DICIEMBRE(2 dígitos) for kk=1:9 ncompra_base=[compra_base num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); end Anexos 132 for kk=10:31 if (k==10 && kk==30)||(k==10 && kk==31) kk=kk+1; elseif k==10 && kk==29 ncompra_base=[compra_base num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra25(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); else ncompra_base=[compra_base num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); end end end elseif k==2 %Mes de FEBRERO 28 dias for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); end for kk=10:28 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); end elseif k==4||k==6||k==9||k==11 %Meses con 30 Dias if k==4||k==6||k==9 %Meses con 30 Dias de 1 digito (ABRIL, JUNIO, SEPTIEMBRE) for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); end for kk=10:30 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); end elseif k==11 %Mes de NOVIEMBRE(2 dígitos) for kk=1:9 ncompra_base=[compra_base num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); 133 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España save(ncompra,'C','-ascii'); end for kk=10:30 ncompra_base=[compra_base num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C=COMPRA_AC_ALM(C_BASE,x,reducc_AC,Excedente,h_cons_exc); save(ncompra,'C','-ascii'); end end end end toc Anexo D • Leer_Pmax_LS.m function MWh_Pmax = Leer_Pmax_LS(Compra_Base) [f,c]=size(Compra_Base); f=f-1;%La ultima unidad del fichero compra son la interconexión con Francia,Andorra,Marruecos a 180.3 c=c-6;%Info de la oferta(Fecha,hora,etc) %Las horas pico comunes en el horario de verano son entre las 13 y las 22 %Por tanto, la energía que se desplace será respecto al total de de la %energía ofertada a 180.3 en este tramo del día h_pico_ini=13; h_pico_fin=22; t_ini=3+(h_pico_ini-1)*50; t_fin=3+(h_pico_fin-1)*50; MWh_Pmax=0; for j=1:f for h=t_ini:2:(t_fin+48) if Compra_Base(j,h)==180.3 MWh_Pmax=MWh_Pmax+Compra_Base(j,h+1); end end end end • COMPRA_LS.m unction [COMPRA_LS]=COMPRA_LS(COMPRA_BASE,h_anadir_LS,h_reducc_LS,h_MWh_Pmax) COMPRA_BASE_aux=COMPRA_BASE; [f,~]=size(COMPRA_BASE_aux); f=f-1; for i=h_reducc_LS %solamente en las horas que se reduce carga col=3+(i-1)*50; reducc_h=h_MWh_Pmax; for j=1:f %recorre todas las filas if reducc_h ~= 0 %que haya algo que elimianar de LS if COMPRA_BASE_aux(j,col)==180.3 && COMPRA_BASE_aux(j,1)==1 %que haga una unica oferta en el primer tramo a 180.3 if COMPRA_BASE_aux(j,col+2:col+46)==0 if COMPRA_BASE_aux(j,col+1)>=reducc_h COMPRA_BASE_aux(j,col+1)=COMPRA_BASE_aux(j,col+1)-reducc_h; reducc_h=0; else reducc_h=reducc_h-COMPRA_BASE_aux(j,col+1); COMPRA_BASE_aux(j,col)=0; COMPRA_BASE_aux(j,col+1)=0; end end end end end Anexos 134 end • Anio17_LS.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % FICHEROS VENTA COMPRA ATC PARA LOAD SHIFTING % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tic %% Datos de partida (por orden de entrada en la funcion) anio=2017; %Año que analizamos. Asegurarnos de que tenemos todos los ficheros del año que queremos crear %Nombre asignado a los ficheros de las ventas compra_base='COMPRA_2017'; %%Para cada escenario de estudio XX sera un numero diferente compra='COMPRA_LS_6_2017'; h_anadir_LS=[1 2 3 24]; %%horas en las que añado carga h_reducir_LS=[19 20 21 22]; %% horas en las que quito carga X=6; %Tanto porciento de desplazamiento de carga [~,num_h]=size(h_reducir_LS); %% LÓGICA DE EJECUCIÓN %Diferenciación de los nombres según el dia del año for k=1:12 if k==1||k==3||k==5||k==7||k==8||k==10||k==12 %Meses con 31 dias if k==1||k==3||k==5||k==7||k==8 %Meses de 31 dias de 1 digito (ENERO, MARZO, MAYO, JULIO, AGOSTO) for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end for kk=10:31 if k==3 && kk==26 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra23(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); else ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end end elseif k==10||k==12 %Meses de 31 dias de OCTUBRE Y DICIEMBRE(2 dígitos) for kk=1:9 ncompra_base=[compra_base num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); 135 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España save(ncompra,'C','-ascii'); end for kk=10:31 if (k==10 && kk==30)||(k==10 && kk==31) kk=kk+1; elseif k==10 && kk==29 ncompra_base=[compra_base num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra25(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); else ncompra_base=[compra_base num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end end end elseif k==2 %Mes de FEBRERO 28 dias for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end for kk=10:28 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; hh_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end elseif k==4||k==6||k==9||k==11 %Meses con 30 Dias if k==4||k==6||k==9 %Meses con 30 Dias de 1 digito (ABRIL, JUNIO, SEPTIEMBRE) for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end for kk=10:30 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; Anexos 136 h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end elseif k==11 %Mes de NOVIEMBRE(2 dígitos) for kk=1:9 ncompra_base=[compra_base num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas a partes iguales C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end for kk=10:30 ncompra_base=[compra_base num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); MWh_Pmax=Leer_Pmax_LS(C_BASE); MWh_LS=(X/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en tres horas C=COMPRA_LS(C_BASE,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end end end end toc Anexo E • Anio17_LS_AC_1.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % FICHEROS COMPRA PARA AUTOCONUSMO+LOAD SHIFT NORMAL % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tic %% Datos de partida (por orden de entrada en la funcion) anio=2017; %Año que analizamos. Asegurarnos de que tenemos todos los ficheros del año que queremos crear %Nombre asignado a los ficheros de las ventas compra_base='COMPRA_2017'; %%COMPRA DEL CASO BASE compra='COMPRA_AC7LS15_1_2017';%X será % de LS y % de AC h_anadir_LS=[1 2 3 24]; %%horas en las que añado carga h_reducir_LS=[19 20 21 22]; %% horas en las que quito carga X_LS=1.5; %Tanto por ciento de desplazamiento de carga X_AC=7;%%Tanto por ciento de autoconsumo [~,num_h]=size(h_reducir_LS); PERF_GEN_EST=load('PERF_GEN_EST.txt'); %% LÓGICA DE EJECUCIÓN %Diferenciación de los nombres según el dia del año for k=1:12 if k==1||k==2||k==12 Perf_est=load('PERF_MED_INV_2017.txt'); Perf_dem=Perf_est(:,3); Perf_gen=PERF_GEN_EST(:,5); [reducc_AC,~]=Extrapola(Perf_gen,Perf_dem,X_AC); elseif k==3||k==4||k==5 137 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España Perf_est=load('PERF_MED_PRIM_2017.txt'); Perf_dem=Perf_est(:,3); Perf_gen=PERF_GEN_EST(:,2); [reducc_AC,~]=Extrapola(Perf_gen,Perf_dem,X_AC); elseif k==6||k==7||k==8 Perf_est=load('PERF_MED_VER_2017.txt'); Perf_dem=Perf_est(:,3); Perf_gen=PERF_GEN_EST(:,3); [reducc_AC,~]=Extrapola(Perf_gen,Perf_dem,X_AC); else Perf_est=load('PERF_MED_OTO_2017.txt'); Perf_dem=Perf_est(:,3); Perf_gen=PERF_GEN_EST(:,4); [reducc_AC,~]=Extrapola(Perf_gen,Perf_dem,X_AC); end if k==1||k==3||k==5||k==7||k==8||k==10||k==12 %Meses con 31 dias if k==1||k==3||k==5||k==7||k==8 %Meses de 31 dias de 1 digito (ENERO, MARZO, MAYO, JULIO, AGOSTO) for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C_AC=COMPRA_AC(C_BASE,x,reducc_AC); MWh_Pmax=Leer_Pmax_LS(C_AC); MWh_LS=(X_LS/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en cuatro horas C=COMPRA_LS(C_AC,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end for kk=10:31 if k==3 && kk==26 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra23(ncompra_base); x=23; C_AC=COMPRA_AC(C_BASE,x,reducc_AC); MWh_Pmax=Leer_Pmax_LS(C_AC); MWh_LS=(X_LS/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en cuatro horas C=COMPRA_LS(C_AC,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); else ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; ncompra=[compra num2str(0) num2str(k) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; C_AC=COMPRA_AC(C_BASE,x,reducc_AC); MWh_Pmax=Leer_Pmax_LS(C_AC); MWh_LS=(X_LS/100)*MWh_Pmax; h_MWh_LS=(1/num_h)*MWh_LS;%En el caso que movamos carga en cuatro horas C=COMPRA_LS(C_AC,h_anadir_LS,h_reducir_LS,h_MWh_LS); save(ncompra,'C','-ascii'); end end elseif k==10||k==12 %Meses de 31 dias de OCTUBRE Y DICIEMBRE(2 dígitos) for kk=1:9 ncompra_base=[compra_base num2str(k) num2str(0) num2str(kk) '.txt']; ncompra=[compra num2str(k) num2str(0) num2str(kk) '.txt']; [C_BASE]=import_compra(ncompra_base); x=24; Anexos 144 compra=load(ncompra_base); [f,c]=size(compra); c=c-6; for i=3:50:c %recorre de hora en hora auxh=0; for j=i:2:(i+48) for z=1:f if compra(z,j)==180.3 auxh=auxh+compra(z,j+1); end end end Of_Instr_H(cont)=auxh; cont=cont+1; end end for kk=10:31 if (k==10 && kk==29)||(k==10 && kk==30)||(k==10 && kk==31) kk=kk+1; else ncompra_base=[compra_base num2str(k) num2str(kk) '.txt']; compra=load(ncompra_base); [f,c]=size(compra); c=c-6; for i=3:50:c %recorre de hora en hora auxh=0; for j=i:2:(i+48) for z=1:f if compra(z,j)==180.3 auxh=auxh+compra(z,j+1); end end end Of_Instr_H(cont)=auxh; cont=cont+1; end end end end elseif k==2 %Mes de FEBRERO 28 dias for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; compra=load(ncompra_base); [f,c]=size(compra); c=c-6; for i=3:50:c %recorre de hora en hora auxh=0; for j=i:2:(i+48) for z=1:f if compra(z,j)==180.3 auxh=auxh+compra(z,j+1); end end end Of_Instr_H(cont)=auxh; cont=cont+1; end end for kk=10:28 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; compra=load(ncompra_base); [f,c]=size(compra); c=c-6; for i=3:50:c %recorre de hora en hora auxh=0; for j=i:2:(i+48) for z=1:f if compra(z,j)==180.3 auxh=auxh+compra(z,j+1); end end 145 Análisis de Situaciones Futuras de Generación y Consumo en el Mercado Diario de Producción de Energía Eléctrica en España end Of_Instr_H(cont)=auxh; cont=cont+1; end end elseif k==4||k==6||k==9||k==11 %Meses con 30 Dias if k==4||k==6||k==9 %Meses con 30 Dias de 1 digito (ABRIL, JUNIO, SEPTIEMBRE) for kk=1:9 ncompra_base=[compra_base num2str(0) num2str(k) num2str(0) num2str(kk) '.txt']; compra=load(ncompra_base); [f,c]=size(compra); c=c-6; for i=3:50:c %recorre de hora en hora auxh=0; for j=i:2:(i+48) for z=1:f if compra(z,j)==180.3 auxh=auxh+compra(z,j+1); end end end Of_Instr_H(cont)=auxh; cont=cont+1; end end for kk=10:30 ncompra_base=[compra_base num2str(0) num2str(k) num2str(kk) '.txt']; compra=load(ncompra_base); [f,c]=size(compra); c=c-6; for i=3:50:c %recorre de hora en hora auxh=0; for j=i:2:(i+48) for z=1:f if compra(z,j)==180.3 auxh=auxh+compra(z,j+1); end end end Of_Instr_H(cont)=auxh; cont=cont+1; end end elseif k==11 %Mes de NOVIEMBRE(2 dígitos) for kk=1:9 ncompra_base=[compra_base num2str(k) num2str(0) num2str(kk) '.txt']; compra=load(ncompra_base); [f,c]=size(compra); c=c-6; for i=3:50:c %recorre de hora en hora auxh=0; for j=i:2:(i+48) for z=1:f if compra(z,j)==180.3 auxh=auxh+compra(z,j+1); end end end Of_Instr_H(cont)=auxh; cont=cont+1; end end for kk=10:30 ncompra_base=[compra_base num2str(k) num2str(kk) '.txt']; compra=load(ncompra_base); Anexos 146 [f,c]=size(compra); c=c-6; for i=3:50:c %recorre de hora en hora auxh=0; for j=i:2:(i+48) for z=1:f if compra(z,j)==180.3 auxh=auxh+compra(z,j+1); end end end Of_Instr_H(cont)=auxh; cont=cont+1; end end end end end tr=Of_Instr_H'; save('Of_Instr_h.txt','tr','-ascii'); toc