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

Closed 15 years ago

#244 closed defect (fixed)

Problemas com a função MMS::RemoveEstimations()

Reported by: Daniel Noce da Silva Owned by: Pedro Gea
Priority: blocker Milestone:
Component: Estimation Keywords:
Cc:

Description (last modified by Pedro Gea)

1-

Considere uma estimação e sua respectiva previsão carregadas no MMS. O valor do Real MMS::RemoveEstimation("Mat.Veh__1.0__BSR") é 1.

Quando vamos fazer o mesmo para a previsão Real MMS::RemoveEstimation("Mat.Veh__1.0__Veh.Tur.Mat__1.0__BSR") retorna 0.

No entanto, a previsão é removida. O mesmo acontece quando estas duas linhas sao compiladas na ordem inversa.

Text nameSubModel = "Veh.Tur.Mat__1.0__BSR";
Text outputName = "Veh.Tur.Mat";

Real MMS::CreateForecast([[
      Text _.name = nameSubModel;
      @MMS.Estimation _.estimation =  estBSR;
      @MMS.SettingsEstimate _.settings = [[
        Real _.showTraces = False
      ]]

    ]]);

    Date endEst = estBSR::GetModel_(?)::GetOutput(outputName)::GetLast(?);
    Date beginPrev = Succ(endEst,Mensual,1);
    Date endPrev = Succ(endEst,Mensual,20);

    Text name = estBSR::GetModel_(?)::GetName(?);
    Text version = estBSR::GetModel_(?)::GetVersion(?);
    @MMS.Forecast forecast =
      MMS::GetForecast([[name,version,nameSubModel]]);

    Real forecast::SetForecastInterval(?, beginPrev, endPrev);
    Real forecast::Execute(?);
    Real forecast::Store(Ois.DefRoot+"MMS/Forecast/"+forecast::GetIndex(?)+".oza");

// Aqui esta o problema:

MMS::RemoveEstimation("Mat.Veh__1.0__BSR");
MMS::RemoveEstimation("Mat.Veh__1.0__Veh.Tur.Mat__1.0__BSR");

2-
Há variáveis input que precisam de uma previsão.

Temos uma função que carrega as previsoes e estimações para gerar estes inputs.

Apos gerar os inputs estas estimações são removidas. Quando esta função é chamada dentro da estimação acontece o seguinte erro:

ERROR: [1] Corrupted method DirectFunction
Possibly this problem is due to a non standard use of OOP, if this function was assigned to a member of type Code of a NameBlock or Class instance that has been destroyed already.</E>

Mesmo quando a serie é obtida da seguinte forma:

Serie output = Copy(results::GetOutput(submodel))


Change History (6)

comment:1 Changed 15 years ago by Daniel Noce da Silva

nota: código correto

Text nameSubModel = "Veh.Tur.Mat__1.0__BSR";
Text outputName = "Veh.Tur.Mat";

Real MMS::CreateForecast([[
      Text _.name = nameSubModel;
      @MMS.Estimation _.estimation =  estBSR;
      @MMS.SettingsEstimate _.settings = [[
        Real _.showTraces = False
      ]]

    ]]);

    Date endEst = estBSR::GetModel_(?)::GetOutput(outputName)::GetLast(?);
    Date beginPrev = Succ(endEst,Mensual,1);
    Date endPrev = Succ(endEst,Mensual,20);

    Text name = estBSR::GetModel_(?)::GetName(?);
    Text version = estBSR::GetModel_(?)::GetVersion(?);
    @MMS.Forecast forecast =
      MMS::GetForecast([[name,version,nameSubModel]]);

    Real forecast::SetForecastInterval(?, beginPrev, endPrev);
    Real forecast::Execute(?);
    Real forecast::Store(Ois.DefRoot+"MMS/Forecast/"+forecast::GetIndex(?)+".oza");

// Aqui esta o problema:

MMS::RemoveEstimation("Mat.Veh__1.0__BSR");
MMS::RemoveEstimation("Mat.Veh__1.0__Veh.Tur.Mat__1.0__BSR");

comment:2 Changed 15 years ago by Pedro Gea

(In [1320]) Revisión de la implementación del atributo _.transformation para intentar evitar un error del tipo: Corrupted method.
Refs #244

comment:3 Changed 15 years ago by Pedro Gea

Description: modified (diff)
Owner: set to Pedro Gea
Status: newaccepted

comment:4 Changed 15 years ago by Pedro Gea

Hola Daniel,
según parece son dos tiques en uno, ya que parece que el primero (1-)
no tiene mucho que ver con el segundo (2-).

He modificado un poco el enunciado del tique para que sea un poco más legible,
para ello puedes utilizar los símbolos {{{ y }}} para encerrar
las expresiones de código haciendo o bien:

Dentro del texto cito el nombre de una variable o una función, por ejemplo {{{Exp}}}.
O bien encierro todo un trozo de código del siquiente modo:
{{{
Real a = 1;
}}}

El parte (1-) creo que ya está resuelta y es que el criterio del
Real que devolvía no era lo que imaginabas, devolvía el número de
estimaciones/previsiones restantes en el contenedor,
y no si el método habia tenido éxito o no.

La parte (2-) estoy en ello. He subido unos cambios en la implementación
interna del atributo _.transformation de la clase @MMS.ModelVariable
que podría solucionar el problema.
Si no, buscaremos algún modo de trazar o aislar el problema.

comment:5 Changed 15 years ago by Pedro Gea

El error se producía en el proceso de obtención de la variable.
Ésta se obtenía de una estimación guardada.
En el mecanismo de eliminación de la estimación cargada temporalmente
se ocultaba la visibilidad de la transformación de alguna manera que
no es fácil de explicar.

Simplemente obteniendo los datos de la variable, antes de utilizar
la transformación, este problema desaparece.

comment:6 Changed 15 years ago by Pedro Gea

Resolution: fixed
Status: acceptedclosed

(In [1324]) Soluciona un bug ocasionado por algún problema de visibilidad de los objetos de TOL.
Refs #244 Closes #244

Note: See TracTickets for help on using tickets.