Version 4 (modified by 14 years ago) (diff) | ,
---|
Actualización a MMS_0.6
Combinación de Previsiones
MMS permite definir de una forma cómoda restricciones lineales entre previsiones obtenidas. Es decir, las previsiones pueden modificarse en virtud de su incertidumbre para satisfacer una determinada combinación lineal entre ellas. Desde el punto de vista formal se recurre a la noción de Distancia de Mahalanobis para determinar cuanto han de modificarse las previsiones.
El tratamiento de la combinación de previsión en MMS parte de la existencia de una propia clase para ellas: MMS::@Combination
. Esta clase define los objetos <combination>
sobre los que especificaremos las contraints que queremos que se satisfagan. Asimismo dichos objetos <combination>
formarán parte del Container de MMS: MMS::Container::_.combinations
.
Antes de explicar como definir y usar los objetos combination
es importante que tengamos a mano la información necesaria y en su forma correcta para la creación de los mismos. Para ello contamos con el método CreateForecastDataSet
de la clase MMS::@Forecast
. Este método lo usamos con aquella/s previsión/es para las que queramos hacer combinación. Simplemente haríamos: Anything forecast::CreateForecastDataSet(?);
, con esto creamos un dataset
que reúne la información necesaria. Ese dataset lo podremos guardar en el repositorio (usando Save_Repository
) para un posterior uso.
Comenzamos creando un objeto combination
MMS::@Combination combination = MMS::Container::ReplaceCombination([[ Text _.name = <nombre de la combinación>; Set _.dataSets = [[ "<datset1>", "<dataset2>", .... ]] ]]);
Notemos que en el conjunto _.dataSets pondremos los nombres de los datasets que vamos a usar. Lo siguiente será crear las C-variables
, éstas definen en abstracto las variables que serán susceptibles de modificarse para satisfacer las restricciones de combinación lineal deseadas. Cada C-variable
tendrá que asociarse a una variable de las que existan en _.dataSets
.
Por lo general tendremos que crear una C-variable
por cada serie de previsión que entre en la combinación. Se crean de la forma siguiente:
Anything combination::CreateCVariable([[ Text _.name = <name>; Text _.variableIdentifier = <variablename> ]])
Como vemos la C-variable
necesita llamarse con un nombre _.name
y dar el nombre de la variable sobre la que está asociada _.variableIdentifier
.
Una vez creadas las C-variables
es el momento de crear las restricciones entre ellas, mediante el método CreateCConstraint
, para que la restricción quede definida tenemos que darle un nombre, el conjunto de C-variables
y los coeficientes a1, a2, ..., aN
que entran en la combinación lineal. Estos están especificados de la forma siguiente:
a1*C-var1 + a2*C-var2 + a3*C-var3 + .... + aN*C-varN = 0
Así creamos las restricciones:
Anything combination::CreateCConstraint([[ Text _.name = "Veh.º.Mat_Forecast"; Set _.cVariables = forecastNames; Set _.coefficients = [[1,1,1,1,1,1,(Real -1)]] ]]);
EN CONSTRUCCIÓN