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 )
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
comment:2 Changed 15 years ago by
comment:3 Changed 15 years ago by
Description: | modified (diff) |
---|---|
Owner: | set to Pedro Gea |
Status: | new → accepted |
comment:4 Changed 15 years ago by
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
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
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
nota: código correto