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 13 years ago

Closed 13 years ago

Last modified 13 years ago

#1018 closed enhancement (fixed)

Variables dependientes en Set

Reported by: Ines Miranda Owned by: Pedro Gea
Priority: major Milestone: Development 1A
Component: ModelExcel Keywords: set, dataset, ModelExcel
Cc: sippfe.valerd@…

Description

Hola,
no sé si va contra la lógica inicial de la definición de variable, pero seria muy útil poder tener, en el ModelExcel, sets a partir de variables independientes, para poder utilizarlos en algunas de las expresiones de variables dependientes.
Por ejemplo, poder definir inputs en el modelo de la siguiente forma:
Vairables.I : Serie var1, Serie var2, Serie var3, Matrix mat1
Variables.D : set1 =var1,var2,var3?, Serie varD = mat1*set1

Gracias

Change History (2)

comment:1 Changed 13 years ago by Pedro Gea

Resolution: fixed
Status: newclosed

Realmente eso que dices no va en contra de ninguna asunción inicial, sin embargo sí que supone un cierto cambio en el diseño del módulo de variables que no es trivial.

Por ejemplo, en el bloque de funciones de ortogonalización (#1024) se introdujo una función para llevar a cabo lo mismo que aquí se plantea sin necesidad de definir una variable múltiple o de tipo set.

Para ello se tiene localizado un conjunto de variables (Set variables seleccionadas por algún criterio, (véase #1017) y una función (MMS::Ortho::GetSerie}) que permite la operación que necesitas.

La creación de un nuevo conjunto de variables dependientes quedaría como:

Set For(1, Card(variables), Anything (Real i) {
  ...
  MMS::@Variable vDep = dataSet::CreateVariable([[
    Text _.name = newName;
    Text _.type = "Serie";
    // Nótese que %A representa a todo el conjunto de dependencias
    // y que la función MMS::Ortho::GetSerie espera dos argumentos:
    //  (1) El primero es un conjunto con una matriz cuadrada y luego 
    //      tanta series como filas o columnas tiene la matriz.
    //  (2) El segundo es el índice de una de las nuevas series obtenidas
    //      al hacer un cambio de base con la matriz y las series. 
    Text _.expression = "Serie MMS::Ortho::GetSerie(%A, "<<i<<")";
    Set _.dependences = [[ matrixName ]] << EvalSet(variables, Name)
  ]])
})

comment:2 Changed 13 years ago by Pedro Gea

Milestone: Development 1A
Note: See TracTickets for help on using tickets.