44 JAIIO 2015

El martes 01/09/2015 pudimos exponer en el marco del simposio SIO (Simposio Argentino de Investigación Operativa) de las JAIIO 2015, tal como se refleja en el programa, un extracto de nuestro trabajo: hadoop.

El congreso se llevó a cabo en la ciudad de Rosario, en la llamada “Siberia” (Ciudad Universitaria de la UNR), en donde hubo muy buenas ponencias, cursos, seminarios, etc.

IMG-20150901-WA0000

 

Problemas con la memoria del Cluster Hadoop

Habiendo entendido que los nodos del cluster quedaron configurados con la mitad de memoria que se suponía iban a tener, comenzamos a experimentar problemas de memoria (no relacionados con el mal de Alzheimer que nos acosa a los señores mayores).

Dado este problema comenzamos a hacer lo que todo “hombre de la casa” debe hacer: No leer el manual y empezar a tocar parámetros al azar hasta que funcione. Bueno, al poco tiempo se evidenció que no es la mejor técnica. Lástima… Estaba preparando un artículo sobre eso…

Por suerte encontré la información debidamente tabulada por la gente de Hortonworks aquí. Fue de gran utilidad.

Planteo del reparto óptimo de cargas (D.E.B.) en teoría de grafos

Anteriormente se armó un planteo en términos de método de Lagrange y flujo de cargas. Vamos a intentar plantear este problema monoperíodo en términos de grafos.

Para eso nos conviene saber que es determinante la definición de regiones, dado que hemos visto que las pérdidas y los límites de transportes imponen restricciones importantes a nuestro problema. Entonces vamos a intentar tipar:

  • Nodos
    • Región de Demanda: Un nodo (o barra eléctrica) que agrupa la demanda de una o más ciudades (o industrias). Va a estar caracterizada por una potencia media demandada en el período.
    • Generadores
      • Generador de Falla: Un generador ficticio que permita determinar cuánta potencia no se entregará al sistema por falla (ya sea por incapacidad de transporte, generación o balance costo beneficio). Sus características son similares a las del generador real, salvo que tienen un costo muy alto (generalmente regulado) con el fin de que realmente se considere muy caro dejar sin servicio a la red.
      • Generador Real: Cada generador va a constituirse como nodo. Va a estar caracterizado por las variables asociadas en el problema a cada generador:
        • Costo Fijo de Generación
        • Costo Variable de Generación
        • Potencia Mínima
        • Potencia Máxima
        • Características de la tecnología de la máquina generadora
  • Arcos
    • Líneas eléctricas: Representan tendidos interregionales. Están caracterizados por:
      • Función de pérdida. Es probable que la función de pérdida sea diferente en las dos direcciones del arco.
      • Límite de transporte expresado en términos de potencia instantánea.
    • Conexión entre generadores y la región de demanda a la que pertenece. Se considera que todo generador pertenece a una región de demanda (y en el caso en que una región de demanda únicamente esté compuesta de un generador, se definirá un nodo ficticio de demanda con componente 0Mw). Estas conexiones no implican ninguna pérdida ni están caracterizadas por ningún otro atributo.

A continuación, un ejemplo:

grafo1En términos prácticos, el objetivo del problema es asignarle a cada generador una potencia para cubrir la demanda, calculando la potencia que se va en pérdidas por la transmisión de energía (que a su vez es asignada).

Las restricciones de balance de flujo en los nodos igualan un consumo (únicamente en áreas de demanda) con el flujo ingresante (generación) y el flujo saliente (exportación de energía).

Tal como se vio en otras entradas, el problema de optimización pasa por minimizar \sum\limits_{i=1}^n C_i(P_{gi}) sujeto a las restricciones:

P_G^{min} \leq P_G \leq P_G^{max}

P_G - P_D = P_P

f_{li} <= f^{max}_{li}

\mu^{min}_i \leq P_{gi} \leq \mu^{max}_i

Donde:

  • f_{li} es el flujo de potencia que se transmite a través de la línea (arco) i.
  • f^{max}_{li} es el límite de potencia que admite la línea (arco) i.
  • \mu^{min}_i es la generación mínima nominal de la máquina i.
  • \mu^{max}_i es la generación máxima nominal de la máquina i (probablemente sin contar reserva).
  • Si la máquina no está activa, no se computa el costo fijo de generación.
  • P_P = \sum\limits_{i=1}^n perd_i(f_{li}) donde perd_i es la función de pérdida de la línea (arco) i.

Este planteo es estático, es decir, a fines didácticos sirve entender cómo se reparte la carga sin mucho contexto, pero luego habrá que pensar en que la demanda varía período a período.

Economía y Teoría del Error

En ocasión de repasar la problemática de las entradas anteriores con un docente amigo (gran docente él), me preguntó dónde encajaba la teoría del error en mi planteo. Si bien trabajamos sobre un modelo matemático, que luego va a poder ser contrastado con la realidad… Sinceramente, no sabría bien cómo ponderar el error en forma teórica, aunque sería muy sencillo hacerlo de manera empírica y estadística; debo confesar que el tema del error en modelos matemáticos movió algo en mi persona.

También me entregó un ejemplar de la revista Ciencia Nueva (el nro 15), la cual no conocía. Se trata de una revista de divulgación científica sumamente seria surgida en Buenos Aires en 1970, cuyo primer número trata la Máquina de Turing ¡Extraordinario!
En dicho número (15) se reproduce un extraordinario artículo de 1971 de Oskar Morgenstern llamado “La Economía ¿Es una ciencia exacta?” que aquí dejo a disposición: Oskar Morgenstern – La economia – 1971.

Si bien a 43 años de la publicación de ese artículo ya debería estar claro que la economía es una ciencia social, en ese momento se discutía seriamente si se trataba de una ciencia histórica, política, social o exacta. Apoyado en la incertidumbre de las mediciones, Morgenstern plantea que no fue fácil para la ciencia aceptar la idea de que el error es irreductible y que sería deseable que en las estadísticas presentadas en los trabajos económicos se acompañe el margen de error correspondiente.

Lo interesante de esto, es que plantea la incorporación de la informática a la economía o econometría como un paso natural que conlleva ciertos riesgos por las comparaciones imprudentes de magnitudes poco compatibles. Es ese momento el autor dudaba de la calidad de la clasificación de los datos económicos relevados.

Aún hoy en día es difícil trabajar en el ambiente empresarial (y en el gubernamental) con bases de datos que alberguen datos de calidad. Por experiencia propia y en lineas generales, la calidad de los datos económicos recabados en estas entidades deja mucho que desear.

Es notable el tratamiento que le da al PBI, la existencia de una cifra única que determine el estado económico de un país es prácticamente un contrasentido. Muestra claramente como esta magnitud escalar admite distorsiones evidentes admitiendo que una magnitud vectorial sería de mucha más utilidad.

Si es cierto que hay que notar cierta ingenuidad en el autor cuando afirma sorprendido que estas cifras de la economía son utilizadas por la política… ¿Hay manera de separar política de economía?

Qué notable que pueda plantear esto en un momento de inflexión de la historia económica mundial, así como el comienzo del auge de escuelas económicas como los Chicago Boys de Milton Friedman es de notar.

Un esfuerzo por linealizar el problema de las pérdidas

En las entradas anteriores demostramos que el problema del D.E.B. con pérdidas abandona la linealidad.

Las líneas eléctricas se describen mediante cuatro parámetros, que son:

  • Resistencia efectiva: Relación entre la potencia de pérdida (P_p) producida cuando circula por la línea (conductor) una corriente I e I^2.
  • Inductancia: Un corriente que circula a través de un conductor genera un campo magnético en forma de lazos circulares rodeando al mismo. Si la corriente varía en el tiempo, es decir, si se define como i(t), el campo magnético también dependerá del tiempo. En cualquier circuito eléctrico que esté inducido (próximo) al campo magnético generado, se inducirá una diferencia de potencial eléctrico dado por v(t) = \frac{\partial \phi (t)}{\partial t} donde \phi (t) es el flujo concatenado por el circuito. El flujo concatenado será entonces proporcional a la corriente que lo crea, definiendo la constante llamada coeficiente de inducción L únicamente dependiente de la geometría de los circuitos: L = \frac{\phi (t)}{i(t)}.
  • Capacidad: La capacidad está ligada al campo eléctrico generado por la carga eléctrica existente en los conductores, así como el campo magnético está ligado a la inductancia. La capacidad estará definida por la relación entre la carga eléctrica y la diferencia de potencial respecto de un punto de referencia: C = \frac{q}{v}.
  • Conductancia: Es la capacidad de un conductor de transportar electrones. Propiedad inversa a la resistencia. Es decir: G = \frac{1}{R} = \frac{I}{V}. Es de importancia en el estudio de las fugas eléctricas en las líneas. Al estar la intensidad de fuga en fase con la tensión, sólo tendrá un componente activo y la potencia de fuga estará determinada por P_g = G V^2.

Los operadores de las líneas de alta tensión están en condiciones de proveer una función que determine la potencia de pérdida de cada una de las líneas que opera con un nivel de error bastante bajo.

Es posible hacer una aproximación lineal en un único período al problema de las pérdidas. Supongamos las siguientes premisas, disponemos del siguiente circuito:

circuitobasicoCada nodo es una abstracción (o una barra eléctrica) en la que hay combinados elementos de generación y demanda (además de transformadores y otros componentes eléctricos). Dada una situación (o modelo) de demanda determinado, resolvemos con nuestros parámetros el problema del D.E.B. sin pérdidas y arroja, por ejemplo, que el nodo r es netamente de demanda, y que los nodos k y m son superavitarios en generación. Digamos que P_k = 5 MW, P_m = 5 MW y P_r = -10 MW (la convención del signo implica flujo de cargas).

Dado que no introdujimos límites de red (ni pérdidas) el \lambda = \frac{\partial C}{\partial d} es el mismo en todos los nodos.

Estamos en condiciones de calcular las pérdidas según la función que tengamos como parámetro, por ejemplo podríamos decir que P_{gkr} = 0,1 MW y P_{gmr} = 0,1 MW para simplificar.

Dado esto podríamos no considerar estos 0,2 MW como un aumento en la demanda, sino repartirlo entre los nodos por mitades. A esto le sumaríamos un pequeño delta, dado que transportar un nivel mayor de potencia, implicaría un poco más de pérdidas. Este delta sería arbitrario. Correríamos el modelo sin pérdidas nuevamente y buscaríamos iterativamente el equilibrio. Podría iterativamente correrse hasta no dar diferencias en el tercer o cuarto decimal.

Introduciendo los límites de transporte, el problema seguiría siendo el mismo, no cambiaría mucho.

De esta manera el problema pasa a ser lineal (con iteraciones o programación dinámica), pero hay una diferencia con el estudio de las pérdidas a través del problema de flujo de carga. Habría que estudiarlo, para ver cuánto puede perderse. Seguramente dependerá de la topología.

Otra posibilidad desde el punto de vista económico es introducir el concepto de factores de nodo o factores de pérdidas. En este esquema se establece un precio de energía en cada nodo de la red. La relación entre el precio en el nodo y el precio en el centro de cargas del sistema es el factor de nodo FN tal que PN(k)=PM FN(k)
Donde:

  • PN(k): Precio en el Nodo k
  • PM: Precio del Mercado
  • FN(k): Factor de Nodo del nodo k

Se establece un centro de cargas del sistema con FN=1. El coeficiente FN representa la variación (positiva o negativa) de las pérdidas atribuibles a un incremento de demanda en un nodo determinado. El Factor de Nodo FN intenta manifestar en el precio de la energía en un nodo, si el consumo de energía en su área de influencia colabora a descargar el sistema de transmisión o este será sometido a un uso más intenso.

El Factor de Nodo FN inferior a 1 representa a un nodo superavitario, o sea generador, cuyos saldos fluyen al centro de cargas. Una región generadora poseerá factores de nodo inferiores a la unidad debido a que un incremento de demanda en esa zona origina una disminución de sus saldos exportables al centro de cargas y como consecuencia la energía transmitida por el sistema será inferior, las líneas tenderán a descargarse y sus pérdidas a disminuir.

Los nodos que son abastecidos desde centros generadores lejanos, producen un mayor empleo de la red de transmisión y un incremento de las pérdidas cuando su demanda aumenta. Este efecto debería, en principio, elevar el Factor de Nodo consumidor. La consecuencia es la disminución del FN del nodo abastecedor debido a que todos los FN son vínculos con el FN del centro de carga fijado.

Desde el puntod e vista económico, el efecto del Factor de Nodo en los precios implica una penalización de los aumentos de demanda cuya satisfacción depende de un incremento de oferta en un nodo lejano, ya sea por imposibilidad u orenosidad del abastecimiento local.

Optimización de la programación horaria de grupos térmicos en el D.E.B.

En la entrada anterior introdujimos la posibilidad de analizar el reparto óptimo de cargas en varios períodos. De hecho los períodos podrían establecerse arbitrariamente como las horas del día (lo que termina resultando práctico). Puede ocurrir que en cada período estén entrando o saliendo máquinas térmicas del despacho para mejorar el rendimiento, lo cual debe ser tomado con pinzas, porque en la práctica, “sacar” cierta máquina tiene un costo que debe afrontarse.

Vamos a extender el problema de optimización de los casos anteriores con el fin de plantear un sólo período de programación horaria de grupos térmicos. Una nueva variable que aparece es una variable binaria (\mu_i) cuyo semántica consiste en saber si la máquina i ha sido tenida en cuenta para el despacho o no. Cabe destacar que tratamos ahora con un problema de programación entera-mixta.

De este modo, podemos expresar el costo de generación de una máquina i como C_i(\mu_i,P_{gi}) = \mu_i C_{0i} + C_{vi}(P_{gi}). Donde C_{0i} es el costo fijo de generación para el generador i, y C_{vi} es el costo variable (función convexa dependiente de P_{gi}). Por tanto el problema queda planteado como la minimización de:

\sum\limits_{i=1}^n C_i(\mu_i,P_{gi})

Sujeto a:

\mu_i P_{gi}^{min} \leq P_{gi} \leq \mu_i P_{gi}^{max}

P_G - P_D = P(\delta)

|P_f(\delta)| \leq P_f^{max}

Una de las cuestiones que quedó afuera en el planteo anterior es la toma de reservas. En todo sistema de este estilo, debe contarse con un nivel de seguridad de reserva rodante lista para cubrir cualquier eventualidad (caída intempestiva de generación o incremento inesperado de demanda). Una vez determinada la potencia P_r de reserva (el nivel de seguridad) se puede añadir la restricción \sum\limits_{i=1}^n (\mu_i P_{gi}^{max} - P_{gi}) \geq P_d + P_R.

Otros de las cuestiones que pueden agregarse son los módulos de las tensiones y las potencias reactivas.

Cuando se analiza cierto continuo de tiempo no es correcto optimizar cada período por separado. En este planteo estamos teniendo en cuenta el acoplamiento o desacoplamiento de grandes máquinas térmicas que no poseen características de operación instantánea y que pueden requerir horas para que puedan llevarse a cabo dichas operaciones. Las calderas de dichas máquinas tienen una inercia para calentarse o enfriarse, es por eso que toda máquina térmica tiene posee un límite de rampa que restringe su capacidad de variar la producción en función del tiempo.

La incorporación de una máquina térmica (que esté apagada) implica también un gasto de arranque (combustible, personal técnico) que puede influir en la solución final.

La versión que incorpora las 24hs de un día en la programación horaria se puede expresar de la siguiente manera:

\sum\limits_{t=1}^{24} \sum\limits_{j=1}^n C_{jt}(\mu_{jt}, P_{Gjt}) + C_{Aj} y_{jt} + C_{Pj} z_{jt}

sujeto a:

\sum\limits_{j=1}^n P_{Gjt} = P_{Dt}

\sum\limits_{j=1}^n \mu_{jt} P_{Gj}^{max} \geq P_{Dt} + P_{Rt}

\mu_{jt} P_{Gj}^{min} \leq P_{Gjt} \leq \mu{jt} P_{Gj}^{max}

P_{Gj,t-1} -P_{Gjt} \leq R_{Gj}^{bajar}

P_{Gjt} - P_{Gj,t-1} \leq R_{Gj}^{subir}

 P_{Gj}^0 - P_{Gj1} \leq R_{Gj}^{bajar}

 P_{Gj1} - P_{Gj}^0 \leq R_{Gj}^{subir}

y_{jt} - z_{jt} = \mu_{jt} - \mu_{j,t-1}

y_{j1} - z_{j1} = \mu_{j1} - \mu_{j}^0

R_{Gj}^{subir} > P_{Gj}^{min}

R_{Gj}^{bajar} > P_{Gj}^{min}

Donde:

  • C_{jt}(\mu_{jt}, P_{Gjt}) es la función de costo de producción total del generador j en el período t.
  • C_{Aj} es el costo de arranque del generador j.
  • C_{Pj} es el costo de parada del generador j.
  • P_{Gjt} es la potencia generada por j en el período t.
  • P_{Gj}^{min} es la potencia mínima técnica del generador j.
  • P_{Gj}^{max} es la potencia máxima del generador j.
  • P_{Gj}^0 es la potencia de salida del generador j.
  • P_{Dt} es la demanda total del sistema en el período t.
  • P_{Rt} es la reserva total requerida del sistema en el período t.
  • R_{Gj}^{bajar} es la rampa máxima de bajada de carga del generador j.
  • R_{Gj}^{subir} es la rampa máxima de subida de carga del generador j.
  • \mu_{jt} es una variable binaria que toma el valor 1 si el generador j está activo en el período t y 0 si no lo está.
  • \mu_{j}^0 es el valor inicial de la variable una variable \mu_{jt}.
  • y_{jt} es una variable binaria que toma el valor 1 si el generador j arranca al comienzo del período t, y 0 si no lo hace.
  • z_{jt} es una variable binaria que toma el valor 1 si el generador j se desacopla al comienzo del período t, y 0 si no lo hace.
  • n es el número de generadores que hay en el sistema.

Si bien quedaron afuera las restricciones de red, el caso planteado es lo suficientemente general como para extenderlo en cualquiera de los casos necesarios.

 

Bibliografía:

“Operación del sistema de generación” – Francisco D. Gagliana y Antonio J. Conejo