| Version 2 (modified by , 11 years ago) (diff) |
|---|
El siguiente pseudo-código ilustra como generar un forecast basado en un escenario
NameBlock forecast = ...
NameBlock dataSet = forecast::GetModel(?)::GetDataSet(?);
Text scenarioName = "SCE";
// Incorporamos el escenario al forecast
Real forecast::SetScenarios(forecast::GetScenarios(?)<<[[scenarioName]]);
// -----------------------
// Variable a simular:
Text vName = "....";
NameBlock v = dataSet::GetVariable(?);
// Preparamos los datos nuevos:
Serie data = v::GetData(?); // Datos originales
Serie dataE = v::GetData.Extended(?) // Datos extendidos con la regla de extensión
Text extRule = v::GetExtensionRule(?) // Regla de extensión
// Manualmente puede extenderse así:
Serie MMS::ExtendSerie_Rule(data, First(dataE), Last(dataE), extRule);
// Usamos los datos extendidos para crear nuestro escenario:
Serie dataMod = dataE * Gaussian(1.0, 0.2, Dating(dataE));
Set scenarioData = { [[
PutName(vName, dataMod)
]] };
// Creamos el v-scenario:
// Creamos un escenario a la variable con los datos que consideremos:
NameBlock vs = v::CreateVScenario([[
Text _.name = scenarioName;
Text _.expression = "Serie scenarioData::"<<v::GetName(?)
]]);
// La serie usada en la previsión será:
Serie v::GetData_Scenarios([[scenarioName]]);
Serie data >> dataMod; // los datos reales priman sobre el escenario
// -----------------------
// Actualizamos el forecast
Real forecast::Update_Scenarios([[scenarioName]]);
// Hacemos esto cada vez que cambiemos la serie (o series) de "scenarioData"
![(please configure the [header_logo] section in trac.ini)](/mms/chrome/site/logomms.png)