Opened 11 years ago
Last modified 11 years ago
#1173 new enhancement
Forecast ágil (QFS) y optimización
Reported by: | Pedro Gea | Owned by: | Pedro Gea |
---|---|---|---|
Priority: | major | Milestone: | Development 1B |
Component: | Forecast | Keywords: | |
Cc: |
Description
Se solicita incorporar la información económica disponible a través de los atributos de las variables para poder realizar optimizaciones.
Véase #1168
Change History (6)
comment:1 Changed 11 years ago by
comment:2 Changed 11 years ago by
comment:3 Changed 11 years ago by
Milestone: | Maintenance → Development 1B |
---|
comment:4 Changed 11 years ago by
¿Cómo construir un forecast ágil (qfs)?
Dado un forecast común de MMS hacemos:
// Para construir el objeto NameBlock qfs = MMS::QFS::BuildForecast(forecast); // Para preparar la caché y ahorrarse ese tiempo luego Real qfs::InitializeCache(?);
El objeto resultante puede guardarse sin problemas en un OZA, ya que no es instancia de ninguna clase. Por ejemplo:
Real Ois.Store([[qfs]], "<...>/qfs.oza");
comment:5 Changed 11 years ago by
¿Cómo obtener decos y duetos de un forecast ágil (qfs)?
Una vez creado o cargado el objeto, han de usarse los métodos implementados en DecoTools, en el módulo DecoTools::Modelling.
Por ejemplo:
// El conjunto "bag" se utiliza para almacenar resultados intermedios // auxiliares que pueden ser reutilizados en otras llamadas Set bag = Copy(Empty); // NameBlock de opciones para el cálculo de decos NameBlock options = [[ Text _.submodel = qfs::_.submodels.name[1]; Date _.begin = y2011; Real _.withForecast = False ]]; // Deco atómica Set dAto = DecoTools::Modelling::DecoAtomic(qfs, "_.decoagr", "BaseFirstIn.SynergyFree", options, bag); // Deco agrupada (atómica y luego agrupada) Set dGrp = DecoTools::Modelling::DecoGrouped(qfs, "_.decoagr", "BaseFirstIn.SynergyFree", options, bag); // Deco agregada (se agregan los términos antes de hacer el cálculo) Set dAgg = DecoTools::Modelling::DecoAggregated(qfs, "_.decoagr", "BaseFirstIn.SynergyFree", options, bag); Set dtAgg = DecoTools::DueTo.Dating(dAgg, Yearly); Set dtAgg_Y = DecoTools::Deco.Serie.DatCh(dtAgg, Yearly, SumS); // DueTo secuencial Set dt0 = DecoTools::Modelling::SequentialDueTo(qfs, "_.decoagr", options, bag); Set dt0_Y = DecoTools::Deco.Serie.DatCh(dt0, Yearly, SumS); // DueTo secuencial para una fecha dada Set dt0_2013 = DecoTools::Modelling::SequentialDueTo.Date(qfs, "_.decoagr", y2013, "Yearly", options, bag);
comment:6 Changed 11 years ago by
¿Cómo obtener distintas simulaciones (escenarios) con un forecast ágil (qfs)?
Una vez creado o cargado el objeto creamos un escenario con el conjunto de drivers que desean cambiarse:
Set scenario = [[ Serie DriverName1 = ... ... ]];
y lo aplicamos usando:
Real qfs::Use(scenario);
Luego basta simplemente con obtener el resultado que deseemos, por ejemplo:
Serie qfs::Submodel.GetObservations(<submodelName>);
La diferencia entre los métodos ::Use
y :UseAdd
radica en que el primero restaura el escenario original antes de aplicar el nuevo escenario.
Así:
Real qfs::Use(sce1); Real qfs::Use(sce2); // => equivale a sólo: qfs::Use(sce2);
mientras que:
Real qfs::UseAdd(sce1); Real qfs::UseAdd(sce2); // => equivale a: qfs::Use(sce1<<sce2);
Nótese que ::Use(Empty)
restaura el escenario original.
(In [4693]) Refs #1173
Se incorporan los atributos de drivers y submodelos.