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 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 Pedro Gea

(In [4693]) Refs #1173
Se incorporan los atributos de drivers y submodelos.

comment:2 Changed 11 years ago by Pedro Gea

(In [4694]) Refs #1173, #1168
Se facilita el acceso a los atributos.

comment:3 Changed 11 years ago by Pedro Gea

Milestone: MaintenanceDevelopment 1B

comment:4 Changed 11 years ago by Pedro Gea

¿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 Pedro Gea

¿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 Pedro Gea

¿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.

Note: See TracTickets for help on using tickets.