Download - Como entender Gams
![Page 1: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/1.jpg)
(General Algebraic Modeling System)
Verano Científico 2012 PISIS
L.M. Nancy Maribel Arratia Martínez
L.I.A. Cristina Maya Padrón
![Page 2: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/2.jpg)
VERANO CIENTÍFICO 2012 PISIS
L.M. NANCY MARIBEL ARRATIA MARTÍNEZ L.I.A. CRISTINA MAYA PADRÓN
INTRODUCCIÓN A GAMS
![Page 3: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/3.jpg)
La herramienta GAMS
Es un lenguaje, soportado por un paquete informático, que permite especificar un problema de programación matemática independientemente del método de resolución asociado al mismo. Los problemas a tratar han de ser de naturaleza algebraica no pudiendo especificarse problemas de optimización con ecuaciones diferenciales de forma directa.
GAMS está diseñado específicamente para el modelado de problemas de optimización lineales, no lineales, enteros y mixtos. El sistema es especialmente útil con problemas grandes y complejos.
![Page 4: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/4.jpg)
La herramienta GAMS
GAMS se utiliza en una gran variedad de áreas como los son: ingeniería agrícola, ingeniería química, econometría, finanzas, economía ambiental, energía, logística, matemáticas, física, comercio internacional, micro/macro economía, investigación de operaciones, etc.
![Page 5: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/5.jpg)
Windows
En Windows, Gams tiene un IDE (ambiente integrado de desarrollo) que permite, entre muchas cosas más, editar (escribir) el archivo y ejecutar Gams. Este archivo donde se escribe el problema tiene extensión .gms.
El archivo .gms es de tipo ASCII y puede ser escrito con cualquier editor para este tipo de archivos (Emacs, Bloc de notas, ...). El editor del ambiente Gams tiene una gran ventaja, resalta con diferente color las palabras específicas de Gams.
![Page 6: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/6.jpg)
Windows
Gams utiliza el archivo .gms y si está bien escrito resuelve el problema. Creando un archivo .lst donde está la información sobre la solución.
Si en el archivo .gms hay errores, entonces en el archivo .lst aparece una transcripción , con numeración de los renglones, e inmediatamente después de una línea errónea, aparece algo semejante a :
**** $409
El valor 409 (u otro valor) es un código de error. Un poco más adelante, en el archivo .lst, aparece el significado de cada uno de los códigos de los errores ocurridos.
![Page 7: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/7.jpg)
Linux
En Linux, Gams no viene con ambiente integrado. El archivo .gms se puede escribir con cualquier editor de texto (Emacs, vi, Kate, ... ). Para invocar Gams, desde una ventana se da la orden
gams archivo.gms
También se puede dar la orden sin explicitar la extensión gams archivo
De nuevo, se crea un archivo .lst donde está el resultado, bien sea la solución, o bien información sobre los errores de la misma manera que en Windows (ver sección anterior).
![Page 8: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/8.jpg)
EJEMPLO 1: PRODUCCIÓN DE 2 ARTÍCULOS.
![Page 9: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/9.jpg)
Toys enterprises produce dos tipos de juguetes: camiones y muñecas.
Los camiones aportan $3 a la ganancia y las muñecas $2.
De material se dispone de 100 unidades de madera, de las cuales cada camión requiere 2 unidades y cada muñeca 1. De metal se cuenta con 80 piezas de las cuales se requiere una pieza por juguete. Un análisis de mercado determino que el numero de camiones no puede exceder las 40 unidades.
¿Cuántos camiones y muñecas deberá producir para tener mayor ganancia?
Modelo matemático
Función objetivo: Max Z=3X1 + 2X2
Restricciones: 2X1 + X2 <=100
X1 + X2 <=80
X1 <=40
X1 , X2 >=0
Problema
X1 : # de camiones
X2 : # de muñecas
![Page 10: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/10.jpg)
Formulación en GAMS • $TITLE Problema_Produccion_Juguetes
• VARIABLES
• Z ganancia total;
• POSITIVE VARIABLES
• X1 # de camiones
• X2 # de muñecas;
• EQUATIONS
• OBJ funcion objetivo
• R1 referente a la capacidad de Madera
• R2 referente a la capacidad de Metal
• R3 el # de camiones no exceda 40 unidades;
• OBJ .. Z=E=3*X1+2*X2;
• R1 .. 2*X1+1*X2=L=100;
• R2 .. 1*X1+1*X2=L=80;
• R3 .. X1=L=40;
• MODEL Problema_Produccion_Juguetes /ALL/;
• SOLVE Problema_Produccion_Juguetes USING MIP MAXIMIZING Z;
• DISPLAY Z.L, X1.L, X2.L
![Page 11: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/11.jpg)
• En GAMS, la terminología adoptada es la siguiente:
– los índices son llamados conjuntos,
– los datos dados se llaman parámetros,
– variables de decisión se llaman variables,
– y las restricciones y la función objetivo se llaman ecuaciones.
![Page 12: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/12.jpg)
Estructura de un Modelo de GAMS
![Page 13: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/13.jpg)
Componentes básicos de un modelo GAMS
![Page 14: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/14.jpg)
Estructura de un Modelo de GAMS
• 1.1 Sets: Los conjuntos son los bloques de construcción básicos de un modelo GAMS, que corresponde exactamente a los índices en las representaciones algebraica de los modelos.
1. INPUTS
![Page 15: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/15.jpg)
Estructura de un Modelo de GAMS
• 1.2 Datos: Hay tres
formatos fundamentales que son: 1.Listas
2.Tablas
3. Las asignaciones directas
1. INPUTS
![Page 16: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/16.jpg)
Estructura de un Modelo de GAMS
1.2.1 Un escalar es considerado como un parámetro que no
tiene dominio. Se puede declarar y asignar con una declaración de escalar que contiene una lista degenerada de un solo valor.
![Page 17: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/17.jpg)
Estructura de un Modelo de GAMS
• 1.3 Variables: Las variables de decisión (o variables
endógenas) de un modelo GAMS-expresado se debe declarar con una declaración de variables. Cada variable se le asigna un nombre, un dominio en su caso, y el texto (opcional).
Tipos de variables permitidas
![Page 18: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/18.jpg)
• 1.4 Equations:
– Declaración de ecuaciones:
Las ecuaciones deben ser declaradas y definidas en declaraciones separadas.
Primero se pone la palabra clave “Equations” seguida por el nombre, dominio y texto de uno o mas grupos de ecuaciones o desigualdades han sido declaradas.
Estructura de un Modelo de GAMS
![Page 19: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/19.jpg)
• 1.4 Equations: – Notación de Sumatorias (y Productos) en GAMS:
Se puede utilizar para expresiones simples y complejas. El formato se basa en la idea de pensar siempre en una suma como operador con dos argumentos: Suma (índice de la suma, sumando). Una coma separa los dos argumentos y si el 1° argumento requiere una coma debe estar entre parentesis. El segundo argumento puede ser cualquier expresión matemática incluida otra suma.
Estructura de un Modelo de GAMS
![Page 20: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/20.jpg)
– Definición de Ecuación:
Los componentes de una definición de la ecuación son: 1. El nombre de la ecuación que se está definiendo 2. El dominio 3. Condición de restricción de dominio (opcional) 4. El símbolo '..' 5. La expresión Left-hand-side. 6. Operador relacional:
= l = menor que o igual a = g = mayor que o igual a = e = igual a 7. La expresión Right-hand-side.
Estructura de un Modelo de GAMS
![Page 21: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/21.jpg)
- Objective Function: Esto es sólo un recordatorio de que GAMS no tiene entidad explícita que llama a la función objetivo. Para especificar la función a ser optimizada, debe crear una variable, que es libre (sin restricciones de signo) y el valor escalar (no de dominio) y que aparece en una ecuación de definición que equivale a la función objetivo.
Estructura de un Modelo de GAMS
![Page 22: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/22.jpg)
• 1.5 Model : La palabra model tiene un significado muy preciso en GAMS. Se trata simplemente de un conjunto de ecuaciones. Al igual que otras entidades GAMS, se le debe dar un nombre en una declaración. El formato de la declaración es la palabra clave “model” seguido por el nombre del modelo, seguido por una lista de nombres de ecuación encerradas en barras. Si todas las ecuaciones previamente definidas se deben incluir, puede introducir / all/ en lugar de la lista explícita.
Estructura de un Modelo de GAMS
![Page 23: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/23.jpg)
• 1.7 Solve : El formato de la instrucción Solve es el siguiente:
1. La palabra clave “solve”. 2. El nombre del modelo que hay que resolver 3. La palabra clave “using” 4. Un procedimiento de solución disponible.
5. La palabra clave 'minimizar' o 'maximizar' 6. El nombre de la variable que se optimiza
Estructura de un Modelo de GAMS
![Page 24: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/24.jpg)
Tipos de procedimientos de solución: •lp :para programación lineal •qcp : programación con restricciones cuadrática •nlp : para programación no lineal •dnlp : para programación no lineal con derivadas discontinuas •mip : para programación entera mixta •rmip :para programación relajada entera mixta •miqcp : para programación entera mixta restricción cuadrática •minlp : para programación no lineal entera mixta •rmiqcp :para programación entera mixta relajada restricción cuadrática •rminlp : programación no lineal entera mixta relajada •mcp: para los problemas de complementariedad mixta •mpec : para los programas matemáticos con restricciones de equilibrio •cns : para limitaciones de los sistemas no lineales
Estructura de un Modelo de GAMS
![Page 25: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/25.jpg)
• 1.8 Display Statements: La declaración “solve”
causará que varias cosas sucedan cuando se ejecuta. Se generará la instancia específica de interés del modelo, se crearán las estructuras de datos adecuadas para la entrada de este problema, será invocado el editor de resolución, y la salida del solucionador se imprimirá en un archivo.
Para obtener los valores óptimos de las variables primarias y / o dobles, podemos mirar la salida de solución, o, si lo deseamos, podemos solicitar una presentación de estos resultados de GAMS.
Estructura de un Modelo de GAMS
![Page 26: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/26.jpg)
GAMS se ha diseñado con un sistema de base de datos pequeño en el que se llevan registros de las variables y ecuaciones. Los campos más importantes de cada registro son los siguientes: . lo : el límite inferior . l : el nivel o valor primal .up : límite superior . m : marginal o valor dual
Estructura de un Modelo de GAMS
![Page 27: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/27.jpg)
GA
MSid
e Ejem
plo
de
Inp
uts
Nota: La descripción de este ejemplo se encuentra anexada al final de la presentación.
![Page 28: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/28.jpg)
ejemplo4_mochila.gms
• El problema de la mochila (knapsack problem).
El problema de la mochila consiste en elegir un conjunto de objetos que proporcionen el beneficio máximo, sin sobrepasar la capacidad de la mochila. Considérese el siguiente modelo, donde los coeficientes en la función objetivo representan los beneficios de cada objeto y los coeficientes de la restricción sus respectivos pesos.
.10,....1}1,0{
10018143331302914162733
83576101291011
10987654321
10987654321
iparax
xxxxxxxxxxasujeto
xxxxxxxxxxMaximizar
i
![Page 29: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/29.jpg)
OPTION Optcr = 0.0001
SET
i/1*10/;
BINARY VARIABLES
X(i);
VARIABLE
Z;
PARAMETERS
P(i) son los pesos de cada objeto i.
/1 33
2 27
3 16
4 14
5 29
6 30
7 31
8 33
9 14
10 18/
B(i) valor de beneficio de cada objeto.
/1 11
2 10
3 9
4 12
5 10
6 6
7 7
8 5
9 3
10 8/;
EQUATIONS
OBJ
R1;
OBJ .. Z=E=sum((i),X(i)*B(i));
R1 .. sum((i),X(i)*P(i))=L=100;
MODEL Ejemplo/all/;
SOLVE Ejemplo using mip maximizing Z;
DISPLAY X.l,Z.l;
OPTION Optcr = 0.0001;
BINARY VARIABLES
X1,X2,X3,X4,X5,X6,X7,X8,X9,X10;
VARIABLE
Z;
EQUATIONS
OBJ
R1;
OBJ ..
Z=E=X1*11+X2*10+X3*9+X4*12+X5*10+X6*6+X7
*7+X8*5+X9*3+X10*8;
R1 ..
X1*33+X2*27+X3*16+14*X4+X5*29+X6*30+X7*31
+X8*33+X9*14+X10*18=L=100;
MODEL Ejemplo/all/;
SOLVE Ejemplo using mip maximizing Z;
DISPLAY Z.l;
Formulación estructurada
Formulación no-estructurada
![Page 30: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/30.jpg)
Compilación en GAMS
Una vez que se corre un programa, GAMS crea un archivo con el mismo nombre del programa, pero con la extension .lst .
El archivo *.lst esta compuesto las siguientes partes:
Echo print
Mensajes de Error
Mapas de Referencia
Listado de Ecuaciones
Estadísticas del Modelo
Reporte de Estatus
Reporte de Solución
![Page 31: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/31.jpg)
Compilación en GAMS El echo print, es solo una versión copiada del modelo que estamos
resolviendo. Gams numera los renglones, lo cual es útil para cuando indica errores.
Los mensajes de error, aparecen al final del programa del echo, una lista con los errores con su código, indicando que error es y en que renglón se encuentra.
Los mapas de referencia indican las variables, su nombre, tipo y referencia de donde se utilizaron.
El listado de ecuaciones presenta en orden las ecuaciones utilizadas en el modelo con sus variables en especifico. Esta es la mejor herramienta útil cuando no se están obteniendo resultados esperados.
![Page 32: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/32.jpg)
Las estadísticas del modelo se refieren a su tamaño, numero de variables, numero de ecuaciones, etc.
Una vez que el modelo haya corriendo satisfactoriamente , se generan dos reportes. El reporte de estatus indica bajo que condiciones se detuvo la corrida. Es decir, si encontró solución, si es única, si no es factible, si llega al limite de memoria o de iteraciones, etc.
El reporte de solución es seguramente lo de mas interés para el usuario puesto que es donde se presentan los resultados de la corrida. Se presentan los resultados primero por ecuación, segundo por variable y por ultimo por petición del usuario.
Compilación en GAMS
![Page 33: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/33.jpg)
Ejemplo de Outputs
![Page 34: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/34.jpg)
Observaciones generales:
Un modelo GAMS es una colección de declaraciones en el lenguaje GAMS. La única regla que rige la ordenación de las declaraciones es que una entidad del modelo no se puede hacer referencia antes de que se declara que existe.
Se debe terminar cada sentencia con un punto y coma.
El compilador de GAMS no distingue entre mayúsculas y minúsculas.
![Page 35: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/35.jpg)
Limites de modelo:
Number of constraints and variables: 300
Number of nonzero elements: 2000 (of which 1000 nonlinear)
Number of discrete variables: 50
Global solver limits:
Number of constraints and variables: 10
![Page 36: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/36.jpg)
EJEMPLO PROBLEMA DE TRANSPORTE
![Page 37: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/37.jpg)
Problema de transporte
Consideremos un problema clásico de transporte con 3 fábricas y 4 destinos. En la siguiente tabla están los costos unitarios de transporte (en miles de pesos), las capacidades máximas de producción de cada fábrica y los pedidos o demandas de cada destino.
• Usualmente el planteamiento de este problema se hace con las variables xij , i = 1, ..., 3, j =1, ..., 4 que indican en número de unidades que van de la fábrica i al destino j. Denotemos por cij los costos unitarios de transporte, dj las demandas en los destinos y pi las capacidades máximas de producción en las fábricas.
![Page 38: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/38.jpg)
Minimizar Z= 23X11 +29X12 +19X13 + 31X14 +12X21 + 16X22 + 20X23 + 10X24 + 11X31 + 13X32 + 17X33 + 19X34 SUJETO A: (1) X11 + X12 + X13 + X14 <=200 (2) X21 + X22 + X23 + X24 <=180 (3) X31 + X32 + X24 + X34 <=100 (4) X11 + X21 + X31 = 105 (5) X12 + X22 + X32 = 180 (6) X13 + X23 + X33 = 99 (7) X14 + X24 + X34 = 135
(8) X11,X12,X13,X14,X21,X22,X23,X24,X31,X32
,X33,X34 >=0
El modelo matemático es:
Xij = Cantidad de producto para enviar de la planta i al cliente j.
![Page 39: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/39.jpg)
![Page 40: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/40.jpg)
![Page 41: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/41.jpg)
Referencias de consulta:
PAGINA OFICIAL DE GAMS http://www.gams.com/ PARA DESCARGA DE SOFTWARE http://www.gams.com/download/ TUTORIAL DE GAMS por Richard E. Rosenthal http://www.gams.com/dd/docs/gams/Tutorial.pdf
Dudas o comentarios: Lic. Nancy Maribel Arratia Martínez [email protected] Lic. Cristina Maya Padrón [email protected]
![Page 42: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/42.jpg)
Bibliografía
1. Héctor Manuel Mora Escobar, “GAMS, ejemplos introductorios”, Marzo de 2009.
2. Jose Ignacio Marín Alberdi, Introducción al lenguaje Gams, 2000.
3. Richard E. Rosenthal, GAMS - A User's Guide, January 2012.
![Page 43: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/43.jpg)
PROBLEMA DE ENVIO DE MERCANCIA DE LA PLANTA AL MERCADO
![Page 44: Como entender Gams](https://reader033.vdocumento.com/reader033/viewer/2022050712/5695d19c1a28ab9b0297349f/html5/thumbnails/44.jpg)