close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 21 years ago

Closed 19 years ago

Last modified 18 years ago

#167 closed defect (fixed)

Efficiency problem when dealing with some TimeSet operations ?

Reported by: jimarin Owned by: Víctor de Buen Remiro
Priority: normal Milestone:
Component: TimeSetAlgebra Version: 1.1.1
Severity: normal Keywords:
Cc:

Description

Hi all,

I have found the following behaviour that seems an efficiency problem to me,
perhaps it is not, but I have preferred to point this out.

I try to define several festivities...

(I paste almost the whole file not to leave anything behind, I will indicate
afterwards which is the tricky part)


Festivos
Serie FesSaoPaulo.FundacaoDeSaoPaulo = CalInd(D(25)*M(1)-WD(7), Diario);
Serie FesSaoPaulo.RevolucaoDeSaoPaulo = CalInd(D(9)*M(7)-WD(7), Diario);

Natal Novo Paixao 02 03
Serie FesBrasil.Natal_02 = CalInd(Y(2002)*D(25)*M(12)-WD(7), Diario);
Serie FesBrasil.Natal_Escalon_PreAnoNovo_02 = CalInd(Range(Y(2002)*D(26)*M
(12),0,4), Diario);
Serie FesBrasil.Natal_PreSolo24_02 = CalInd(Y(2002)*D(24)*M(12)-WD(7),
Diario);
Serie FesBrasil.Natal_PulsoDomingoEntre26y30_02 = CalInd((Range(Y(2002)*D
(26)*M(12),0,4))*WD(7), Diario);
Serie FesBrasil.Natal_PulsoSabadoEntre26y30_02 = CalInd((Range(Y(2002)*D(26)
*M(12),0,4))*WD(6), Diario);
Serie FesBrasil.Ano_Novo_03 = CalInd(Y(2003)*D(1)*M(1)-WD(7), Diario);
Serie FesBrasil.Ano_Novo_Pre_02 = CalInd(Y(2002)*D(31)*M(12)-WD(7), Diario);
Serie FesBrasil.Paixao_03 = CalInd(Succ(Y(2003)*Easter,-6), Diario);
0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4+0.1*B5+0.1*B6

Natal Novo Paixao 03 04
Serie FesBrasil.Natal_03 = CalInd(Y(2003)*D(25)*M(12)-WD(7), Diario);
Serie FesBrasil.Natal_Escalon_PreAnoNovo_03 = CalInd(Range(Y(2003)*D(26)*M
(12),0,4), Diario);
Serie FesBrasil.Natal_PreSolo24_03 = CalInd(Y(2003)*D(24)*M(12)-WD(7),
Diario);
Serie FesBrasil.Natal_PulsoDomingoEntre26y30_03 = CalInd((Range(Y(2003)*D
(26)*M(12),0,4))*WD(7), Diario);
Serie FesBrasil.Natal_PulsoSabadoEntre26y30_03 = CalInd((Range(Y(2003)*D(26)
*M(12),0,4))*WD(6), Diario);
Serie FesBrasil.Ano_Novo_04 = CalInd(Y(2004)*D(1)*M(1)-WD(7), Diario);
Serie FesBrasil.Ano_Novo_Pre_03 = CalInd(Y(2003)*D(31)*M(12)-WD(7), Diario);
Serie FesBrasil.Paixao_04 = CalInd(Succ(Y(2004)*Easter,-6), Diario);
0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4+0.1*B5+0.1*B6

Natal Novo Paixao Common
Serie FesBrasil.Natal_Common = CalInd(D(25)*M(12)-WD(7), Diario);
Serie FesBrasil.Natal_Escalon_PreAnoNovo_Common = CalInd(Range(D(26)*M
(12),0,4), Diario);
Serie FesBrasil.Natal_PreSolo24_Common = CalInd(D(24)*M(12)-WD(7), Diario);
Serie FesBrasil.Natal_PulsoDomingoEntre26y30_Common = CalInd((Range(D(26)
*M(12),0,4))*WD(7), Diario);
Serie FesBrasil.Natal_PulsoSabadoEntre26y30_Common = CalInd((Range(D(26)*M
(12),0,4))*WD(6), Diario);
Serie FesBrasil.Ano_Novo_Common = CalInd(D(1)*M(1)-WD(7), Diario);
Serie FesBrasil.Ano_Novo_Pre_Common = CalInd(D(31)*M(12)-WD(7), Diario);
Serie FesBrasil.Paixao_Common = CalInd(Succ(Easter,-6), Diario);
0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4+0.1*B5+0.1*B6

ciclo semanal Natal 02_03, 03_04
TimeSet nav_02 = In(y2002m12d23, y2003m1d6, Diario);
TimeSet nav_03 = In(y2003m12d22, y2004m1d5, Diario);
Serie cs1_02 = CalInd(nav_02*WD(1), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs2_02 = CalInd(nav_02*WD(2), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs3_02 = CalInd(nav_02*WD(3), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs4_02 = CalInd(nav_02*WD(4), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs5_02 = CalInd(nav_02*WD(5), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs6_02 = CalInd(nav_02*WD(6), Diario) - CalInd(nav_02*WD(7), Diario);
Serie cs1_03 = CalInd(nav_03*WD(1), Diario) - CalInd(nav_03*WD(7), Diario);
Serie cs2_03 = CalInd(nav_03*WD(2), Diario) - CalInd(nav_03*WD(7), Diario);
Serie cs3_03 = CalInd(nav_03*WD(3), Diario) - CalInd(nav_03*WD(7), Diario);
Serie cs4_03 = CalInd(nav_03*WD(4), Diario) - CalInd(nav_03*WD(7), Diario);
Serie cs5_03 = CalInd(nav_03*WD(5), Diario) - CalInd(nav_03*WD(7), Diario);
Serie cs6_03 = CalInd(nav_03*WD(6), Diario) - CalInd(nav_03*WD(7), Diario);
Serie niv_02 = CalInd(nav_02, Diario);
Serie niv_03 = CalInd(nav_03, Diario);

ciclo semanal Natal
TimeSet semana25 = Range(Range(M(12)*D(25), -6, 0)*WD(1),0,6);
TimeSet semana31 = Range(Range(M(12)*D(25), -6, 0)*WD(1),0,6);

niveles iguales para los dos años, distintos para las dos semanas
Serie nivSemana25 = CalInd(semana25, Diario);
Serie nivSemana31 = CalInd(semana31, Diario);

ciclos distintos para los dos años, iguales para las dos semanas
TimeSet navp_02 = In(y2002m12d23, y2003m1d5, Diario);
TimeSet navp_03 = In(y2003m12d22, y2004m1d4, Diario);
Serie cps1_02 = CalInd(navp_02*WD(1)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps2_02 = CalInd(navp_02*WD(2)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps3_02 = CalInd(navp_02*WD(3)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps4_02 = CalInd(navp_02*WD(4)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps5_02 = CalInd(navp_02*WD(5)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps6_02 = CalInd(navp_02*WD(6)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_02*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps1_03 = CalInd(navp_03*WD(1)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps2_03 = CalInd(navp_03*WD(2)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps3_03 = CalInd(navp_03*WD(3)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps4_03 = CalInd(navp_03*WD(4)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps5_03 = CalInd(navp_03*WD(5)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Serie cps6_03 = CalInd(navp_03*WD(6)-D(24)-D(25)-D(31)-D(1), Diario) -

CalInd(navp_03*WD(7)-D(24)-D(25)-D(31)-D(1), Diario);

Carnaval
Serie FesBrasil.CarnavalEsp = CalInd(Succ(Easter, -56, Diario), Diario);
Serie FesBrasil.Carnaval_EscalonNeg = CalInd(Range(Succ(Easter,-55),0,4),
Diario);
Serie FesBrasil.Carnaval_Pulsos = CalInd(Succ(Easter,-50), Diario);
0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4

Serie FesBrasil.Pre_CorpusChristi = CalInd(Succ(Easter, 59)-WD(7), Diario);
Serie FesBrasil.CorpusChristi = CalInd(Succ(Easter, 60)-WD(7), Diario);
Serie FesBrasil.DiaDoTrabalho = CalInd(D(1)*M(5)-WD(7), Diario);
Serie FesBrasil.Finados = CalInd(D(1)*M(11)-WD(7), Diario);
Serie FesBrasil.IndependenciaDoBrasil = CalInd(D(7)*M(9)-WD(7), Diario);

Serie FesBrasil.NSAparecida = CalInd(D(12)*M(10)-WD(7), Diario);
Serie FesBrasil.ProclamacaoDaRepublica = CalInd(D(15)*M(11)-WD(7), Diario);
Serie FesBrasil.Tiradentes = CalInd(D(21)*M(4)-WD(7), Diario);

TimeSet FesBrasilSaoPaulo =
(

SerTms(FesSaoPaulo.FundacaoDeSaoPaulo) +
SerTms(FesSaoPaulo.RevolucaoDeSaoPaulo) +

SerTms(FesBrasil.Natal_Common) +
SerTms(FesBrasil.Natal_Escalon_PreAnoNovo_Common) +
SerTms(FesBrasil.Natal_PreSolo24_Common) +
SerTms(FesBrasil.Natal_PulsoDomingoEntre26y30_Common) +
SerTms(FesBrasil.Natal_PulsoSabadoEntre26y30_Common) +
SerTms(FesBrasil.Ano_Novo_Common) +
SerTms(FesBrasil.Ano_Novo_Pre_Common) +
SerTms(FesBrasil.Paixao_Common) +

SerTms(FesBrasil.CarnavalEsp) +
SerTms(FesBrasil.Carnaval_EscalonNeg) +
SerTms((0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4):FesBrasil.Carnaval_Pulsos) +

SerTms(FesBrasil.Pre_CorpusChristi) +
SerTms(FesBrasil.CorpusChristi) +
SerTms(FesBrasil.DiaDoTrabalho) +
SerTms(FesBrasil.Finados) +
SerTms(FesBrasil.IndependenciaDoBrasil) +
SerTms(FesBrasil.NSAparecida) +
SerTms(FesBrasil.ProclamacaoDaRepublica) +
SerTms(FesBrasil.Tiradentes)

);

TimeSet FesEspeciales =
(

SerTms(FesBrasil.CarnavalEsp) +
SerTms(FesBrasil.Carnaval_EscalonNeg) +
SerTms((0.1+0.1*B+0.1*B2+0.1*B3+0.1*B4):FesBrasil.Carnaval_Pulsos) +
SerTms(FesBrasil.Finados)

);

TimeSet FesNoEspeciales = FesBrasilSaoPaulo-FesEspeciales;
TimeSet FesSab = FesNoEspeciales*WD(6);
TimeSet FesPuenteVie = FesNoEspeciales*WD(5);
TimeSet FesPuenteJue = FesNoEspeciales*WD(4);
TimeSet FesPuenteMar = FesNoEspeciales*WD(2);

TimeSet FesPrePuenteVie = Succ(FesPuenteVie, -1);
TimeSet FesPrePuenteJue = Succ(FesPuenteJue, -1);
TimeSet FesPrePuenteMar = Succ(FesPuenteMar, -4);
TimeSet FesPosPuenteVie = Succ(FesPuenteVie, 3);
TimeSet FesPosPuenteJue = Succ(FesPuenteJue, 4);
TimeSet FesPosPuenteMar = Succ(FesPuenteMar, 1);

The tricky part (in my Jul 23 2004 version of tol) comes when
trying to visualise the FesPrePuenteVie TimeSet or when
computing and visualising another one like:

TimeSet Succ(FesNoEspeciales, -1, Diario);

From my point of view Succ should be modifying the rule FesNoEspeciales uses for
computation so as to be as fast for visualising as this is.

Is this so?

Is there an efficiency problem?

Thanks !

Jose Ignacio

Change History (4)

comment:1 Changed 19 years ago by Víctor de Buen Remiro

Owner: changed from danirus to Víctor de Buen Remiro

Pardon to have forgotten this bug.
We are working about it
Thanks to report it

comment:2 Changed 19 years ago by Víctor de Buen Remiro

Status: newassigned

comment:3 Changed 19 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: assignedclosed

comment:4 Changed 18 years ago by Víctor de Buen Remiro

bug_file_loc: http://cvs.tol-project.org/viewcvs.cgi/tol_tests/tol/Bugzilla/bug_000167
Note: See TracTickets for help on using tickets.