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

Closed 11 years ago

#1056 closed enhancement (fixed)

Ordenación en ModelExcel

Reported by: tuyuan Owned by: Pedro Gea
Priority: critical Milestone: Development 1A
Component: ModelExcel Keywords:
Cc:

Description

Se ruega implementar nueva función de ordenación en el paquete ModelExcel:
Se añade dos columnas en libro parameters,
Con una columna se define grupos de parámetros, y
Con la otra se define la ordenación, por ejemplo en el mismo grupo si un parámetro de orden 1, y el otro de 2, se le impone la restricción de que el de 2 sea mayor que el de 1, en el grupo, si hay dos parámetros de misma orden, no se impone ordenación, y tampoco se impone ordenación entre parámetros de distintos grupos.

Change History (11)

comment:1 Changed 12 years ago by Pedro Gea

Status: newaccepted

comment:2 Changed 12 years ago by Pedro Gea

(In [3282]) Refs #1056
Se amplía el constructor de combinaciones de parámetros para representar restricciones de orden: CreateMCombinations_OrderConstraint para considerar un conjunto de índices.

comment:3 Changed 12 years ago by Pedro Gea

Las restricciones se imponen entre parámetros cuyos índices son consecutivos.
Por ejemplo, si el conjunto de pares parámetro índice es:

A 1
B 1
C 2
D 2
E 3

se generarán las restricciones:

A<=C
A<=D
B<=C
B<=D
C<=E
D<=E

comment:4 Changed 12 years ago by Pedro Gea

(In [3284]) Refs #1056
Se amplía la especificación de ModelExcel para la lectura de restricciones de orden sobre los parámetros, en base a dos columnas opcionales:

  • "order.group" con el nombre del grupo.
  • "order.index" con el índice del parámetro en el grupo.

comment:5 Changed 12 years ago by Pedro Gea

El ejemplo anterior se incoporaría a través de la llamada:

Set <model>::CreateMCombinations_OrderConstraint([[
  Text _.name = <name>;
  Set  _.parameters = [["A", "B", "C", "D", "E"]];
  Set _.indices = [[1, 1, 2, 2, 3]]
]]);

donde los textos "A", "B", ... serían los identificadores de los parámetros.

comment:6 Changed 12 years ago by Pedro Gea

Resolution: fixed
Status: acceptedclosed

comment:7 Changed 11 years ago by CN=Javier Marinero Ramos

Resolution: fixed
Status: closedreopened

Hola, buenas.

Me parece muy interesante esta funcionalidad y me gustaría sugerir una mejora.

En muchas ocasiones nos viene bien lograr que las elasticidades de precios en los modelos salgan en un determinado orden, por lo que esta funcionalidad nos viene muy bien. El problema es que las elasticidades de precio se calculan como el parámetro del input correspondiente multiplicado por un cierto peso. Por lo tanto, me gustaría solicitar que se incluyera una tercera columna de nombre "order.coefficient" (por ejemplo) que cuando no se rellene tengo un valor por defecto igual a uno, de forma que la comparación se haga no de los parámetros, si no del producto del parámetro por el número que se le indique.

Como sugerencia secundaria, quizás sería interesante la posibilidad de añadir distintos grupos de columnas de ordenación:

order.group.0, order.index.0 order.coefficient.0
order.group.1, order.index.1 order.coefficient.1
order.group.2, order.index.2 order.coefficient.2
.
.
.

para que un parámetro pueda estar en varias relaciones de orden simultáneamente. Aunque seguramente, esa necesidad se va a dar pocas veces.

Gracias por adelantado. Un saludo

comment:8 Changed 11 years ago by Pedro Gea

(In [4645]) Refs #1122, #1136, #1140, #1056
Se reincorpora el mecanismo generador de restricciones de orden, eliminado sin querer
con la "Reestructuración de la función generadora del modelo." [4619].

comment:9 Changed 11 years ago by Pedro Gea

(In [4647]) Refs #1153, #1056
Se crea una función en DegreeToName y se incorpora su uso en fun_model.tol.

comment:10 Changed 11 years ago by Pedro Gea

(In [4648]) Refs #1056
Se añade el argumento opcional "coefficients" al método generador de restricciones de orden.
Se incorpora también a ModelExcel.

comment:11 Changed 11 years ago by Pedro Gea

Resolution: fixed
Status: reopenedclosed

La información en ModelExcel queda, por ejemplo:

output input degree ... order.group order.index order.coefficient
"S1" "E1" 0 ... "G1" 1 2
"S1" "E2" 0 ... "G1" 2 3
S1__E1__Linear.0 * 2 <= S1__E2__Linear.0 * 3

En ausencia de columna "order.coefficient" se tomarán coeficientes unitarios.

Note: See TracTickets for help on using tickets.