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 14 years ago

Last modified 14 years ago

#1205 closed defect

TOL se queda colgado manejando una expresión de conjunto temporal vacío — at Version 2

Reported by: Víctor de Buen Remiro Owned by: Víctor de Buen Remiro
Priority: highest Milestone: Mantainance
Component: TimeAlgebra Version: head
Severity: blocker Keywords:
Cc: palmagro@…

Description (last modified by Víctor de Buen Remiro)

La siguiente expresión deja colgado a TOL durante horas aunque al final acaba dando un mensaje de warning:

TimeSet ConfUniversal        = D(1)*M(1) - WD(7);
TimeSet Tiradentes           = D(21)*M(4) - WD(7);
TimeSet DiaDoTrabalho        = D(1)*M(5) - WD(7);
TimeSet IndepBras            = D(7)*M(9) - WD(7);
TimeSet NossaSenApar         = D(12)*M(10) - WD(7);
TimeSet Finados              = D(2)*M(11) - WD(7);
TimeSet ProclamacaoRepublica = D(15)*M(11) - WD(7);
TimeSet Natal                = D(25)*M(12) - WD(7);
 
TimeSet TercaCarnaval = Succ(Easter,-47);
TimeSet Paixao                = Succ(Easter,-2);
TimeSet Corpus   = Succ(Easter,60);
 
TimeSet ConcienciaNegra      = D(20)*M(11) - WD(7); // Municipal SP
TimeSet CidadeSaoPaulo       = D(25)*M(1) - WD(7);  // Municipal SP
TimeSet RevolConst           = D(9)*M(7) - WD(7);   // Estadual SP
TimeSet FinA = D(31)*M(12) - WD(7);   //no es festivo, posiblemente la gente trabaja, pero tiene comportamiento similar al festivo.


TimeSet festivos = ConfUniversal  + FinA       +Tiradentes+DiaDoTrabalho 
       +IndepBras            +NossaSenApar         +Finados             
 +ProclamacaoRepublica +Natal                +TercaCarnaval +Paixao               
 +Corpus   +ConcienciaNegra      +CidadeSaoPaulo       +RevolConst + FinA;  
 
TimeSet festivodomingo = festivos * WD(7);
Serie Diafestivodomingo = CalInd(festivodomingo, Diario);

El problema es que festivos carece de domingos por construcción por lo que festivodomingo es el conjunto temporal vacío pero TOL no lo sabe ni hay forma de que lo sepa. Al intentar calcular el sucesor de una fecha en la intersección no hay otra forma que ver si el sucesor en el primero pertenece al segundo o viceversa y en caso contrario continuar sucesivamente, lo cual en este caso es para siempre jamás pues nunca encontrará un sucesor.

En cambio, esta otra expresión del mismo tipo

TimeSet festivodomingo = WD(3) * WD(7);
Serie Diafestivodomingo = CalInd(festivodomingo, Diario);

da el mensaje de forma inmediata

Warning: [1] BTmsIntersection::Successor ha sido abortado porque se ha salido del rango de cálculo 10000 veces para el TimeSet $tmp$ operando entre las fechas [y2011m01d01,y2203m09d07]
Se asumirá en los resultados el comportamiento de TimeSet acotado.

Aunque TOL no puede asegurar que no vaya a existir un sucesor más adelante considera sospechoso haber sobrepasado los 10000 intentos sin conseguirlo.

Hay que ver porqué no ocurre en el primer caso o encontrar otro criterio de parada más eficaz.

Change History (2)

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

(In [3545]) Refs #1205

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

Description: modified (diff)
Status: newaccepted
Note: See TracTickets for help on using tickets.