Secciones de la página

Electricity. DemandPrice


Árbol de ficheros


Declaraciones


Inclusiones


Proceso


Finalización


Time oriented language

Tol

Artículos del sitio

Presentación de Tol

Todos los programas

Simuladores visuales

Sitios que me gustan

Por categorías

Algoritmia

Búsqueda y ordenación

Computación fisiológica

Editorial y edición

Gráficos de datos

Herramientas y utilidades

Hipertexto

Informática forense

Lectura óptica de datos

Metaprogramación

No determinista

Ofimática

Recursión e iteración

Reglas y restricciones

Series y estadística









make.tol de Electricity.DemandPrice

Electricity.DemandPrice es un programa que muestra como analizar y visualizar con Tol (Time Oriented Languaje) series temporales públicas de demanda eléctrica y de precios de la electricidad en fechados, TimeSet, de frecuencia horaria, Horario, y diaria, Diario. Este programa lee los datos desde ficheros Tol de formato Bdt que están guardados en un directorio llamado data: a) un fichero para la demanda horaria (fichero demandahorario.bdt), b) otro fichero para los precios hora a hora (fichero preciohorario.bdt) y c) finalmente, otro fichero que contiene la demanda agregada por días y los precios medios diarios (fichero datadiario.bdt).

El programa Electricity.DemandPrice se ejecuta de forma lineal como una secuencia de declaraciones de series temporales, polinomios, conjuntos temporales y valores reales, en el que no se declaran funciones Tol. Todo el programa está en un solo fichero Tol que como visualiza gráficos de series temporales para algunos de sus resultados, lo ideal es que se ejecute con Tolbase 1.1.5 o Tolbase 2.0.1, que son, respectivamente, los entornos de desarrollo integrado (IDE, integrated development environment) de Tol 1.1.5 y Tol 2.0.1.

Este programa realiza las siguientes clases de acciones: a) Asume definidos los 2 conjuntos temporales (TimeSet, fechados) Horario y Diario y con ellos lee, mediante la función IncludeBdt(), datos de demanda y precios en el sector eléctrico del directorio llamado data. b) A partir de dichos datos realiza un conjunto de operaciones con series temporales y polinomios de tiempo mientras que visualiza los resultados paso a paso. c) Finalmente compara los datos por días de la semana (lunes, martes, miércoles, jueves, viernes, sábado y domingo) y analiza el comportamiento de las series temporales durante la Semana Santa.

Árbol de ficheros

Electricity.DemandPrice análisis de series de tiempo de demanda y precios del mercado eléctrico

Declaraciones

Inclusiones

  • Set incDemHor
    Lectura de datos de demanda hora a hora.
  • Set incPreHor
    Lectura de datos de precios hora a hora.
  • Set incBdtDia
    Lectura de demanda y precios diarios.

Proceso

  • Polyn PolynB012
    Polinomio backguard de 12 terminos.
  • Serie PreMov012
    Media movil del precio de 12 horas.
  • Set SubDemPre
    Subseries de 2 dias de demanda y precio.
  • Set DemH2D
    Demandas diarias a partir de horarias.
  • Serie FacHorOct
    Facturacion del mes de octubre. La serie de precios esta para el mes de octubre. La serie de demanda para noviembre y octubre. Por tanto, el producto, facturacion, solo se calcula para octubre
  • Set LogSqrPot
    Logaritmo, raiz cuadrada y potencia.
  • Set Dif1_B
    Diferencia 1-B de la demanda y del precio.
  • Set DemPorMes
    Demandas mensuales por años reunidas en el 2000.
  • Set DemTrend
    Tendencia de la demanda.
  • Set DiaSem
    Precios por dias de la semana.
  • Set ViePre
    Precios del Viernes Santo y otros viernes.
  • Set DemSem
    Demanda semanal acumulada y media diaria.

Inclusiones

Set incDemHor

//////////////////////////////////////////////////////////////////////////////
Set incDemHor = Include("data/demandahorario.bdt");
//////////////////////////////////////////////////////////////////////////////
PutDescription("Lectura de datos de demanda hora a hora.",incDemHor);
//////////////////////////////////////////////////////////////////////////////
Set If(FALSE, Chart(SetOfSerie(DemandaH), "./001demandah.gif"), Empty);

Set incPreHor

//////////////////////////////////////////////////////////////////////////////
Set incPreHor = Include("data/preciohorario.bdt");
//////////////////////////////////////////////////////////////////////////////
PutDescription("Lectura de datos de precios hora a hora.",incPreHor);
//////////////////////////////////////////////////////////////////////////////
Set If(FALSE, Chart(SetOfSerie(PrecioH), "./002precioh.gif"), Empty);

Set incBdtDia

//////////////////////////////////////////////////////////////////////////////
Set   incBdtDia = Include("data/datadiario.bdt"); // 
//////////////////////////////////////////////////////////////////////////////
PutDescription("Lectura de demanda y precios diarios.",incBdtDia);
//////////////////////////////////////////////////////////////////////////////
Set If(FALSE, Chart(SetOfSerie(DemandaD,
                               PrecioD), "./003dempredia.gif"), Empty);

Proceso

Polyn PolynB012

//////////////////////////////////////////////////////////////////////////////
Polyn PolynB012 = 1+B+B^2+B^3 +B^4 +B^5+B^6+B^7+B^8+B^9+B^10+B^11;
//////////////////////////////////////////////////////////////////////////////
PutDescription("Polinomio backguard de 12 terminos.",PolynB012);
//////////////////////////////////////////////////////////////////////////////

Serie PreMov012

//////////////////////////////////////////////////////////////////////////////
Serie PreMov012 = (PolynB012:PrecioH) / 12;
//////////////////////////////////////////////////////////////////////////////
PutDescription("Media movil del precio de 12 horas.",PolynB012);
//////////////////////////////////////////////////////////////////////////////
Set If(FALSE, Chart(SetOfSerie(PrecioH,
                               PreMov012), "./004premedmov12h.gif"), Empty);

Set SubDemPre

//////////////////////////////////////////////////////////////////////////////
Set SubDemPre =
{
  Date  demandIni = First(DemandaH); // Primer dato de la demanda horaria
  Date  demandSuc = Succ(demandIni, C, 2); // 2 dias despues
  Serie demandSub = SubSer(DemandaH, demandIni, demandSuc);
  Serie precioSub = SubSer(PrecioH,  demandIni, demandSuc);

  Set   If(FALSE, Chart(SetOfSerie(demandSub, precioSub),
                       "./005subdempre.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Subseries de 2 dias de demanda y precio.",SubDemPre);
//////////////////////////////////////////////////////////////////////////////

Set DemH2D

//////////////////////////////////////////////////////////////////////////////
Set DemH2D =
{
  Serie demTotDia = DatCh(DemandaH, Diario, SumS); // Demanda total por dia
  Serie demMedDia = DatCh(DemandaH, Diario, AvrS); // Demanda media por dia
  Serie demMaxDia = DatCh(DemandaH, Diario, MaxS); // Demanda maxima
  Serie demMinDia = DatCh(DemandaH, Diario, MinS); // Demanda minima

  Set   If(FALSE, Chart(SetOfSerie(demMedDia,demMaxDia,demMinDia),
                       "./006demmedmaxmin.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Demandas diarias a partir de horarias.",DemH2D);
//////////////////////////////////////////////////////////////////////////////

Serie FacHorOct

//////////////////////////////////////////////////////////////////////////////
Serie FacHorOct = PrecioH * DemandaH;
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Facturacion del mes de octubre.
La serie de precios esta para el mes de octubre.
La serie de demanda para noviembre y octubre.
Por tanto, el producto, facturacion, solo se calcula para octubre",
FacHorOct);
//////////////////////////////////////////////////////////////////////////////
Set If(FALSE, Chart(SetOfSerie(FacHorOct), "c./007fachoroct.gif"), Empty);

Set LogSqrPot

//////////////////////////////////////////////////////////////////////////////
Set LogSqrPot =
{
  Serie facLog    = Log(FacHorOct)*10; // Logaritmo de la facturacion x 10
  Serie demSqr    = SqRt(DemandaH);    // Raiz cuadrada de la demanda horaria
  Serie prePot    = PrecioH^2.5;       // Potencia 2.5 del precio

  Set   If(FALSE, Chart(SetOfSerie(facLog,demSqr,prePot),
                        "./008logsqrpot.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Logaritmo, raiz cuadrada y potencia.",LogSqrPot);
//////////////////////////////////////////////////////////////////////////////

Set Dif1_B

//////////////////////////////////////////////////////////////////////////////
Set Dif1_B =
{
  Serie demHor10d = SubSer(DemandaH, First(DemandaH), y2001m10d10h23);
  Serie preHor10d = SubSer(PrecioH,  First(PrecioH),  y2001m10d10h23);
  Real  difMax    = (MaxS(demHor10d)/MaxS(preHor10d))/4;
  Serie demHorDif =  (1-B):demHor10d;         // Diferencia 1-B de la demanda
  Serie preHorDif = ((1-B):preHor10d)*difMax; // Diferencia 1-B del precio

  Set   If(FALSE, Chart(SetOfSerie(demHorDif,preHorDif),
                        "./009diferencias.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Diferencia 1-B de la demanda y del precio.",Dif1_B);
//////////////////////////////////////////////////////////////////////////////

Set DemPorMes

//////////////////////////////////////////////////////////////////////////////
Set DemPorMes =
{
  Serie demMen    = DatCh(DemandaD, Mensual, SumS); // Demanda Mensual
  Serie demMe1998 = (B^24):SubSer(demMen, y1998m01, y1998m12); // 1998 -> 2000
  Serie demMe1999 = (B^12):SubSer(demMen, y1999m01, y1999m12); // 1999 -> 2000
  Serie demMe2000 =        SubSer(demMen, y2000m01, y2000m12); //         2000
  Serie demMe2001 = (F^12):SubSer(demMen, y2001m01, y2001m11); // 2001 -> 2000

  Set   If(TRUE, Chart(SetOfSerie(demMe1998,demMe1999,demMe2000,demMe2001),
                        "./010demandasmensuales.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Demandas mensuales por años reunidas en el 2000.",DemPorMes);
//////////////////////////////////////////////////////////////////////////////

Set DemTrend

//////////////////////////////////////////////////////////////////////////////
Set DemTrend =
{
  Serie demAgrDia = SubSer(DifEq(1/(1-B), DemandaD/1000000, CalInd(W,Diario)),
                           First(DemandaD),Last(DemandaD));
  Serie tre1998   = Trend(First(DemandaD),Diario);
  Serie demMed98  = demAgrDia / tre1998;
  Serie demMedDiv = demMed98*1000;

  Set   If(FALSE, Chart(SetOfSerie(demAgrDia, tre1998, demMedDiv),
                        "./011demandatendencia.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Tendencia de la demanda.",DemTrend);
//////////////////////////////////////////////////////////////////////////////

Set DiaSem

//////////////////////////////////////////////////////////////////////////////
Set DiaSem =
{
  Serie preLun = DatCh(      PrecioD, WD(1), FirstS); // Lunes
  Serie preMar = DatCh(    F:PrecioD, WD(1), FirstS); // Martes
  Serie preMie = DatCh((F^2):PrecioD, WD(1), FirstS); // Miercoles
  Serie preJue = DatCh((F^3):PrecioD, WD(1), FirstS); // Jueves
  Serie preVie = DatCh((F^4):PrecioD, WD(1), FirstS); // Viernes
  Serie preSab = DatCh((F^5):PrecioD, WD(1), FirstS); // Sabado
  Serie preDom = DatCh((F^6):PrecioD, WD(1), FirstS); // Domingo

  Set   If(FALSE, Chart(SetOfSerie(preLun,preMar,preMie,
                                   preJue,preVie,preSab,preDom),
                        "./012preciodiassemana.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Precios por dias de la semana.",DiaSem);
//////////////////////////////////////////////////////////////////////////////

Set ViePre

//////////////////////////////////////////////////////////////////////////////
Set ViePre =
{
  Serie   vieDem = DatCh(DemandaD/1000000, WD(5), FirstS); // Demanda viernes
  TimeSet viSTms = Succ(Easter,-2); // Los Viernes Santos
  Serie   viSSer = (CalInd(viSTms, WD(5))*.15)+.5; 
  TimeSet viUTms = Succ(M(1)*D(1),-1, WD(5)); // Ultimos viernes del año
  Serie   viUSer = (CalInd(viUTms, WD(5))*.25)+.5; 
  TimeSet viATms = Succ(M(8)*D(18),-1, WD(5)); // Viernes central agosto
  Serie   viASer = (CalInd(viATms, WD(5))*.35)+.5; 

  Set   If(FALSE, Chart(SetOfSerie(vieDem, viSSer, viUSer, viASer),
                        "./013viernessanto.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Precios del Viernes Santo y otros viernes.",ViePre);
//////////////////////////////////////////////////////////////////////////////

Set DemSem

//////////////////////////////////////////////////////////////////////////////
Set DemSem =
{
  Serie demSemSum = DatCh(DemandaD, WD(1), SumS); // suma en semanal
  Serie demSemAvg = DatCh(DemandaD, WD(1), AvrS); // media semanal  

  Set   If(TRUE, Chart(SetOfSerie(demSemSum, demSemAvg),
                        "x./014demandasemanal.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Demanda semanal acumulada y media diaria.",DemSem);
//////////////////////////////////////////////////////////////////////////////

Finalización

Text WriteLn("\nElectricity.DemandPrice make: end");

Time oriented language

//////////////////////////////////////////////////////////////////////////////
// FILE    : make.tol
// AUTHOR  : http://www.asolver.com
// CLASS   : Series; Chart
// VERSION : Tolbase 1.1.5; Tolbase 2.0.1
// PURPOSE : Electricity.DemandPrice es un programa que muestra como analizar
// y visualizar con Tol (Time Oriented Languaje) series temporales públicas de
// demanda eléctrica y de precios de la electricidad en fechados, TimeSet,
// de frecuencia horaria, Horario, y diaria, Diario.
// 
// Este programa lee los datos desde ficheros Tol de formato Bdt que están
// guardados en un directorio llamado data:
// a) un fichero para la demanda horaria (fichero demandahorario.bdt),
// b) otro fichero para los precios hora a hora (fichero preciohorario.bdt) y
// c) finalmente, otro fichero que contiene la demanda agregada por días y
//    los precios medios diarios (fichero datadiario.bdt).
// _
// El programa Electricity.DemandPrice
// se ejecuta de forma lineal como una secuencia de declaraciones de series
// temporales, polinomios, conjuntos temporales y valores reales,
// en el que no se declaran funciones Tol.
// 
// Todo el programa está en un solo fichero Tol que como visualiza gráficos de
// series temporales para algunos de sus resultados,
// lo ideal es que se ejecute con Tolbase 1.1.5 o Tolbase 2.0.1,
// que son, respectivamente, los entornos de desarrollo integrado
// (IDE, integrated development environment) de Tol 1.1.5 y Tol 2.0.1.
// _
// Este programa realiza las siguientes clases de acciones:
// a) Asume definidos los 2 conjuntos temporales (TimeSet, fechados)
//    Horario y Diario y con ellos lee, mediante la función IncludeBdt(),
//    datos de demanda y precios en el sector eléctrico del directorio llamado
//    data.
// b) A partir de dichos datos realiza un conjunto de operaciones con series
//    temporales y polinomios de tiempo mientras que visualiza los resultados
//    paso a paso.
// c) Finalmente compara los datos por días de la semana (lunes, martes,
//    miércoles, jueves, viernes, sábado y domingo) y analiza el
//    comportamiento de las series temporales durante la Semana Santa.
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
// INCLUDE
//////////////////////////////////////////////////////////////////////////////
Text WriteLn("\nElectricity.DemandPrice make: begin");

//////////////////////////////////////////////////////////////////////////////
Set incDemHor = Include("data/demandahorario.bdt");
//////////////////////////////////////////////////////////////////////////////
PutDescription("Lectura de datos de demanda hora a hora.",incDemHor);
//////////////////////////////////////////////////////////////////////////////
Set If(FALSE, Chart(SetOfSerie(DemandaH), "./001demandah.gif"), Empty);



//////////////////////////////////////////////////////////////////////////////
Set incPreHor = Include("data/preciohorario.bdt");
//////////////////////////////////////////////////////////////////////////////
PutDescription("Lectura de datos de precios hora a hora.",incPreHor);
//////////////////////////////////////////////////////////////////////////////
Set If(FALSE, Chart(SetOfSerie(PrecioH), "./002precioh.gif"), Empty);



//////////////////////////////////////////////////////////////////////////////
Set   incBdtDia = Include("data/datadiario.bdt"); // 
//////////////////////////////////////////////////////////////////////////////
PutDescription("Lectura de demanda y precios diarios.",incBdtDia);
//////////////////////////////////////////////////////////////////////////////
Set If(FALSE, Chart(SetOfSerie(DemandaD,
                               PrecioD), "./003dempredia.gif"), Empty);



//////////////////////////////////////////////////////////////////////////////
// MAKE
//////////////////////////////////////////////////////////////////////////////
Text WriteLn("\nElectricity.DemandPrice make: process");

//////////////////////////////////////////////////////////////////////////////
Polyn PolynB012 = 1+B+B^2+B^3 +B^4 +B^5+B^6+B^7+B^8+B^9+B^10+B^11;
//////////////////////////////////////////////////////////////////////////////
PutDescription("Polinomio backguard de 12 terminos.",PolynB012);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Serie PreMov012 = (PolynB012:PrecioH) / 12;
//////////////////////////////////////////////////////////////////////////////
PutDescription("Media movil del precio de 12 horas.",PolynB012);
//////////////////////////////////////////////////////////////////////////////
Set If(FALSE, Chart(SetOfSerie(PrecioH,
                               PreMov012), "./004premedmov12h.gif"), Empty);



//////////////////////////////////////////////////////////////////////////////
Set SubDemPre =
{
  Date  demandIni = First(DemandaH); // Primer dato de la demanda horaria
  Date  demandSuc = Succ(demandIni, C, 2); // 2 dias despues
  Serie demandSub = SubSer(DemandaH, demandIni, demandSuc);
  Serie precioSub = SubSer(PrecioH,  demandIni, demandSuc);

  Set   If(FALSE, Chart(SetOfSerie(demandSub, precioSub),
                       "./005subdempre.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Subseries de 2 dias de demanda y precio.",SubDemPre);
//////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
Set DemH2D =
{
  Serie demTotDia = DatCh(DemandaH, Diario, SumS); // Demanda total por dia
  Serie demMedDia = DatCh(DemandaH, Diario, AvrS); // Demanda media por dia
  Serie demMaxDia = DatCh(DemandaH, Diario, MaxS); // Demanda maxima
  Serie demMinDia = DatCh(DemandaH, Diario, MinS); // Demanda minima

  Set   If(FALSE, Chart(SetOfSerie(demMedDia,demMaxDia,demMinDia),
                       "./006demmedmaxmin.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Demandas diarias a partir de horarias.",DemH2D);
//////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
Serie FacHorOct = PrecioH * DemandaH;
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Facturacion del mes de octubre.
La serie de precios esta para el mes de octubre.
La serie de demanda para noviembre y octubre.
Por tanto, el producto, facturacion, solo se calcula para octubre",
FacHorOct);
//////////////////////////////////////////////////////////////////////////////
Set If(FALSE, Chart(SetOfSerie(FacHorOct), "c./007fachoroct.gif"), Empty);



//////////////////////////////////////////////////////////////////////////////
Set LogSqrPot =
{
  Serie facLog    = Log(FacHorOct)*10; // Logaritmo de la facturacion x 10
  Serie demSqr    = SqRt(DemandaH);    // Raiz cuadrada de la demanda horaria
  Serie prePot    = PrecioH^2.5;       // Potencia 2.5 del precio

  Set   If(FALSE, Chart(SetOfSerie(facLog,demSqr,prePot),
                        "./008logsqrpot.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Logaritmo, raiz cuadrada y potencia.",LogSqrPot);
//////////////////////////////////////////////////////////////////////////////




//////////////////////////////////////////////////////////////////////////////
Set Dif1_B =
{
  Serie demHor10d = SubSer(DemandaH, First(DemandaH), y2001m10d10h23);
  Serie preHor10d = SubSer(PrecioH,  First(PrecioH),  y2001m10d10h23);
  Real  difMax    = (MaxS(demHor10d)/MaxS(preHor10d))/4;
  Serie demHorDif =  (1-B):demHor10d;         // Diferencia 1-B de la demanda
  Serie preHorDif = ((1-B):preHor10d)*difMax; // Diferencia 1-B del precio

  Set   If(FALSE, Chart(SetOfSerie(demHorDif,preHorDif),
                        "./009diferencias.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Diferencia 1-B de la demanda y del precio.",Dif1_B);
//////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
Set DemPorMes =
{
  Serie demMen    = DatCh(DemandaD, Mensual, SumS); // Demanda Mensual
  Serie demMe1998 = (B^24):SubSer(demMen, y1998m01, y1998m12); // 1998 -> 2000
  Serie demMe1999 = (B^12):SubSer(demMen, y1999m01, y1999m12); // 1999 -> 2000
  Serie demMe2000 =        SubSer(demMen, y2000m01, y2000m12); //         2000
  Serie demMe2001 = (F^12):SubSer(demMen, y2001m01, y2001m11); // 2001 -> 2000

  Set   If(TRUE, Chart(SetOfSerie(demMe1998,demMe1999,demMe2000,demMe2001),
                        "./010demandasmensuales.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Demandas mensuales por años reunidas en el 2000.",DemPorMes);
//////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
Set DemTrend =
{
  Serie demAgrDia = SubSer(DifEq(1/(1-B), DemandaD/1000000, CalInd(W,Diario)),
                           First(DemandaD),Last(DemandaD));
  Serie tre1998   = Trend(First(DemandaD),Diario);
  Serie demMed98  = demAgrDia / tre1998;
  Serie demMedDiv = demMed98*1000;

  Set   If(FALSE, Chart(SetOfSerie(demAgrDia, tre1998, demMedDiv),
                        "./011demandatendencia.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Tendencia de la demanda.",DemTrend);
//////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
Set DiaSem =
{
  Serie preLun = DatCh(      PrecioD, WD(1), FirstS); // Lunes
  Serie preMar = DatCh(    F:PrecioD, WD(1), FirstS); // Martes
  Serie preMie = DatCh((F^2):PrecioD, WD(1), FirstS); // Miercoles
  Serie preJue = DatCh((F^3):PrecioD, WD(1), FirstS); // Jueves
  Serie preVie = DatCh((F^4):PrecioD, WD(1), FirstS); // Viernes
  Serie preSab = DatCh((F^5):PrecioD, WD(1), FirstS); // Sabado
  Serie preDom = DatCh((F^6):PrecioD, WD(1), FirstS); // Domingo

  Set   If(FALSE, Chart(SetOfSerie(preLun,preMar,preMie,
                                   preJue,preVie,preSab,preDom),
                        "./012preciodiassemana.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Precios por dias de la semana.",DiaSem);
//////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
Set ViePre =
{
  Serie   vieDem = DatCh(DemandaD/1000000, WD(5), FirstS); // Demanda viernes
  TimeSet viSTms = Succ(Easter,-2); // Los Viernes Santos
  Serie   viSSer = (CalInd(viSTms, WD(5))*.15)+.5; 
  TimeSet viUTms = Succ(M(1)*D(1),-1, WD(5)); // Ultimos viernes del año
  Serie   viUSer = (CalInd(viUTms, WD(5))*.25)+.5; 
  TimeSet viATms = Succ(M(8)*D(18),-1, WD(5)); // Viernes central agosto
  Serie   viASer = (CalInd(viATms, WD(5))*.35)+.5; 

  Set   If(FALSE, Chart(SetOfSerie(vieDem, viSSer, viUSer, viASer),
                        "./013viernessanto.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Precios del Viernes Santo y otros viernes.",ViePre);
//////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
Set DemSem =
{
  Serie demSemSum = DatCh(DemandaD, WD(1), SumS); // suma en semanal
  Serie demSemAvg = DatCh(DemandaD, WD(1), AvrS); // media semanal  

  Set   If(TRUE, Chart(SetOfSerie(demSemSum, demSemAvg),
                        "x./014demandasemanal.gif"), Empty)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription("Demanda semanal acumulada y media diaria.",DemSem);
//////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////
// END
//////////////////////////////////////////////////////////////////////////////
Text WriteLn("\nElectricity.DemandPrice make: end");

2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio

Tol