29
Introducci´on al uso de GAMS Dr. Leonardo Gabriel Hern´ andez Landa 18 de mayo de 2016 Leonardo Hern´ andez introducci´on a GAMS 18 de mayo de 2016 1/1

Introducción a Gams

Embed Size (px)

Citation preview

Page 1: Introducción a Gams

Introduccion al uso de GAMS

Dr. Leonardo Gabriel Hernandez Landa

18 de mayo de 2016

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 1 / 1

Page 2: Introducción a Gams

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 2 / 1

Page 3: Introducción a Gams

Introduccion

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 3 / 1

Page 4: Introducción a Gams

Introduccion

El nombre GAMS deriva de las iniciales de General Algebraic ModellingSystem, que como su propio nombre indica es un lenguaje demodelizacion, mas que un programa para resolver problemas deoptimizacion.La ventaja que presenta este programa GAMS, es que junto al modulo demodelizacion (base) incorpora diferentes solver (algoritmos de resolucionde problemas) tanto de programacion no lineal, como lineal y entera.

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 4 / 1

Page 5: Introducción a Gams

Versiones

El lenguaje GAMS posee diferentes versiones (estudiante, profesional,workstation, mainframe, etc.) que se diferencian basicamente en lasposibilidades de resolucion de problemas de diferente tamano.,

En la version basica de estudiante existen una serie de limitaciones encuanto al tamano del problema que admite un maximo de 1000 elementosdistintos de cero en los problemas lineales y no lineales, y de 20 variablesenteras.

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 5 / 1

Page 6: Introducción a Gams

Tipos y solucionadores de problemas

Existen en el mercado una gran cantidad de software para optimizacion, laventaja del uso de GAMS es que incorpora varios de ellos en susalgoritmos de solucion y ası tener mas de una alternativa de uso. Algunos

ejemplos son:

Problemas Solver

LP CPLEX, MINOS, OSL, etc.

NLP CONOPT, MINOS, etc.

MIP CPLEX, OSL, ZOOM, etc.

MINLP DICOPT

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 6 / 1

Page 7: Introducción a Gams

Metodos de solucion

Ademas, dentro de cada uno de estos solver, se pueden elegir diferentesopciones. Por ejemplo, para resolver los problemas lineales con la librerıaOSL, podemos elegir los siguientes algoritmos:

Primal Simplex

Dual Simplex

Network

Interior Point

La seleccion del metodo dependera del conocimiento del tomador dedecisiones sobre el problema a tratar y su estructura.

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 7 / 1

Page 8: Introducción a Gams

Tipos de archivo

Para poder resolver un problema con GAMS, es necesario generar unfichero de datos (en adelante lo denominaremos fichero GMS) que debecontener todas la instrucciones basicas y planteamiento del modelo que sedesea resolver.Una vez generado el fichero, se ejecuta GAMS y el resultado se genera deforma automatica en un fichero distinto (fichero LST). Este ultimocontiene los detalles de la solucion ası como parte del analisis desensibilidad del problema.

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 8 / 1

Page 9: Introducción a Gams

Lenguaje de Optimizacion

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 9 / 1

Page 10: Introducción a Gams

Elementos

El lenguaje GAMS es muy intuitivo de usar, este se maneja por bloquespara poder organizar y separar cada uno de los elementos del problema.Primeramente, comentaremos los usos basicos de GAMS para la resolucionde los problemas lineales de pequena dimension, dado que en ellos resultamucho mas sencillo el poder usar y definir todas las variables y ecuaciones.Posteriormente, al usar GAMS como lenguaje de modelizacionanalizaremos que para problemas de mayores dimensiones resulta muchomas comodo usar la notacion “compacta”. Nos centraremos en los bloquesobligatorios de las instrucciones de funcionamiento de GAMS. Los bloquesobligatorios son:

Variables VARIABLESEcuaciones EQUATIONS

Modelo MODELSolucion SOLVER

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 10 / 1

Page 11: Introducción a Gams

Descripcion de bloques

Bloque de variables.

Este bloque debe comenzar con la palabra VARIABLES. Dentro de estebloque se han de definir las variables que se van a usar en el modelo,indicando de que clase son, que tipo de restricciones presentan, si tienen ono cotas y el punto de partida.

Nombre de las variables

Clase de las variables (positivas, enteras, etc.)

Cotas de las variables (superiores, inferiores, valores fijos, etc.)

Punto de partida. Especialmente en los problemas no lineales.

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 11 / 1

Page 12: Introducción a Gams

Descripcion de bloques

Bloque de ecuaciones.

Este bloque ha de comenzar con el tıtulo EQUATIONS. En este bloquehay que declarar y definir las ecuaciones que se van a usar en el modelo.

En este bloque hemos de incorporar dos partes:

Nombre de las ecuaciones

Definicion de las variables

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 12 / 1

Page 13: Introducción a Gams

Descripcion de bloques

Bloque de modelo.

En este grupo se han de definir las ecuaciones que componen el modelo.No es obligatorio incluir todas las ecuaciones utilizadas. Este bloque tieneque comenzar con el nombre de MODEL.

Bloque de Solucion.

En este bloque hay que indicar que tipo de algoritmo deseamos usar parapoder resolver el modelo que se ha definido previamente. A la hora deinicializar este bloque ha de aparecer la palabra SOLVE.

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 13 / 1

Page 14: Introducción a Gams

Ejemplo

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 14 / 1

Page 15: Introducción a Gams

WYNDOR GLASS CO

La exposicion del funcionamiento de GAMS la realizaremos sobre unejemplo concreto y particular. Consideremos en primer lugar un problemaclasico de optimizacion. La WYNDOR GLASS CO. Produce artıculos devidrio de alta calidad, que incluyen ventanas y puertas de vidrio. Tiene tresplantas. Los marcos y molduras de aluminio se hacen en la planta 1, los demadera en la planta 2; la 3 produce el vidrio y ensamblado de losproductos.

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 15 / 1

Page 16: Introducción a Gams

WYNDOR GLASS CO

Debido a una reduccion en las ganancias, la alta administracion hadecidido reorganizar la lınea de produccion de la companıa. Sedescontinuaran varios productos no rentables y se dejara libre una parte dela capacidad de produccion para emprender la fabricacion de dos productosnuevos que tienen ventas potenciales grandes:

Producto 1: una puerta de vidrio de 8 pies con marco de aluminio.

Producto 2: una ventana de resbalon con marco de madera de 4x6.

Los datos de tiempo de produccion, requerimientos y ganancias seobservan en la siguiente tabla

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 16 / 1

Page 17: Introducción a Gams

Datos y variables

Planta Producto 1 Producto 2 Tiempo disponible

1 1 0 4

2 0 2 12

3 3 2 18

Ganancia $3000 $5000 •Las variables de decision serıan

X1 = numero de lotes del producto 1 fabricados por semana

X2 = numero de lotes del producto 2 fabricados por semana

Z = ganancia semanal total (en miles de dolares) al producir los 2productos

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 17 / 1

Page 18: Introducción a Gams

Modelo Matematico

El modelo matematico serıa entonces:

max Z = 3x1 + 5x2 (1)

Sujeto a:

1x1 ≤ 4 (2)

2x2 ≤ 12 (3)

3x1 + 2x2 ≤ 18 (4)

x1, x2 ≥ 0 (5)

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 18 / 1

Page 19: Introducción a Gams

Uso de GAMS

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 19 / 1

Page 20: Introducción a Gams

Entrada

Para resolver este problema es necesario preparar un “input file” o unfichero de datos (en adelante lo denominaremos fichero GMS) como semuestra en la tabla, en donde se han definido todos los elementos basicos:VARIABLES; EQUATIONS; MODEL y SOLVE.

VARIABLES

X1 CANTIDAD A PRODUCIR DEL PRODUCTO 1

X2 CANTIDAD A PRODUCIR DEL PRODUCTO 2

Z UTILIDAD TOTAL;

POSITIVE VARIABLES

X1

X2;

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 20 / 1

Page 21: Introducción a Gams

Entrada

EQUATIONS

OBJ FUNCION DE UTILIDAD

RP1 RESTRICCION PLANTA 1

RP2 RESTRICCION PLANTA 2

RP3 RESTRICCION PLANTA 3;

OBJ.. Z =E= 3*X1 + 5*X2;

RP1.. X1 =L= 4;

RP2.. 2*X2 =L= 12;

RP3.. 3*X1 + 2*X2 =L= 18;

MODEL WINDOR/OBJ,RP1,RP2,RP3/;

SOLVE WINDOR USING NLP MAXIMIZING Z;

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 21 / 1

Page 22: Introducción a Gams

Para construir el fichero GMS es necesario declarar:

1 Las variables que aparecen en el problema (Z, X1, X2) y si tienenalguna consideracion de clase (no negativas, enteras, etc.). No esnecesario fijar un punto de partida, pero si este punto no se declaraGAMS fija como punto inicial el (0,0), por lo cual, con el fin defacilitar la obtencion de una solucion, en muchos casos es aconsejabledar un punto de partida distinto del (0,0). En el ejemplo anterior, elpunto de partida elegido ha sido el punto (1,1).

2 Las ecuaciones (nombre y expresion), en nuestro ejemplo seran OBJ yRP1 y la expresion matematica de estas ecuaciones.

3 El modelo (WINDOR) y las ecuaciones (OBJ y RP) que forman elmodelo.

4 La declaracion de resolucion, el solver (NLP, LP, MIP, ...) y ladireccion de optimizacion (Maximizacion o minimizacion)

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 22 / 1

Page 23: Introducción a Gams

Interfaz Grafica

El modelo quedarıa en GAMSIDE

windorgms.png

Figura : Problema de la Windor Glass formulado en GAMSLeonardo Hernandez introduccion a GAMS 18 de mayo de 2016 23 / 1

Page 24: Introducción a Gams

Ejecucion del modelo

salida.png

Figura : Salida preliminar problema de la Windor Glass formulado en GAMSLeonardo Hernandez introduccion a GAMS 18 de mayo de 2016 24 / 1

Page 25: Introducción a Gams

Salida

La salida de datos se almacena en un archivo con extension .lst

lstgms.png

Figura : Salida lst problema de la Windor Glass formulado en GAMSLeonardo Hernandez introduccion a GAMS 18 de mayo de 2016 25 / 1

Page 26: Introducción a Gams

Analisis de la salida

salida.png

Figura : Salida preliminar problema de la Windor Glass formulado en GAMSLeonardo Hernandez introduccion a GAMS 18 de mayo de 2016 26 / 1

Page 27: Introducción a Gams

Analisis de la salida: Resumen

summary.png

Figura : Resumen de solucion del problema de la Windor Glass formulado enGAMSLeonardo Hernandez introduccion a GAMS 18 de mayo de 2016 27 / 1

Page 28: Introducción a Gams

Analisis de la salida: Restricciones y variables

variablesout.png

Figura : Valores de las variables de la solucion del problema de la Windor Glassformulado en GAMSLeonardo Hernandez introduccion a GAMS 18 de mayo de 2016 28 / 1

Page 29: Introducción a Gams

Ejercicio en clase: Problema de la dieta

Se propone alimentar el ganado de una granja con la dieta mas economicaposible. Dicha dieta debe contener cuatro tipos de nutrientes identificadoscomo A, B, C, y D. Estos componentes se encuentran en dos tipos depiensos M y N. La cantidad, en gramos, de cada componente por kilo deestos piensos viene dada en la tabla siguiente:• A B C D

M 100 - 100 200

N - 100 200 100La dieta diaria de un animal debe estar compuesta por al menos 0.4Kg delcomponente A, 0.6Kg del componente B, 2Kg del componente C, y 1.7Kgdel componente D. El compuesto M cuesta $0.2/Kg y el compuesto N$0.08/Kg. ¿Que cantidades de piensos M y N se deben adquirir para queel gasto en comida sea el menor posible?

Leonardo Hernandez introduccion a GAMS 18 de mayo de 2016 29 / 1