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

Opened 14 years ago

Closed 13 years ago

#510 closed enhancement (fixed)

Inicio y fin de la ejecución de una estimación

Reported by: imendez Owned by:
Priority: major Milestone: Release 0.6
Component: Estimation Keywords:
Cc:

Description (last modified by Pedro Gea)

Se solicita la creación de:

  • Dos atributos para la clase Estimation que recojan la hora de inicio y fin de la ejecución de una estimación.
  • Los correspondientes métodos de acceso a dichos atributos.
  • Otro método que devuelva la duración de la ejecución (por ejemplo, un real con los segundos).

Gracias.

Change History (9)

comment:1 Changed 14 years ago by Pedro Gea

Description: modified (diff)
Milestone: Release 0.6

comment:2 Changed 14 years ago by Pedro Gea

(In [2401]) Se crea un objeto para la gestión de informes.
Refs #510

comment:3 Changed 14 years ago by Pedro Gea

(In [2404]) Se da homogeneidad a las clases de las estrategias y subestrategias.
Se reubica el adaptador de resultados (y los resultados nativos) así como otra información no persistente en la estrategia.
Se facilita el acceso a otra información temporal de estimación (y se retarda su destrucción) para facilitar la comprensión de los mecanismos de adaptación y su depuración.
Se añaden informes de los procesos de estimación en la estrategia.
Se separa la subestrategia LinReg en dos según su uso con submodelos o con jerarquías.
Se elimina la dependencia provisional de algunos adaptadores con las clases de resultados.
Refs #563, #510

comment:4 Changed 14 years ago by Pedro Gea

(In [2410]) Se introducen informes en las estrategias
Refs #510

comment:5 Changed 14 years ago by Pedro Gea

Se han introducido informes en el objeto @Strategy sobre los procesos de estimación.

La información accesible en la estrategia (salvo su configuración, las settings) es temporal (no es persistente, no está accesible al acceder a un objeto almacenado) y es útil para su consulta después del proceso de estimación, para depuración de errores y para una primera diagnosis.

Los informes son nameblocks con distintos atributos, en su primera versión son:

Text Name     // Nombre del proceso
Date Begin    // Instante de inicio del proceso
Date End      // Instante de fin del proceso
Real Duration // Duración del proceso
Real Errors   // Número de errores durante el proceso
Real Warnings // Número de adevertencias durante el proceso

Por ejemplo, en el proceso de estimación con BSR se distinguen tres procesos:

  • Preparation.Master: la creación del adaptador del modelo en BSR (atributo _.bsrMaster)
  • Preparation.Cycler: la creación del objeto estimador de BSR (atributo _.bsrCycler)
  • Execution: el proceso de estimación/simulación (atributo _.results)

Para obtener el tiempo total consumido por todo el proceso podemos hacer:

Set reports = <estimation>::GetStrategy(?)::GetReports(?);
Real duration = SetSum(EvalSet(reports, Real (NameBlock report) { 
  report::Duration
}));

comment:6 Changed 14 years ago by Pedro Gea

Resolution: fixed
Status: newclosed

Nótese que estos atributos (con los tiempos del proceso) no son persistentes. Se entiende que no son necesarios (desde el punto de vista de la modelación) más allá del proceso de estimación.

Si desean conservarse pueden usarse los atributos de usuario.

Si esto no fuera suficiente o se sugiere otra alternativa, reábrase el tique (action: reopen) o ábrase uno nuevo.

comment:7 Changed 14 years ago by atorre

Resolution: fixed
Status: closedreopened

Hola pgea,
puedes aclarar un poco tu comentario de "Si desean conservarse pueden usarse los atributos de usuario."? Qué se debe hacer si quieren guardar? A mí me parece que sí deberían ser persistentes (opcionalmente) para poder hacer diagnosis sobre la duración de los procesos... por ejemplo, sería muy útil, dado un listado grande (>1000) de estimaciones, poder identificar las que más tiempo tardan en ejecutarse... suele ser un buen indicador de problemas en la definición de los modelos.

Gracias por adelantado.

comment:8 Changed 14 years ago by Pedro Gea

Hola,
intento explicar la posibilidad de usar los atributos de usuario para almacenar información adicional.

La idea original de crear atributos de usuario aparece en los objetos MMS::@Variable (véase #410) para almacenar junto a la variable otra información sobre sus dimensiones, características, clasificaciones, etc.
El acceso de estos atributos de la variable se extiende al grupo de clases del módulo de modelos, pudiendo una m-variable, un término explicativo o incluso un parámetro obtener fácilmente los atributos de la variable con la que están relacionados.

Los atributos de usuario se extienden después a los objetos principales (MMS::@MainObject): el dataset, el modelo, la estimación, la previsión,... (véase #500). Estos atributos son persistentes y permiten a los proyectos que así lo necesiten particularizar la información que se almacena junto a los objetos.

// Disponemos de una estimación
Real estimation::Execute(?);
// Tras ejecutarla obtenemos una determinad información de los 
// informes de la estrategia como la duración de la estimación 
// que presentábamos antes:
Set reports = estimation::GetStrategy(?)::GetReports(?);
Real duration = SetSum(EvalSet(reports, Real (NameBlock report) { 
  report::Duration
}));
// Almacenamos ese real como un atributo de tipo texto:
Real estimation::SetAttribute("_.duration", Text ""<<duration);

// Posteriormente podremos acceder a esa información:
Real Eval(Text estimation::GetAttribute("_.duration"));


Me doy cuenta de que por ahora sólo se admiten atributos de tipo Text, de modo que no es todo lo general que se podría desear, veré la posibilidad de ampliarlo a otros tipos (#410).

Entiendo que puedes pensar que podría almacenarse automáticamente ésta u otra información, pero en principio creo más conveniente intentar favorecer la sencillez y lo general que lo particular, y que un determinado proyecto tenga la posibilidad de adecuar la información de sus objetos a dus necesidades. Aunque eso no quita que podamos definir más adelante una determinada información para almacenar por defecto.

comment:9 Changed 13 years ago by Pedro Gea

Resolution: fixed
sensitive: 0
Status: reopenedclosed
Note: See TracTickets for help on using tickets.