• No se han encontrado resultados

Implementación de red neuronal para pronóstico de precio en Bolsa de la Energía Eléctrica en Colombia en un aplicativo web

N/A
N/A
Protected

Academic year: 2020

Share "Implementación de red neuronal para pronóstico de precio en Bolsa de la Energía Eléctrica en Colombia en un aplicativo web"

Copied!
54
0
0

Texto completo

(1)

PROYECTO FIN DE CARRERA

Presentado a

LA UNIVERSIDAD DE LOS ANDES

FACULTAD DE INGENIERÍA

DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

Para obtener el título de

INGENIERO ELÉCTRICO (ELECTRÓNICO)

por

Johan Sebastián Velásquez Rojas

Edgar Santiago García Suarez

IMPLEMENTACIÓN DE RED NEURONAL PARA PRONÓSTICO DE

PRECIO EN BOLSA DE LA ENERGÍA ELÉCTRICA EN COLOMBIA

EN UN APLICATIVO WEB

Sustentado el 11 de diciembre de 2015:

- Asesor: Fernando Lozano, Profesor Asociado, Universidad de Los Andes

- Co Asesor: Fernando Jiménez, Profesor Asociado, Universidad de Los Andes - Jurados : Johann Osma, Profesor Asociado, Universidad de Los Andes

(2)

CONTENIDO

Dedicatoria

... 3

1.

Generalidades del Proyecto

... 4

1.1

Introducción ... 4

1.2

Justificación ... 4

2.

Objetivos

... 5

2.1

Objetivo General ... 5

2.2

Objetivos Específicos ... 5

3.

Alcance y productos finales

... 5

4.

Marco Teórico y Conceptual e Histórico

... 6

4.1

Marco Teórico y Conceptual ... 6

4.1.1

La Bolsa... 6

4.1.2

La Bolsa de energía ... 6

4.1.3

Modelo de mercado ... 6

4.1.4

Determinación del precio de la energía en Colombia ... 7

4.1.5

Series financieras... 10

4.1.6

Modelos de predicción de series financieras ... 10

4.1.7.1

Redes Neuronales Artificiales ... 11

4.1.7.2

Redes Perceptrón Multicapa ... 13

4.1.7.3

Algoritmo de Backpropagation ... 13

4.1.7.4

Algoritmo de Levenberg-Marquardt ... 14

4.1.8

Servidor ... 15

4.1.9

Sistema de procesamiento de transacciones ... 15

4.1.10

Servicio Web ... 15

4.1.11

Diseño MVC ... 15

4.2

Marco Histórico ... 16

5

Definición y especificación del trabajo

... 16

5.1

Definición ... 16

5.2

Especificaciones ... 17

6

Metodología del trabajo ... 17

6.1

Búsqueda de información ... 18

7

Trabajo realizado ... 22

7.1

Búsqueda del modelo de red neuronal ... 22

7.1.1

Pre procesamiento ... 22

7.1.2

Algoritmos de entrenamiento ... 24

7.1.3

Variación de Neuronas: ... 25

7.1.3.1

Variación de Neuronas en una Capa escondida: ... 26

7.1.3.2

Caso en variables alternativas... 28

7.1.3.3

Variación de Neuronas en dos Capas escondidas ... 30

7.2

Aplicativo web ... 32

7.2.1

Base de datos ... 32

7.2.2

Modelo ... 33

7.2.1

Clases entidad (JPA) ... 33

7.2.1.2

Session Beans ... 34

(3)

7.2.1.2.2 RedEJB: ... 36

7.2.1.3

Implementación de Red Neuronal: ... 37

7.2.3

Controlador ... 38

7.2.4

Vista ... 41

7.2.4.1

Responsive Design ... 41

7.2.5

Modelos de Redes almacenados en Servidor ... 41

7.2.6

Entrenamiento de nuevas redes (Encog Core 3.3.0 API) ... 42

7.2.6.1

Pre procesamiento y post procesamiento de los datos ... 43

7.2.6.2

Tipos de Entrenamiento ... 43

7.2.7

Persistencia de los modelos ... 44

7.2.8

Uso de los modelos para el pronóstico del precio de bolsa de la Energía 44

8

Discusión ... 47

9

Conclusiones ... 47

10

Referencias ... 48

(4)

Dedicatoria

A Dios, a mi madre, a Guillermo, a mi hermana, a César Trujillo, a Cristian Zambrano, a Ciro Cendales, y a mis amigos por estar a mi lado en todo este proyecto llamado vida. Y a mi padre que sigue vivo en sus enseñanzas y en mi memoria.

Johan Velásquez Rojas

A Dios, quien guía cada decisión de mi vida. A mis padres que se han esforzado para ver mis sueños realidad, a ti hermana por escucharme y nunca dejarme solo. A mis amigos por hacer de este camino, uno mucho más feliz. Finalmente a todas las neuronas que inspiraron y resolvieron este objetivo.

(5)

1.

Generalidades del Proyecto

1.1

Introducción

En el año 1995 se creó la bolsa de energía en Colombia, como un medio para establecer el precio de mercado de la energía. Dicho precio varía dinámicamente debido a que los generadores realizan sus ofertas en la bolsa de energía colombiana de acuerdo a su propia disponibilidad, donde compiten con el fin de atender la demanda del Sistema interconectado nacional. A partir del precio de bolsa se pagan todas las ventas realizadas por los generadores [1].

A partir de la energía que pueden producir en sus plantas las empresas generadoras de energía ofrecen un precio mínimo que depende de sus costos de producción y la tecnología de generación que se emplee. Sin embargo, los agentes no podrán decidir la cantidad generada por cada uno de sus recursos, ya que ésta se calcula en base a un despacho de mínimo costo por parte del administrador del mercado, XM Expertos en Mercados S.A., conforme a la regulación vigente emitida por la Comisión de Regulación de Energía y Gas [2].

La generación de energía eléctrica en Colombia se realiza en un 70% a través de recursos hídricos. Esto hace que el precio en bolsa de la energía se vea afectado en gran medida por las condiciones climatológicas y en especial por las precipitaciones, que en últimas definen el funcionamiento de las plantas hidroeléctricas [3].

1.2

Justificación

De lo anterior, surge una incertidumbre sobre el precio de la energía en el Mercado de Energía Mayorista ya sea por el resultado de la interacción entre los compradores y vendedores, y por el hecho de que el sistema energético es bastante dependiente del recurso hidráulico y por consiguiente de la misma variación de los aportes hídricos. [4] Por esta razón se propone un modelo que sea capaz de analizar las diferentes variables de las que depende el precio de la energía y ser un buen estimador en el pronóstico del precio, por lo que para este proyecto se propone el uso de una red neuronal artificial.

En este sentido, se pretende evaluar la aplicabilidad de las Redes Neuronales como método para generar pronósticos. Las redes neuronales derivan su poder computacional de su estructura distribuida paralelamente y de su habilidad para aprender y generalizar. Estas dos características de procesamiento de información hacen posible que las Redes Neuronales resuelvan problemas altamente complejos, de aquí que han demostrado su efectividad en cantidades de disciplinas [5]. Por esta razón, se pretende estudiar la capacidad de las redes en la predicción del comportamiento de las acciones en el mercado energético en Colombia, y comprobar si se obtendrían beneficios a partir de decisiones de inversión en base a las predicciones obtenidas.

(6)

Por las anteriores razones, en este proyecto se propone la implementación de un aplicativo web que permita ver el comportamiento y las predicciones generadas por la red neuronal en tiempo real. Para esto se implementará un servidor que sea capaz de almacenar los datos de las variables más significativas que influyen en la determinación del precio de la energía, para poder realizar el análisis apropiado del precio. Adicionalmente, el servidor tendrá la red neuronal artificial en operación y a partir de los datos almacenados esta será capaz de realizar las predicciones del comportamiento del precio de la energía. Finalmente mediante la capa frontal del aplicativo web, se mostrarán los comportamientos del mercado de la energía y las predicciones que se han generado por la red. Ahora bien, teniendo en cuenta que hoy en día las páginas web se visualizan en multitud de dispositivos como Tabletas, teléfonos inteligentes, libros electrónicos, pc, etcétera. Se desea realizar un diseño web adaptativo (Responsive web design) para obtener una visualización adecuada en cualquier dispositivo.

2.

Objetivos

2.1

Objetivo General

Desarrollar un aplicativo web que sea capaz de estimar el precio de bolsa del mercado de energía eléctrica en Colombia haciendo uso de una red neuronal.

2.2

Objetivos Específicos

 Estudio de redes neuronales artificiales e implementación de estas en un sistema de pronóstico del precio de mercado de la energía eléctrica en Colombia.

 Entrenamiento de redes neuronales haciendo uso de las herramientas de optimización de Matlab.

 Generar un predictor del precio bursátil de energía a partir de la comparación de los resultados obtenidos del aprendizaje de la red variando los parámetros que la componen.

 Implementación de red neuronal en lenguaje Java.

 Diseño front end: Diseño del aplicativo web basado en una arquitectura MVC.  Diseño adaptativo para la aplicación web (Responsive Web Design).

 Diseño back end: implementación de componente lógico del aplicativo basado en EJBs.  Implementación de componente de persistencia basado en un modelo relacional de

base de datos.

 Integración de la red neuronal implementada en el aplicativo web.

3.

Alcance y productos finales

En el presente proyecto se adquiere el compromiso de generar un aplicativo web capaz de pronosticar el comportamiento del precio de mercado de la energía eléctrica en Colombia. Se

(7)

espera tener un aplicativo capaz de predecir con la mayor precisión posible el comportamiento del precio con el fin de que un usuario final pueda obtener beneficios al invertir en la bolsa, sin correr riesgos demasiado elevados.

De esta manera se tendrán como entregables del proyecto: La aplicación web predictora de comportamientos del precio de la energía en el mercado utilizando la técnica que se muestra en el presente documento; y la entrega del documento de las pruebas realizadas a través del proyecto que la permitieron generar.

4.

Marco Teórico y Conceptual e Histórico

4.1

Marco Teórico y Conceptual

4.1.1

La Bolsa

Como un mercado, es un lugar en el que interactúan demandantes y ofertantes de un bien con el fin de comercializarlo. En el caso de la Bolsa, los bienes son activos financieros. Los participantes en el mercado de la Bolsa son: demandantes de capital (empresas que ponen a la venta sus activos financieros para ganar capital), oferentes de capital o inversores y los intermediarios (agentes autorizados para negociar la compra y venta de activos financieros). Las acciones son los activos financieros por excelencia.

4.1.2

La Bolsa de energía

En Colombia la bolsa de energía es un lugar donde los Generadores compiten con sus ofertas de precios para la atención de la demanda del Sistema Interconectado Nacional. De esta manera la demanda es atendida al mejor precio dado por la competencia.

4.1.3

Modelo de mercado

La energía es transada en activos derivados, como futuros o forwards. Los contratos forward son over the counter, es decir, son acuerdos comerciales que realizan generadores, comercializadores y usuarios no regulados1 por fuera de la bolsa, para atender parcial o

totalmente su demanda de energía. La adjudicación de estos contratos está dada por convocatoria pública u oferta mercantil y el precio del mismo es fijado entre las partes. La

1 En el mercado colombiano los usuarios no regulados son aquellas personas naturales o jurídicas cuya

(8)

administración de estos contratos es efectuada por el ASIC . Por otra parte, se tiene el mercado spot-day ahead: diariamente los generadores presentan al CND3 una oferta de precio para las

veinticuatro horas del día, expresada en $/MWh, junto con la disponibilidad de sus unidades de generación, en MW. El CND recopila y organiza las ofertas en orden de mérito4 hasta cubrir la

demanda horaria esperada para el día siguiente. El precio de oferta del último recurso de generación, empleado para cubrir la demanda horaria, es el precio de bolsa, bajo el cual el ASIC liquida todas las transacciones del mercado spot. Todos los generadores cuyo precio de oferta sea menor o igual al precio de bolsa, son programados por el CND para el despacho de energía del día siguiente. Durante el día de operación, el programa de despacho está sujeto a ajustes que son reportados y asignados por el CND, a los generadores correspondientes, sin efectuar ninguna transacción adicional a través de la bolsa. Y finalmente Mercado financiero-derivados de energía: contratos de futuros de liquidación financiera cuyo activo subyacente es el precio spot horario [6].

Figura 1. Formación del precio de bolsa

Fuente: XM Compañía de Expertos de Mercado S.A 2010

4.1.4

Determinación del precio de la energía en Colombia

EI precio en la Bolsa de Energía representa un precio único para el sistema interconectado en cada periodo horario y corresponde al precio de oferta incremental más alto de las plantas flexibles programadas en el despacho ideal para la hora de liquidación [1].

2Administrador del Sistema de Intercambios Comerciales: registra, liquida, factura y cobra todas las

transacciones producto de los contratos de largo plazo y del mercado spot.

3Consejo Nacional de Despacho: planea, supervisa y controla la operación integrada de los recursos de

generación, interconexión y transmisión del Sistema Interconectado Nacional. Recibe las ofertas de generación, fija el precio spot horario y establece el programa de despacho.

4Las unidades son llamadas a operar en base a su oferta, siendo las más baratas las llamadas a producir

(9)

La Bolsa de Energía es una figura comercial tipo subasta en sobre cerrado, la cual toma las ofertas de precio y declaración de disponibilidad hora a hora de cada recurso de generación y establece un programa diario de generaciones, igualmente, hora a hora. Al inicio de todos los días, en forma confidencial, cada agente generador hace una oferta de precio (en $/MWh) y la declaración de disponibilidad (en MW) de cada uno de sus recursos de generación. Se presenta una única oferta para las 24 horas del día siguiente. El registro histórico de estas ofertas y la declaración de disponibilidad se encuentran para consulta pública [7].

Figura 2. Proceso para el cálculo del despacho ideal

Fuente: Compañía de Expertos en Mercados (XM).

Tal como se observa en la Figura 2, el Centro Nacional de Despacho (CND) recibe las ofertas de los generadores e inicia el pre despacho de energía basado en las proyecciones de demanda construidas a partir de: datos históricos, modelos de planeación y estudios dados por la Unidad de Planeación Minero Energética (UPME), sin considerar las restricciones del sistema; es decir, que no se toman en consideración los límites operativos de los elementos asociados al Sistema Interconectado Nacional (SIN) ni las indisponibilidades de los mismos no declaradas por los agentes. Posteriormente, se realiza el despacho de energía considerando las restricciones del sistema y se incorporan las curvas de oferta de los generadores y las inflexibilidades de los mismos, por lo tanto, se tienen en cuenta las curvas de operación de cada generador dependiendo de su estado anterior (frio, tibio, caliente), tanto para el arranque como para su parada [7].

Simultáneamente a la operación del sistema y debido a las contingencias que pueden presentarse, se realiza el redespacho de energía, el cual tiene como fin orientar la operación de la forma más económica posible. Finalmente, la información obtenida de la operación, del redespacho y de las inflexibilidades de los generadores, es empleada para realizar el cálculo del Precio de la Energía en Bolsa (Despacho Ideal), el cual realiza el cubrimiento de la demanda, despachando las generaciones obligadas: plantas inflexibles, en prueba, no despachadas centralmente, filo de agua y cogeneradores [6] (su valor de oferta no afecta el Precio de Bolsa).

Posteriormente, se despacha los generadores con los precios de oferta más bajos acorde con la disponibilidad comercial (cantidad de MW), hasta cubrir la demanda total. De esta forma, el Precio de Bolsa, es el precio de oferta del último recurso de generación no-inflexible requerido para atender la demanda real hora a hora (Gráfica 2); y es con este precio que se realiza la liquidación de las transacciones realizadas por los agentes (Cano 2004) [7].

(10)

Figura 3

Fuente: [7]

Teniendo clara la dinámica empleada para el cálculo del Precio de Bolsa, es importante resaltar que a pesar de considerar las limitantes del sistema durante todo el proceso, éstas finalmente no afectan el Precio de Bolsa. En consecuencia el valor calculado obedece, básicamente, al punto de equilibrio entre la demanda real y las ofertas de los agentes generadores, evaluada hora a hora [7].

El despacho ideal se simula para determinar un balance sin las restricciones eléctricas que vician el proceso comercial. Este despacho considera que las redes tienen capacidad de transporte ilimitada, convirtiéndose así en un juego comercial de oferta y demanda [7].

A partir de la figura 3, se podría inferir que los generadores con menores costos serían los que ofertarían a menor precio y, por ende, serían despachados completamente (caso de los recursos 1 y 2), mientras que, un generador que tenga mayores costos ofertaría a un precio mayor (caso de los recursos 3 y 4). Como se observa el recurso 4 no generaría toda su capacidad, puesto que, proveería energía hasta el punto en el cual se cubriera la demanda programada, determinando el precio de bolsa o marginal en ese momento, este tipo de generador se denomina generador marginal [7].

En un mercado libre los agentes pueden ofertar a un precio determinado con libre albedrío; sin embargo, el sistema regulatorio ha establecido algunos parámetros para orientar lo que se espera sea la oferta de cada generador. La regulación CREG 055 de 1994, emitida cuando se estaba comenzando el nuevo mercado de energía en Colombia, es un claro ejemplo de las señales dadas a los agentes que tomen la decisión de participar en el mercado [7].

De acuerdo con la resolución CREG 055 de 1994 Artículo 6 - Ofertas de precio en la bolsa de energía: Los precios a los cuales las empresas generadoras ofrecen diariamente al CND, deben reflejar los costos variables de generación en que esperan incurrir.

Para plantas Termoeléctricas:

(11)

(CSC) Costo de Suministro de Combustible [$/MWh] (CTC) Costo de Transporte de Combustible [$/MWh]

(COM) Costo de Operación y Mantenimiento [$/MWh]. Depende en gran medida del tipo de tecnología empleada gas natural, carbón y otros combustibles.

(CAP) Costo de Arranque-Parada [$/MWh]. Es el costo asociado a cada arranque-parada de cada unidad de generación.

(OCV) Otros Costos Variables [$/MWh]. Corresponden a los siguientes Costos Variables calculados por el ASIC, como: CEE

(CERE), FAZNI, Aportes Ley 99 de 1993 y Costo Unitario por Servicio de AGC proporcional a la Generación.

Para plantas hidroeléctricas:

Precio de oferta = costo de oportunidad (valor de agua) + COM + Utilidades

El costo de oportunidad hace referencia a la decisión de generar en el momento de la oferta, teniendo en cuenta la operación económica a mediano y largo plazo del Sistema Interconectado Nacional.

Las utilidades en ambos casos pueden estar incluidas dentro de los costos, proporcional al capital de cada uno de estos [1].

4.1.5

Series financieras

· Son procesos prácticamente aleatorios.

· Cambian sus propiedades estadísticas a lo largo del tiempo.

· Son series con elevado nivel de ruido, ya que existe una gran cantidad de aleatoriedad en las variaciones día a día.

· La aparición de técnicas de predicción pasa a ser parte del proceso a predecir, puesto que influirá en la toma de decisiones de los inversores.

La predicción de valores futuros de series financieras es un problema difícil, dado que debería tener en cuenta todos los parámetros que determinan las expectativas de los intervinientes en el mercado, y estos parámetros suelen ser de carácter psicológico e imposibles de cuantificar. Lo que sí es cierto es que muchas de las expectativas que genera el valor de una acción se deben a la información histórica que se conoce de ella [8].

4.1.6

Modelos de predicción de series financieras

Debido a inconvenientes que se tenían con los modelos lineales de predicción, se empezaron a desarrollar modelos de predicción no lineales. Los modelos de predicción no lineales que proporcionan mejores resultados son los que se desarrollan en el campo de las redes neuronales. Estos modelos tienen la capacidad de explorar de forma adaptativa una gran cantidad de modelos potenciales [9].

(12)

La experiencia de anteriores estudios indica que la utilización de redes neuronales incrementa la precisión en la predicción de series financieras. Por esto, este proyecto aplica las redes neuronales para realizar las predicciones de las cotizaciones. Es importante señalar que la utilización de redes neuronales tiene un inconveniente: se pierde la claridad de la que se disponía en los modelos lineales en cuanto a cuáles son los parámetros que determinan el modelo de predicción, y cómo cambia éste al variar aquellos.

4.1.7.1

Redes Neuronales Artificiales

Una Red Neuronal Artificial se define como un sistema computacional masivamente distribuido paralelamente (algoritmo, dispositivo u otro) que tiene la disposición natural de almacenar conocimiento experiencial y hacerlo disponible para su utilización. Busca principalmente asemeja al cerebro humano en dos aspectos:

1. EI conocimiento es adquirido por la red a través de un proceso de aprendizaje.

2. Las fuerzas de las conexiones entre neuronas conocidas como pesos sinápticos son utilizados para almacenar el conocimiento.

En general, consisten en una serie de unidades denominadas neuronas, conectadas entre sí. Cada neurona recibe un valor de entrada, el cual transforma según una función específica denominada función de activación. Dicha señal transformada pasa a ser la salida de la neurona. Las neuronas se conectan entre sí según una determinada arquitectura. Cada conexión tiene un determinado peso que pondera cada entrada a la neurona. De esta manera la entrada de cada neurona es la suma de las salidas de las neuronas conectadas a ella, multiplicadas por el peso de la respectiva conexión [10], [11]. La figura siguiente ilustra dicho concepto:

Figura 4. Esquema de funcionamiento de una neurona

Fuente: [10]

En este modelo, la neurona j recibe una serie de entradas 𝑥1, 𝑥2, … , 𝑥𝑛. Cada señal se multiplica por el peso asociado a su conexión 𝑤1, 𝑤2, … , 𝑤𝑛. Luego, se suman estas entradas ponderadas

(13)

y se les aplica la función de activación 𝐹(. ) para generar la señal de salida de la neurona j. Los valores de los pesos son ajustados durante la fase de aprendizaje.

Como se ha comentado anteriormente, estas neuronas están conectadas entre sí de acuerdo a una determinada arquitectura. Es decir, las neuronas se agrupan en distintas capas: una capa de entrada, otra de salida, y en el caso de existir, una o varias capas ocultas. La salida de cada neurona se propaga por igual por estas conexiones hasta las neuronas de destino. Cada conexión tiene un peso asociado que pondera el valor numérico de la señal que viaja por ésta. Así pues, una red de neuronas artificial puede verse como un grafo cuyos nodos tienen funcionamiento similar, los cuales propagan la información a través de las distintas conexiones [10]. De acuerdo al esquema de la figura 4 cada neurona j de la segunda capa generará una salida de valor:

𝑆2𝑗= 𝐹2𝑗(𝑋1 𝑊1𝑗)

Donde X1 es el vector de entradas de la capa 1 y W1j el vector de pesos correspondientes a las conexiones que van de todas las neuronas de la primera capa a la neurona j de la segunda capa. La función F2j es la función de activación de la neurona j de la segunda capa. Así con todas las neuronas de la segunda capa. Estas salidas son propagadas a las neuronas de la capa de salida [10], [11]. Estas neuronas generan las salidas de la red. Cada neurona i de la capa de salida generará una salida de valor:

𝑆𝑠𝑖 = 𝐹𝑠𝑖(𝑊2𝑖𝑆2 )

Donde 𝑊2𝑖 es el vector de pesos correspondientes a las conexiones que van de las neuronas de la segunda capa a la neurona i de la capa de salida, y 𝑆2 el vector de salidas de las neuronas de

la capa dos, que a su vez son entradas de las neuronas de la capa de salida [10], [11].

Figura 5. Esquema de la arquitectura de una red neuronal

Fuente: [10]

Por último hablar del aspecto más importante y delicado de redes neuronales, el aprendizaje. Las RNA son sistemas de aprendizaje basadas en datos que son utilizados como patrones. Por ello la capacidad de una red de resolver un problema está muy ligada a los patrones utilizados durante su fase de aprendizaje [10], [11].

(14)

El aprendizaje de una red neuronal consiste en hallar los valores precisos de los pesos de sus conexiones para que pueda resolver un determinado problema. El proceso general consiste en ir introduciendo una serie de datos patrón y ajustar los pesos siguiendo un determinado criterio. Los criterios que se van a utilizar en este proyecto se fundamentan en el error cometido por la red, lo que nos obliga a conocer la salida que se debería obtener para cada uno de ellos. Es lo que se conoce como entrenamiento supervisado. De esta manera, primero se introducen los patrones, se reajustan los pesos, posteriormente se comprueba si se ha cumplido un determinado criterio de convergencia, de no ser así se repite todo el proceso [10], [11].

4.1.7.2

Redes Perceptrón Multicapa

La arquitectura de este tipo de red se caracteriza porque tiene todas sus neuronas agrupadas en distintos niveles llamados capas. El primer nivel corresponde a la capa de entrada, que se encarga únicamente de propagar por el resto de la red las entradas recibidas. El último nivel es el de la capa de salida. Se encarga de proporcionar los valores de salida de la red. En las capas intermedias denominadas capas ocultas, se realiza un procesamiento no lineal de los patrones recibidos. Las conexiones del Perceptrón multicapa son hacia adelante. Generalmente todas las neuronas de un nivel se conectan con todas las neuronas de la capa inmediatamente posterior. A veces, dependiendo de la red, se encuentran conexiones de neuronas que no están en niveles consecutivos, o alguna de las conexiones entre dos neuronas de niveles consecutivos no existe, es decir, el peso asociado a dicha conexión es constante e igual a cero. Además, todas las neuronas de la red tienen un valor umbral asociado. Se suele tratar como una entrada cuyo valor es constante e igual a uno, y lo único que varía es el peso asociado a dicha conexión (que es el umbral realmente) [10], [11].

4.1.7.3

Algoritmo de Backpropagation

Este algoritmo es el algoritmo básico de aprendizaje que usa el Perceptrón multicapa. Es el algoritmo mediante el cual se van adaptando todos los parámetros de la red. El tipo de entrenamiento que sigue este tipo de red es supervisado [10], [11]. El aprendizaje de la red se plantea como un problema de minimización de una determinada función de error. En general se usa como función del error, el error medio cuadrático, es decir:

Donde s(n) es la salida patrón, y(n) la salida obtenida de la red, t el número de neuronas de salida y N el número de patrones. El problema es no lineal y como tal, el problema de minimización de la función error se resuelve por técnicas de optimización no lineales que se

(15)

basan en ajustar los parámetros siguiendo una determinada dirección. En este método, la dirección elegida es la negativa del gradiente de la función error [10], [11].

4.1.7.4

Algoritmo de Levenberg-Marquardt

Es una modificación del método de Newton que elimina el cálculo de la matriz Hessiana. Requiere mayor esfuerzo computacional que los métodos de descenso por el gradiente pero es mucho más rápido que éstos. De hecho es el algoritmo que Matlab utiliza por defecto para entrenar las redes neuronales [10], [11]. Como ya se comentó, el problema de actualización de los pesos se resuelve minimizando la función error (se utiliza el error medio cuadrático), es decir:

La función error se puede expresar de la siguiente forma:

Donde:

Así mismo, la matriz Hessiana vendrá dada por:

Por otro lado, si tenemos en cuenta que la magnitud del cambio de los pesos sinápticos viene dada por la expresión:

Donde si 𝑀(𝑤) = 𝐼 tenemos el método del descenso en la dirección del gradiente y si 𝑀(𝑤) = 𝐻−1(𝑤) nos encontramos con el método de Newton. En general, será más

conveniente llegar a un compromiso entre estos dos métodos. Para ello se toma 𝑀(𝑤) = [𝜇𝐼 + 𝐻(𝑊)]−1 [10], [11] . De esta manera la dirección del cambio de los pesos sinápticos

vendrá dado por:

Debido a la dificultad de evaluar la matriz Hessiana, evaluamos solamente su término de primer orden 𝐽(𝑤)𝑡𝐽(𝑤) , suponiendo así que el término 𝑆(𝑤) ≅ 0Nos encontramos entonces ante

el método de Levenberg-Maquardt. Se suele tomar µ=0.01. En este método el parámetro µ se incrementa o disminuye en cada paso:

- Si 𝐸(𝑤(𝑘 + 1)) ≤ 𝐸(𝑤(𝑘)) entonces el parámetro µ se divide por un determinado factor β. - Si ocurre lo contrario entonces se multiplica por el factor β [10], [11].

(16)

4.1.8

Servidor

El modelo cliente/servidor, la computación cliente/servidor, y la arquitectura cliente/servidor se refieren a un modelo de diseño pensado como aplicaciones que se ejecutan en una red de área local (LAN). Se puede describir esta interacción de manera que, el usuario solicita, y el servidor ejecuta las solicitudes de trabajo. Este servidor cuenta con memoria en la cual se van a escribir sus funciones y algoritmos y también se pueden almacenar la información usada en la comunicación.

4.1.9

Sistema de procesamiento de transacciones

Son diseñados para procesar peticiones de usuario a fin de obtener información de una base de datos, recibir peticiones para crear elementos en la base de datos. Todas las operaciones de una transacción tienen que ser completadas antes de que los cambios en la base de datos sean permanente. Para esto se deben definir las características ACID de la aplicación

4.1.10

Servicio Web

Los servicios Web son aplicaciones cliente y servidor que se comunican a través del protocolo HTTP sobre WWW (World Wide Web). Los servicios web proporcionan un medio estándar de interoperabilidad entre las aplicaciones de software que se ejecutan en una variedad de plataformas y marcos. Se caracterizan por su gran interoperabilidad y extensibilidad, así como sus descripciones máquina- procesable, gracias a la utilización de XML. Los servicios Web se pueden combinar de acuerdo al diseño para lograr operaciones complejas. El consumidor de servicios y el proveedor usan mensajes de uso profesional para intercambiar solicitudes de tipo request y response, esta información se da en forma de documentos auto-contenidos que permiten pocas suposiciones, sin importar la tecnología del receptor.

Los servicios web se ejecutan sin mantener estado. Una buena prueba es considerar si la interacción cliente-proveedor puede sobrevivir a un reinicio del servidor.

4.1.11

Diseño MVC

Modelo: representa los datos, y los comportamientos para acceso y actualizaciones de los mismos. El modelo es diseñado de acuerdo al servicio prestado por el aplicativo, en este caso el modelo representa toda la información de la red neuronal. En el modelo se encuentran todos los servicios CRUD (create, read, update, delete) para los respectivos datos.

Controlador: El controlador permite que las peticiones realizadas por el cliente en la capa front-end, en este caso la vista, sean ejecutadas en el modelo. Es decir, el controlador traduce las interacciones del usuario en acciones que el modelo debe ejecutar. Entre otras peticiones se encuentran el entrenamiento de la red neuronal de acuerdo a los parámetros seleccionados.

Vista: Esta capa hace visible el contenido de un modelo. Específicamente muestra los datos del modelo de acuerdo a la necesidad. En caso de haber cambios en el modelo, la vista se debe

(17)

actualizar. Esto se puede lograr mediante el uso de un modelo push, en el que la vista registra sus propios cambios que sirven de notificación para el modelo, o un modelo pull, en el que la vista realiza un llamado al modelo para recuperas los datos actuales. [12]

4.2

Marco Histórico

En Colombia se han realizado varios trabajos tomando variables como el precio de la electricidad y la demanda hora tras hora, el precio diario de los combustibles, el nivel diario de los embalses, la contribución diaria de los ríos a los embalses y el precio del gas semestral; nuevamente para el desarrollo de esta red se utilizó el algoritmo de retro propagación, sin embargo, para este caso se utilizó una función de transferencia sigmoidal en la oculta, y una función de transferencia lineal en la capa de salida [13]. El objetivo de este trabajo era proyectar el precio del día siguiente teniendo en cuenta tres escenarios diarios de demanda (alto, medio y bajo); el autor expone una clara relación inversa entre el precio de la energía eléctrica y el nivel de los embalses, además de comparar varios modelos para pronosticar el precio de la energía eléctrica. Los resultados obtenidos fueron satisfactorios para el pronóstico con escenario de un día. Al final propone hacer más comparaciones de los métodos más utilizados (es exhaustivo en los modelos existentes) para el pronóstico del precio de la energía eléctrica, teniendo en cuenta técnicas de optimización, usando sistemas expertos y control predictivo, además, realizar pronósticos para diferentes escenarios de tiempo [14].

5

Definición y especificación del trabajo

5.1 Definición

La negociación de la electricidad a través de contratos se constituye un mecanismo de mitigación del riesgo al que se ven sometidos los agentes del mercado de la energía. Por una parte, evitan que el comprador se vea sujeto a la volatilidad de los precios en el mercado de corto plazo, y, especialmente, a los precios excepcionalmente altos que se pueden registrar en dicho mercado. En otro sentido, estabilizan los ingresos del vendedor y lo protegen de precios excepcionalmente bajos.

Así, la predicción, o proyección, de los precios de la electricidad se vuelve un insumo fundamental que requieren los diferentes agentes para establecer sus políticas de comercialización, en donde se especifican las cantidades de energía vendida a través de cada uno de los mecanismos de negociación de acuerdo con las expectativas de precios. [15]

Ya que los agentes requieren la predicción de los precios de la electricidad como un insumo fundamental para realizar sus procesos decisorios, tanto operativos como estratégicos, y que las series de precios presentan características complejas que dificultan el desarrollo de modelos de predicción, se hace necesaria la investigación sobre esta problemática. [15]

(18)

Por las anteriores razones, se construye un aplicativo Web capaz de pronosticar los precios de bolsa de la energía, donde los vendedores y compradores serán los usuarios finales. Los usuarios serán capaces de ver el comportamiento histórico del precio de bolsa de la energía desde el año 2000, y el pronóstico de la red neuronal con una ventana temporal de tres años en el futuro. Dichos pronósticos se construyeron con una temporalidad diaria.

De esta manera cualquier persona que ingrese al aplicativo podrá ver un estimativo del precio de la energía diario hasta el año 2017.

5.2

Especificaciones

A continuación se presentan las especificaciones fundamentales para el desarrollo, y solución del problema planteado anteriormente:

1. La información manejada por el aplicativo debe persistir.

2. El aplicativo debe tener un alto desacoplamiento para futuras modificaciones. 3. La red neuronal implementada debe permitir todas las modificaciones de

parámetros y más de un algoritmo de entrenamiento.

4. El diseño del aplicativo debe ser agradable y fácil de usar para usuarios con o sin experiencia en redes neuronales.

5. El aplicativo web debe ofrecer información suficiente para el uso del mismo. 6. En el aplicativo web se debe poder entrenar la red neuronal cuando el usuario lo

desee y este debe poder observar los resultados para que realice su propio análisis. 7. El usuario debe poder identificar el pronóstico ofrecido por la red neuronal en una ventana de tiempo no superior a 3 años. Y debe observar datos muestreados diariamente.

6

Metodología del trabajo

Para llevar a cabo el objetivo de este proyecto, se realizó una división en etapas con el fin de cumplir los objetivos específicos en el transcurso del trabajo. A continuación se listan las etapas desarrolladas:

 Recolección de información bibliográfica.  Recolección de datos.

 Exploración de modelos de redes neuronales.  Diseño del aplicativo Web.

 Implementación del aplicativo

 Inclusión del mejor modelo encontrado en el aplicativo.

En las siguientes secciones de este documento se mostrará el desarrollo de las etapas mencionadas anteriormente durante este proyecto para generar el aplicativo Web capaz de pronosticar el precio de bolsa de la Energía.

(19)

6.1

Búsqueda de información

Para el desarrollo de este proyecto, se utilizaron variables relacionadas con el comportamiento y la formación del precio de la energía en Colombia. Para esto se buscó información en bibliografía referente al tema, por ejemplo en el artículo Modelo para el pronóstico del precio de la energía eléctrica en Colombia el autor se encarga de generar análisis estadísticos para ver la correlación de algunas variables con el precio de bolsa de la energía, y de esta manera seleccionarlas para su modelo. El artículo los presenta de la siguiente manera:

Análisis estadísticos preliminares indican que el IPC, la tasa de cambio real y el precio

internacional de combustibles (debido a que la generación de energía eléctrica en nuestro país es principalmente hidráulica), no afectan el precio de la energía eléctrica apreciablemente en el largo plazo, por el contrario, las variables que tienen un efecto importante sobre el precio del kilovatio/hora de energía son el PIB, la demanda de energía eléctrica y, por supuesto, el nivel de embalses. De hecho, al incluir todas las variables la bondad del ajuste es en promedio 35%, al incluir solo las tres variables mencionadas como relevantes, la bondad del ajuste disminuye solo en 20%, obteniendo una bondad del 29%. Lo que significa que la exclusión del IPC, TRC y el índice de consumo de combustible no afecta significativamente la variabilidad de los precios de la energía eléctrica [14].

Un análisis complementario utilizando la técnica de descomposición en valores singulares SVD, por sus siglas en inglés) mostró que la oferta real de electricidad también juega un papel importante y que la modelación del precio en función de la demanda, nivel de los embalses y oferta real de energía podría ser una alternativa sin afectar significativamente la bondad del ajuste [14].

De las anteriores variables mencionadas, se tuvo en cuenta para la generación del modelo de este proyecto la demanda de energía, la oferta a partir de la variable disponibilidad de energía, y el nivel de embalses en la variable aportes.

Con el fin de generar el pronóstico del precio de bolsa de la energía se utilizaron como datos de entrada las proyecciones realizadas por la UPME y por la compañía XM Expertos en Mercado para la demanda, disponibilidad, ENFICC y aportes [16], [17].

Para la disponibilidad se tuvo en cuenta el plan de expansión de referencia Generación – Transmisión 2014-2028, para la demanda la Proyección de Demanda de Energía Eléctrica y Potencia, ambos publicados por la Unidad de Planeación Minero Energética-UPME, y para los aportes se tuvo en cuenta las proyecciones a largo plazo de la compañía XM Expertos en mercado. A continuación se muestran los datos históricos de las variables de entrada utilizadas para nuestro modelo de red neuronal:

(20)

Figura 6. Variable de entrada demanda de potencia

Fuente: [10]

(21)

Figura 8. Variable de entrada demanda de energía

Figura 9. Variable de entrada ENFICC

Además de las anteriores variables, se debe considerar que el comportamiento de los precios se ve influenciado por la época del año. Las variables climatológicas como las lluvias afectan drásticamente el precio de la energía debido a que la producción de energía en Colombia se deriva mayoritariamente de las Hidroeléctricas. Por esta razón se debe considerar en la temporalidad los ciclos climáticos que se presentan, en especial los efectos del Niño y la Niña que afectan a este tipo de variables. Por estas razones se añaden dos variables más que simulan el ciclo del año a partir de su relación. Las variables cíclicas le darán a la red la capacidad de asociar los comportamientos del precio de la energía a través del año a partir de las influencias climatológicas. Las variables mencionadas se presentan a continuación:

(22)

Figura 10. Variable de entrada temporal T1 Y T2

Figura 11. Relación de las variables temporales T1 Y T2

Finalmente se presenta la variable de salida, el precio de bolsa de la energía, desde el año 2000 hasta el año 2014:

0 50 100 150 200 250 300 350

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

Variables temporales

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

T1

T2

(23)

Figura 12.Variable de salida precio de bolsa de la energía

Todas estas variables tienen una temporalidad diaria. Las variables de entrada diferentes de las temporales fueron tomadas mensualmente, pero los datos fueron interpolados linealmente para tener la temporalidad diaria.

7

Trabajo realizado

Una vez adquiridos los datos para generar el modelo, se inicia el proceso de exploración del mejor modelo de Red neuronal para pronosticar el precio de bolsa de la energía. En esta sección se muestra el trabajo realizado para encontrar el modelo, y el proceso de diseño e implementación del aplicativo Web.

7.1

Búsqueda del modelo de red neuronal

Antes de llevar a cabo la implementación de la red neuronal, las pruebas correspondientes al entrenamiento, rendimiento y funcionamiento de la red fueron realizadas a través del toolbox Neural Networks de Matlab.

Con el fin de establecer el mejor modelo para implementar la red FeedFoorward se realizaron diferentes variaciones de algoritmos de pre procesamiento, entrenamiento de la red y validación del rendimiento a partir de funciones que provee el toolbox.

7.1.1

Pre procesamiento

Uno de los primeros pasos que deben llevar a cabo en todo problema de Machine Learning es el uso de técnicas de pre procesamiento sobre los datos originales. A partir de una buena preparación y escogencia de los datos se puede realizar un análisis más consistente del problema.

(24)

El primer método realizado fue la validación de la correspondiente relación entre cada una de las variables de entrada y el precio de la energía a partir de la variación del porcentaje de error de entrenamiento en el caso en que se omitía la correspondiente variable al entrenar la red. De este procedimiento se observó que las variables que influían más sobre el comportamiento de la red son los ciclos temporales y los aportes hídricos.

A partir de esta etapa, se utilizaron dos métodos que provee el toolbox de Matlab:

 Normalización de los datos (mapminmax): Este método se encarga de mapear los datos a un valor entre -1 y 1 tomando los valores mínimo y máximo, alrededor de la media de la variable.

 Eliminación de filas repetidas (removeconstantrows): Este método se encarga de eliminar filas redundantes entre los datos de entrada y los de salida.

El hecho de normalizar los datos es de gran importancia para este problema, ya que la gran magnitud de algunas entradas puede afectar la función de transferencia en las neuronas. Este mismo procedimiento se llevó a cabo sobre el vector de precios de la energía, porque se observó una mayor precisión a la salida de la red. Por esta razón, también se utilizó la función de des normalización de la señal sobre la salida.

El último método utilizado fue el relacionamiento de las variables de energía y potencia. Para poder diferenciar estas variables de las entradas anteriores, se llamaran en adelante variables alternativas. Las variables alternativas se generaron de la siguiente manera:  VA1 = Aportes de energía/ Demanda de energía.

 VA2 = Disponibilidad de potencia/ Demanda de potencia.  VA3 = ENFICC/Demanda de energía.

Además de estas variables, se incluyen el precio del gas y las variables de temporalidad cíclica mensual. A continuación se presentan las entradas alternativas:

(25)

Figura 14. Variable de entrada alternativas Disponibilidad/demanda de potencia

Figura 15. Variable de entrada alternativas ENFICC/demanda de energía

7.1.2

Algoritmos de entrenamiento

Durante el desarrollo del proyecto se probaron diferentes algoritmos de entrenamiento sobre la red neuronal, entre los que se destacan: descenso de gradiente con momentum, Scaled conjugate gradient Backpropagation, BFGS quasi-Newton Backpropagation, Resilient Backpropagation y Levenberg-Marquardt Backpropagation. Aunque cada uno tiene sus ventajas y desventajas frente a los demás algoritmos, con fines prácticos se utilizó en

(26)

general el algoritmo de Levenberg-Marquardt. El Toolbox refiere a este algoritmo, en su documentación, como el más rápido a menudo, y lo recomienda como primera opción de aprendizaje supervisado, aunque en ocasiones requiere más memoria que otros algoritmos.

En esta etapa, se utilizó la propiedad del toolbox de inicializar los pesos aleatoriamente, hecho que puede llevar a encontrar mejores soluciones que si se fijaran por parte del usuario. Por esta razón un mismo algoritmo de entrenamiento puede variar en cuanto a la respuesta obtenida a partir del método de optimización utilizado sobre Backpropagation cada vez que se lleve a cabo el entrenamiento.

Para comprobar el correcto desempeño de una red neuronal, el toolbox de Matlab provee la función “dividerand” capaz de dividir los datos aleatoriamente, de manera que se pueda separar una porción de los datos para el entrenamiento de la red, y se pueda estimar el error de generalización del modelo con el grupo de datos restante. Aunque se varió la proporción de datos de entrenamiento y de validación durante el proyecto, los resultados que se muestran en esta sección se obtuvieron tomando proporciones de 80 por ciento de los datos para entrenamiento, y el 20 por ciento restante para validación.

Finalmente, hay que resaltar que los algoritmos de aprendizaje buscan el punto óptimo a partir de la función de error que se declare en el toolbox al momento de correr el algoritmo. De esta manera se tienen varias funciones de error, a partir de las cuales Matlab evalúa el rendimiento de la red neuronal implementada. Entre estos algoritmos se utilizará principalmente la función de error cuadrática media normalizada (MSE). Como el nivel de error se mide a partir de la diferencia entre los valores de las etiquetas de salida del precio de la energía y la respuesta de la red neuronal, dicho error estima la cantidad de pesos colombianos en promedio que la red falla respecto al valor real.

A partir de las anteriores consideraciones se muestran a continuación los diferentes procedimientos que se llevaron a cabo para encontrar el mejor modelo de red Feed Forward para solucionar este problema.

7.1.3

Variación de Neuronas:

El protocolo para este tipo de problemas es variar la cantidad de neuronas en una capa y luego variar la cantidad de neuronas en dos capas. Teniendo en cuenta que siendo M el número de neuronas, dicho parámetro controla el número de parámetros (pesos y bias) en la red, por lo que podríamos esperar la máxima verosimilitud estableciendo un valor óptimo de M que ofrezca el mejor rendimiento de generalización. Este valor corresponde al equilibrio óptimo entre under-fitting y over-fitting. [18]

Para realizar este procedimiento se tuvieron varias consideraciones además de las mencionadas anteriormente. Con el fin de evitar que el entrenamiento de la red llevara a un sobre ajuste de los datos, el algoritmo de entrenamiento se detenía cada vez que el error

(27)

de entrenamiento superaba en una proporción del 15 % al de validación. De esta manera se aseguró en cierto modo la regularización para encontrar el modelo que mejor resolviera el problema descrito en este proyecto.

Como se mencionó anteriormente, cada vez que se lleve a cabo el entrenamiento de la red se pueden obtener diferentes resultados así se tengan los mismos parámetros debido a que los pesos y offset de las neuronas se inicializan aleatoriamente. Por esta razón se implementó un algoritmo que fuera capaz de variar el número M de neuronas en las capas escondidas de la red y que además para cada número de neuronas M realizara el entrenamiento N cantidad de veces. Dicho algoritmo guardaba la red con menor error de validación que iba encontrando en sus iteraciones, y a la vez generaba una matriz con el valor del error MSE tanto de entrenamiento como de validación para cada iteración.

7.1.3.1

Variación de Neuronas en una Capa escondida:

Con el algoritmo mencionado anteriormente, se establecieron M = 40 neuronas y N = 10 iteraciones por cada número de neuronas. Las tablas que contienen las matrices dadas por el algoritmo se encuentran en el Anexo. A partir de los resultados obtenidos se construye la siguiente gráfica a partir de los errores de validación mínimos para cada número de neuronas y su correspondiente error de entrenamiento

Figura 16. Comportamiento del error a partir del número de neuronas de la red.

De la anterior gráfica se puede observar que mientras haya un método de parada rápida en el algoritmo de entrenamiento, para evitar que la red se sobre ajuste a estos datos, se logra disminuir el error de validación casi en la misma proporción con que el error de entrenamiento disminuye. Es de esperarse que el error de entrenamiento se encuentre a partir de cierta cantidad de neuronas bajo el error de validación ya que se empieza a tener

(28)

sobre ajuste precisamente a partir del aumento de neuronas porque la dimensión del algoritmo aumenta. Para este caso específico se tuvo que a partir de 20 neuronas se llegaba a un sobre ajuste rápido en los datos. Para este caso se obtuvo el siguiente resultado:

Figura 17. Resultado obtenido para una red de una capa escondida con 20 neuronas.

La gráfica superior muestra el histórico de precios, y la inferior muestra los precios obtenidos por la red para el caso en que se sobre ajusta la red tomando 70 por ciento de los datos para entrenarla y el 30 por ciento restante para validación. Es de esperar que ambas gráficas no deben ser idénticas, puesto que las zonas en que varía una de la otra son las zonas en que se encuentran los puntos de validación.

Para este caso se muestra el comportamiento del algoritmo de entrenamiento, para ver más de cerca el funcionamiento del algoritmo Backpropagation de Levenberg-Marquardt:

Figura 18. Visualización de la magnitud del gradiente y la tasa de aprendizaje en el algoritmo de entrenamiento de Levenberg-Marquardt.

Como se mencionaba anteriormente, en este caso no se utilizó el método de parada temprana del algoritmo, sino que se utilizó como parámetro el número de iteraciones, de esta manera se

(29)

obtuvo el siguiente comportamiento para los errores de entrenamiento y validación (Train y Test respectivamente en la gráfica):

Figura 19. Errores de entrenamiento y validación en el algoritmo de entrenamiento

De las anteriores dos gráficas se pueden observar varios hechos. Por una parte se aprecia el funcionamiento del algoritmo de entrenamiento que varía la tasa de aprendizaje de acuerdo con el comportamiento del gradiente. Los valores de aumento y disminución del gradiente son 10 y 0.1 respectivamente a partir del cambio del valor del gradiente en un momento específico. De esta manera se asegura que el gradiente vaya disminuyendo a medida que avanza el algoritmo buscando un punto óptimo. Y por otra parte se aprecia que luego de cierta cantidad de iteraciones la red se empieza a realizar sobre ajuste en los datos de entrenamiento debido a la complejidad de la red. En este caso luego de 35 iteraciones se aprecia cómo sigue disminuyendo el error de entrenamiento (Train) mientras que el de validación (Test) se establece en un valor superior.

7.1.3.2

Caso en variables alternativas

Para este caso se siguió el mismo procedimiento mencionado para las variables de entrada iniciales, sólo que se hizo énfasis en una cantidad de neuronas más limitada. En este caso se estableció M en valores entre 15 a 25 neuronas y N sólo 5 iteraciones. Las tablas con las matrices generadas por el algoritmo se dejan en el Anexo. De esta manera se obtuvo el comportamiento en los errores mostrado a continuación:

(30)

Y comparando con los resultados de los datos de entrada originales:

Figura 21. Comparación de errores de entrenamiento y validación variando el número de neuronas de la red para las variables procesadas y originales.

En definitiva se obtuvo un menor error de validación para los datos procesados a partir de las relaciones entre potencia y energía. De esta manera se lograron no sólo correlacionar sino también normalizar alrededor de un valor válido. El análisis se centró para esta parte en este

(31)

número de neuronas, ya que como se mostrará más adelante, un mayor número de neuronas aunque presentan un error de entrenamiento y validación de menor magnitud, generan inconsistencias al momento de pronosticar el comportamiento del precio de la energía con nuevos datos. Esto se debe al equilibrio del que hablaba Bishop entre over-fitting y under-fitting. Aunque los datos de validación muestran lo contrario, estos están sesgados a la división aleatoria que realizó el toolbox entre los datos de entrenamiento y validación. Con el fin de evitar inconsistencias se utilizaron dos métodos: la disminución de la dimensionalidad como se mostró en esta etapa utilizando una cantidad reducida de neuronas; y el uso del algoritmo de validación cruzada, implementado en la red neuronal que se instaló en el servidor.

7.1.3.3

Variación de Neuronas en dos Capas escondidas

Siguiendo el protocolo de variación del número de neuronas, se procede a realizar el mismo procedimiento para redes neuronales con dos capas escondidas. Debido al aumento en la complejidad, así como se vio para el caso de 20 neuronas en una capa, el modelo de la red se sobre ajusta rápidamente a los datos evitando que se obtenga una buena generalización que en este caso es crítica si se quiere generar un pronóstico del precio de bolsa de la energía. Por esta razón en este proyecto no se enfocó principalmente en el uso de este tipo de redes. A continuación se muestran los casos más pertinentes para este problema:

# de neuronas capa 1 # de neuronas capa 2

Error de entrenamiento Error de validación

5 3 25.8415 25.6579

10 5 17.6468 20.3686

15 7 13.4838 17.7546

20 10 13.15812 18.44833

21 10 11.2527 15.9015

30 10 9.5973 16.4506

30 12 9.3301 16.7324

40 12 7.4973 17.6645

50 12 13.8445 22.217

50 20 6.3442 13.0818

Para el entrenamiento de las redes con dos capas escondidas se utilizó nuevamente un método de parada rápida para detener el entrenamiento de la red y evitar el sobre ajuste en los datos de entrenamiento. Por esta razón, los valores de los errores de validación son muy cercanos a los de entrenamiento. Mientras se aumentaba el número de neuronas se observaba que rápidamente se sobre ajustaba el modelo a los datos de entrenamiento. A continuación se muestra como ejemplo el caso de una red con 30 neuronas en la primera capa, y 10 en la segunda, que hace over-fitting a partir de la iteración número 30 del algoritmo de entrenamiento de Levenberg-Marquardt:

(32)

Se recuerda al lector que el error mostrado en las gráficas corresponde al valor del error de entrenamiento generado como el promedio de la suma cuadrática de los errores de cada dato de salida. Por esta razón, el valor del error mostrado en las tablas se toma como la raíz cuadrada del error que devuelve el algoritmo.

Como se muestra en la figura 22, este tipo de redes tienden a ajustarse a los datos de entrada haciendo que sean pobres para generalizar y no se ajustan a las características del modelo buscado para solucionar el problema planteado en este proyecto. En el aplicativo no se guardaron los modelos de este tipo de redes para que el usuario pueda accederlos debido al motivo mencionado anteriormente. Aun así, el aplicativo tiene la opción para que el usuario entrene redes de dos capas con la cantidad de neuronas que desee.

Luego de llevar a cabo esta primera etapa, se realizó la implementación del aplicativo web. El aplicativo tendrá de fondo varios modelos de redes neuronales que podrán ser usadas por el usuario para ver el pronóstico del precio de bolsa de la energía en los diferentes escenarios futuros. A partir de los resultados obtenidos en esta sección se guardaron los modelos con menores errores de validación y con las características apropiadas para resolver el problema en cuestión. En la siguiente sección se muestran los modelos que se incluyeron en el aplicativo web, sus características, funcionamiento y el protocolo llevado a cabo para ser accedidas desde la aplicación. Además de los modelos implementados, se da la opción al usuario de que entrene su propio modelo de red neuronal a partir de las características deseadas y de guardar dicho modelo.

(33)

7.2

Aplicativo web

Esta es una aplicación empresarial con diversas necesidades entre otras, la distribución, operaciones transaccionales, velocidad, seguridad y fiabilidad de la tecnología. Esta será gestionada de forma centralizada, e idealmente en la nube. La aplicación es desarrollada sobre la plataforma Java Enterprise Edition (Java EE). ‘El objetivo de la plataforma Java EE es proporcionar a los desarrolladores un robusto conjunto de APIs que permiten acortar el tiempo de desarrollo, reduciendo la complejidad de la aplicación, y la mejora de rendimiento de la misma.’ [19]

La plataforma Java EE utiliza un modelo de aplicación de varios niveles. Por lo tanto la lógica de la aplicación se divide en componentes de acuerdo con la función, y los componentes de que conforman la aplicación están siendo ejecutados en diferentes maquinas.

En adición, el aplicativo está estructurado bajo el diseño MVC (Model, View, Controller), introducido por primera vez en 1979, y aún vigente debido al alto desacoplamiento y versatilidad ofrecida. [12]

La arquitectura seguida por el aplicativo se muestra a continuación:

Figura 23. Arquitectura del aplicativo web

7.2.1

Base de datos

El modelado simplifica el diseño de bases de datos y mantenimiento, pues permite a los arquitectos de datos, visualizar de forma eficiente los elementos de la base datos y resolver problemas de diseño u optimizar características como el desacoplamiento, escalabilidad y flexibilidad. Por otra parte, el diseño de un modelo proporciona la versatilidad necesaria para adaptarse a las cambiantes necesidades de los datos, por ejemplo, la definición de una nueva arquitectura para la red neuronal o adicionar mayor detalle a las entidades establecidas.

La base de datos esta descrita en MySQL. Para la creación del modelo relacional se usó la herramienta gratuita MySQL Workbench que permite hacer ingeniería hacia adelante convirtiendo el modelo en un script para la creación de la base de datos. A continuación se muestra el modelo relacional diseñado:

(34)

Figura 24. Modelo relacional del aplicativo para pronóstico de la energía

En el modelo se puede apreciar la relación entre cada una de las entidades definidas para el aplicativo. Y cada una se describe a continuación:

o red: Es la entidad que define una red neuronal. Esta debe ser entendida como una tabla compuesta por tuplas, en la cual su llave primaria es un identificador entero. Por lo tanto, la aplicación permite crear múltiples redes neuronales y almacenar su información en base de datos.

o valor_objetivo: Esta entidad, en conjunto, representa la función objetivo de la red neuronal

o capa: esta entidad representa las capas de la red neuronal y sus características. Cada capa posee una función de activación y un número de neuronas.

o peso: Sobre esta entidad se modelan las neuronas a partir de sus pesos y bias.

o entrada: Esta entidad modela los diferentes tipos de entradas utilizadas y asociadas a la red. Posee el nombre, una breve descripción y los valores.

o valor_entrada: En esta entidad se almacenan cada uno de los valores de las entradas de la red.

La base de datos se utilizará principalmente para guardar los diferentes modelos de redes neuronales desarrollados durante este proyecto.

7.2.2

Modelo

7.2.1

Clases entidad (JPA)

De acuerdo al modelo relacional propuesto para la red neuronal, se implementó un modelo de entidades basado en JPA (Java Persistance API), esta una solución basada en estándares Java para la persistencia. [19] JPA permite tener mapeo relacional de objetos para cerrar la brecha entre un modelo orientado a objetos y una base de datos relacional. Asimismo, esta API tiene el lenguaje de consulta necesario, JPQL (Java Persistence Query Lenguaje), para realizar peticiones CRUD estáticas o dinámicas sobre las base de datos. Esto significa que mediante la creación y

(35)

configuración de un conjunto de clases Java (entidades) se replica el modelo de datos. Por lo tanto, la aplicación puede entonces acceder a estas entidades como si estuviera accediendo directamente a la base de datos. Cada entidad es un objeto de persistencia ligero. Generalmente, una entidad representa una tabla de una base de datos relacional, y cada instancia de la entidad corresponde a una fila o tupla en esa tabla.

A continuación se presenta el modelo de entidades implementado para representar el modelo relacional diseñado previamente:

Figura 25. Modelo de entidades JPA

En el modelo se aprecia una estructura similar al modelo relacional pero con todas las características de objetos java. Se tienen, además, todas las relaciones entre entidades, y por lo tanto se puede tener un comportamiento orientado a objetos con la comunicación entre los mismos

7.2.1.2

Session Beans

Para la aplicación se estableció una arquitectura de servicios basa en beans. La arquitectura está concentrada específicamente en dos servicios: operación de la red neuronal, y gestión de datos de la misma. Esta es la arquitectura diseñada:

(36)

Los EJB (Enterprise Java Beans), son componentes de servidor escritos en java y su razón de ser más importante es que encapsulan efectivamente la lógica empresarial. La lógica empresarial es código que cumple con el propósito de la aplicación. Los usuarios de un bean no deben conocer el exacto funcionamiento delcomponente, solo necesitan conocer e implementar sus funciones básicas. El contenedor EJB proporciona servicios de nivel del sistema como la gestión de transacciones, la autorización seguridad y patrones de instanciación. [19]

Un session bean es un bean invocado por el cliente para realizar una operación específica, en este caso puede llegar a ser la creación de una nueva red neuronal o la asignación de nuevos pesos para una red recién entrenada. El nombre de session implica que la instancia del bean, o de otra forma, su existencia, estará sujeta al tiempo de ejecución de una operación, o al tiempo de vida de la operación. Existen tres tipos se session beans, estos son:

· Stateful: El estado del bean se mantiene igual durante los múltiples llamados de sus métodos. El "estado" se refiere a los valores de sus variables de instancia.

· Stateless: El bean se instancia solo durante la ejecución de un método. Cuando el método termina el procesamiento, el estado del bean específico no se conserva. · Singleton: Un singleton session bean se instancia una vez por aplicación desplegada,

y existe durante el ciclo de vida de la aplicación. Estos beans están diseñados en circunstancias en las que se desea compartir una única instancia del mismo, y es accesado concurrentemente por los clientes.

7.2.1.2.1

Session facades:

Una vez se tienen las entidades creadas, se generan los ‘session facade’ EJB para cada una de las entidades. Estos beans son de tipo stateless puesto que ejecutaran servicios web, por lo tanto no es necesario mantener el estado de cada uno. Es posible usar otro tipo de beans, pero en caso de una integración con otras tecnologías como REST se vuelve ineficiente.

Un session facade es un patrón de diseño que abstrae las interacciones de objetos de negocio subyacentes y proporciona una capa de servicio que expone sólo la funcionalidad requerida. [19] Los session beans para el modelo de la red neuronal gestionan el ciclo de vida de las entidades mediante la creación, localización, modificación y eliminación de las mismas.

(37)

Ahora bien, cada bean contendrá los métodos básicos para su respectiva entidad. A continuación se presentan los session facade EJBs implementados para manejar y gestionar las entidades creadas:

Figura 27. Session Facades, para servicios web

Se puede apreciar en el modelo, que para cada una de las entidades, existe su respectivo facade. Estos beans heredan de AbstractFacade para reutilizar el código y replicar el comportamiento. Los facades realizan las mismas consultas, pero sobre su respectiva entidad. Por lo tanto, AbstractFacade es quien se relaciona con una entidad genérica ‘T’, que debe ser la entidad respectiva a cada facade.

7.2.1.2.2

RedEJB:

Este bean es encargado de manejar la interacción del cliente y los servicios de la red neuronal. RedEJB ejecuta todas las peticiones sobre la red neuronal. Estas peticiones son, fundamentalmente, la creación, localización y modificación de los parámetros del modelo de red neuronal seleccionado por el cliente. En el siguiente modelo se presenta el comportamiento del bean:

Referencias

Documento similar

a) Implement a new architecture, making efficient use of new technological developments, information sources, and analytical methods. b) Establish an institutional and

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que

La siguiente y última ampliación en la Sala de Millones fue a finales de los años sesenta cuando Carlos III habilitó la sexta plaza para las ciudades con voto en Cortes de

Ciaurriz quien, durante su primer arlo de estancia en Loyola 40 , catalogó sus fondos siguiendo la división previa a la que nos hemos referido; y si esta labor fue de

En la parte central de la línea, entre los planes de gobierno o dirección política, en el extremo izquierdo, y los planes reguladores del uso del suelo (urbanísticos y

 Para recibir todos los números de referencia en un solo correo electrónico, es necesario que las solicitudes estén cumplimentadas y sean todos los datos válidos, incluido el

La determinación molecular es esencial para continuar optimizando el abordaje del cáncer de pulmón, por lo que es necesaria su inclusión en la cartera de servicios del Sistema

6 José Carlos Rovira, en su estudio Léxico y creación poética en Miguel Hernández, expone lo que para él simboliza la figura del rayo: “El poeta es rayo que no cesa,