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
Status: | new → accepted |
---|
comment:2 Changed 12 years ago by
comment:3 Changed 12 years ago by
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
(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
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
Resolution: | → fixed |
---|---|
Status: | accepted → closed |
comment:7 Changed 11 years ago by
Resolution: | fixed |
---|---|
Status: | closed → reopened |
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
comment:9 Changed 11 years ago by
comment:10 Changed 11 years ago by
(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
Resolution: | → fixed |
---|---|
Status: | reopened → closed |
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.
(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.