Actualización a MMS_0.6
Previsiones
La implementación de las previsiones varía sustancialmente en MMS_0.6. Los cambios son fruto de un conjunto de reuniones y discusiones (véase el acta Reunión sobre previsiones?).
Creación de una previsión
Una previsión en MMS_0.6 está compuesta por:
- un modelo (
MMS::@Model
) - un conjunto de parámetros estimados (
SetOf{Real|MMS::@Real.Random
}) - un conjunto de intervalos de previsión (
SetOf{MMS::@FInterval
}) - un conjunto de escenarios de previsión (
SetOf{MMS::@FScenario
}) - un conjunto de configuraciones
Código en MMS_0.5
// Se crea el objeto previsión: Real MMS::CreateForecast([[ Text _.name = <nombre>; @MMS.Estimation _.estimation = estimation; @MMS.SettingsEstimate _.settings = [[ Real _.showTraces = False ]] // -> Previsión puntual ]]); @MMS.Forecast forecast = MMS::GetForecast([[ estimation::GetModel(?)::GetName(0), estimation::GetModel(?)::GetVersion(0), <nombre> ]]); //Se definen los intervalos de previsión Real forecast::SetForecastInterval( ?, // para todos los outputs <firstForecast>, // fecha inicial <lastForecast> // fecha final ); //Se ejecuta la previsión Real forecast::Execute(?)
Código en MMS_0.6
MMS::@Forecast forecast = MMS::Container::CreateForecast[ReplaceForecast]([[ Text _.name = <nombre>; MMS::@Model _.model = <model>; MMS::@Estimation _.estimation = <estimation>; MMS::@SettingsForecast _.settings = [[ Text _.mode = <mode>; // Modo de la previsión "Point" o "Sample" ..... // Resto de settings compatible con el _.mode de la previsión ..... ]]; // Aquí se indica las fechas de comienzo y fin de la previsión, el primer campo expresa el nombre del submodelo al que se le asocian esas fechas. // Se admiten comodines, en el ejemplo "*" significa todos los submodelos, "All*" indicaría todos los submodelos que comiencen con "All". Set _.fIntervals = [[ Set [["*", Date <beginprev>, Date <endprev>]] ]] ]]); //Se ejecuta la previsión Real forecast::Execute(?);
Uso de Escenarios
Imaginemos que tenemos variables creadas que están un determinado escenario y queremos que la previsión se realice con ellas:
Anything dataset::CreateVariable([[ Text _.name = "Input1"; Text _.scenario = "Escenario1"; Text _.expression = "Serie Input1;" ]]);
En el ejemplo se ve la variable "Input1" con el Escenario "Escenario1".
Para especificar a la previsión que se ejecute con las variables en ese escenario usaremos:
Real forecast::SetFScenarios([[ [[ "*", "Escenario1" ]] ]]);
Esto hará que para todos los submodelos (usando el comodín "*") se use el escenario "Escenario1". Si queremos restringir o ampliar los submodelos que usen un escenario dado tendremos que indicarlo convenientemente:
Real forecast::SetFScenarios([[ [[ "submodelo1", "Escenario1" ]], [[ "submodelo2", "Escenario2" ]], ..... ]]);