You are on page 1of 30

INTRODUCCIN A GAMS

Modelos de Programacin Lineal


Aplicados a la Economa

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

GAMS
GAMS (General Algebraic Modeling System) es
un lenguaje de programacin que permite el
modelado, anlisis y resolucin de diversos
problemas de optimizacin. Como su nombre lo
indica es un lenguaje de modelizacin, ms que
un programa para resolver problemas de
optimizacin.
Lenguajes algebraicos: Separan los datos de las
soluciones, permiten detectar errores de
consistencia en la definicin y verificacin del
modelado: GAMS, AMPL, AIMMS, XPRESS-MP
ESCUELA POLITCNICA NACIONAL
Dra. SANDRA

CARACTERSTICAS
Entre las caractersticas ms importantes de GAMS caben destacar:

1. Su capacidad para pasar de resolver problemas de pequea dimensin


(docenas de variables y restricciones) a problemas mayores (miles de
variables y restricciones) sin variar el cdigo sustancialmente. El
manejo eficiente de sus ndices permite escribir de manera compacta
restricciones similares mediante una sola restriccin.
2. Separa el proceso de modelado del proceso de resolucin del problema.
As, el usuario de GAMS debe ser capaz de conseguir una formulacin
consistente del problema, y una vez la expresa en la notacin de
GAMS, este lenguaje hace uso de alguno de los optimizadores
(solvers) disponibles para obtener su solucin. De esta manera, el
usuario slo ha de centrarse en obtener un modelo del problema y
puede ignorar el funcionamiento interno del algoritmo que se necesita
para resolverlo. La separacin de estas dos tareas permite cambiar el
modelo para mejorarlo o completarlo cmodamente.

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

CARACTERSTICAS
3. La forma en que GAMS representa un problema de
optimizacin coincide, prcticamente, con la descripcin
matemtica de ese problema. Por tanto, el cdigo
GAMS es sencillo de comprender para aquellos lectores
familiarizados con la optimizacin.
4. Adems, GAMS proporciona los mecanismos necesarios
para resolver problemas de optimizacin con estructuras
similares, como son aquellos que se derivan de las
tcnicas de descomposicin.
5. La ventaja que presenta este programa GAMS, es que
junto
al mdulo de modelizacin (base) incorpora diferentes
solver (algoritmos de resolucin de problemas) tanto de
programacin no lineal, como lineal y entera.
ESCUELA POLITCNICA NACIONAL
Dra. SANDRA

Aprender GAMS?
El usuario de GAMS debe ser cuidadoso con las reglas
gramaticales de GAMS. El incumplimiento de una sola
de ellas puede provocar muchos errores de compilacin.
Entre la bibliografa de este lenguaje de programacin
cabe destacar el manual de GAMS
(http://www.gams.com), cuyo segundo captulo ofrece un
resumen con las caractersticas principales para
empezar a programar en este lenguaje, y el artculo de
Chattopadhyay, D., Application of General Algebraic
Modeling System to Power System Optimization, IEEE
Trans. Power Systems 14(1), 1522 (Feb. 1999), que
proporciona un enfoque ingenieril de GAMS.
ESCUELA POLITCNICA NACIONAL
Dra. SANDRA

Poder de GAMS
El lenguaje GAMS posee diferentes versiones
(estudiante, profesional, workstation,mainframe,
etc.) que se diferencian bsicamente en las
posibilidades de resolucin de problemas de
diferente tamao, as por ejemplo, en la versin
bsica de estudiante existen una serie de
limitaciones en cuanto al tamao del problema
que admite un mximo de 1000 elementos
distintos de cero en los problemas lineales y no
lineales, y de 20 variables enteras.
ESCUELA POLITCNICA NACIONAL
Dra. SANDRA

Tipos de problemas que resuelve

Con el mtodo que uno escoja:


Primal Simplex
Dual Simplex
Network
Interior Point

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Desventajas

Quiz uno de los inconvenientes de GAMS de cara a su aplicacin prctica


con los estudiantes es lo poco amigable que resulta su uso las primeras
veces, pero creemos que este inconveniente se ve superado, con creces,
por la potencia y flexibilidad de este programa. Para poder resolver un
problema con GAMS, es necesario generar un fichero de datos (en
adelante lo denominaremos fichero GMS) que debe contener todas la
instrucciones bsicas y planteamiento del modelo que se desea resolver.
Una vez generado el fichero, se ejecuta GAMS y el resultado se genera de
forma automtica en un fichero distinto (fichero LST).
Si comparamos este procedimiento con la resolucin de problemas de
optimizacin con programas, como por ejemplo, EXCEL, LINDO, etc.
podemos observar que resulta un poco ms complicado, pero a medida que
vayamos exponiendo los procedimientos y posibilidades de GAMS, nos
daremos cuenta que no se trata de un grave inconveniente y que por el
contrario, presenta una serie de ventajas como son el hecho de que con
GAMS podemos usar un fichero de datos que contenga todas las
instrucciones y datos necesario del problema, o bien podemos recurrir a
leer ficheros de datos externos.

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Reglas gramaticales
1. En GAMS, es indiferente el uso de maysculas o minsculas.
2. Cada comando debe terminar con un punto y coma. El olvido de
este separador de rdenes puede provocar muchos errores de
compilacin.
3. Los comandos pueden aparecer en cualquier lugar siempre que
los datos y variables que se utilizan hayan sido declarados con
anterioridad.
4. Como en cualquier otro lenguaje de programacin, los
identificadores que se utilicen para declarar datos o variables no
pueden coincidir con las palabras reservadas de GAMS.
5. En algunos comandos de GAMS, el uso de la s final es
indiferente. As, se puede emplear indistintamente el comando Set o
Sets para definir uno o varios conjuntos de ndices.
6. Es posible escribir varios comandos en una misma lnea siempre
que estn separadas por punto y coma. El compilador considera
sucesivos espacios en blanco como uno solo.
ESCUELA POLITCNICA NACIONAL
Dra. SANDRA

Reglas gramaticales
7. Un simple comando es vlido para declarar o definir uno o varios elementos
del mismo tipo. No hay necesidad de repetir el nombre del comando.
8. Para documentar el cdigo GAMS es necesario incluir lneas de comentarios.
El compilador de GAMS ignora cualquier lnea cuya primera columna es un
asterisco, considerndola un comentario. Tambin es posible aadir un texto
aclaratorio (opcionalmente entre comillas) tras algunos comandos de
declaracin en GAMS, como son: set, scalar, parameter, table, equation, y
model. Este texto debe ayudar a comprender la utilidad del elemento.
9. La mayora de los comandos son necesarios en la declaracin de elementos
y, opcionalmente, para asignarle valores. Declarar un elemento (escalar, vector,
matriz, etc...) consiste en asignarle un identificador mediante cualquiera de los
comandos declarativos (sets, scalar, parameter, table, variables, equations, y
model). La declaracin permite que un elemento pueda utilizarse en comandos
posteriores.
10. Los identificadores usados en GAMS deben comenzar por una letra y
pueden ir seguidos por hasta nueve caracteres alfanumricos, no estando
permitida la letra , ni los caracteres especiales como los acentos o tildes (esto
ltimo tampoco est permitido en los textos explicativos).

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Variables

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Opciones de problemas a
resolverse

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Modelo de transporte

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Modelo de transporte

Considrese un conjunto de consumidores y productores. Conocida


(1) demanda de cada consumidor, (2) la produccin mxima de los
productores, y (3) el coste del transporte de los productos desde los
productores hasta los consumidores, el problema del transporte
consiste en determinar la cantidad de producto a transportar de
forma que el coste sea mnimo.
Considrense dos productores y dos consumidores. Las
producciones mximas son 300 y 500 toneladas. Las demandas
son de 100, 200 y 300 toneladas. Las distancias en kilmetros entre
productores y consumidores vienen dadas en la tabla que se
muestra ms abajo. El coste de transporte en euros es de 0.09 por
tonelada y kilmetro.

La formulacin del problema anterior es como sigue.

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Modelo de transporte

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Resolucin en GAMS

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Resolucin en GAMS

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Observaciones

Se puede comprobar con este ejemplo la similitud entre la


formulacin matemtica y el cdigo GAMS; concretamente, en la
parte donde se definen las restricciones (la definicin comienza en
coste ..).
En la primera lnea del cdigo anterior se da nombre al problema, y
en la segunda se escribe un texto a modo de comentario. En
GAMS, cualquier lnea que comienza con el smbolo (asterisco)
se interpreta como un comentario.
El comando Sets se emplea para definir dos estructuras tpicas de
GAMS: los ndices, usados posteriormente para recorrer los
vectores del problema, y los rangos de valores entre los que
pueden variar estos ndices. En el ejemplo propuesto, el ndice i se
refiere a los posibles productores p1 y p2. De igual manera, el
ndice j se refiere a los posibles consumidores de m1 a
(representado por un asterisco) m3.

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Observaciones

El comando Table permite definir matrices de datos (como puede


ser la matriz de la Tabla de distancias en el ejemplo). Obsrvese la
facilidad con que se pueden representar las tablas en GAMS.
El comando Scalar es necesario en la declaracin y asignacin de
escalares (como el escalar f en el ejemplo).
El comando Parameters se utiliza para declaracin y asignacin de
vectores de datos. En este ejemplo se emplean dos vectores: a(i) y
b(j), que se refieren a la produccin mxima, y a la demanda,
respectivamente. La asignacin mediante este comando se realiza
para cada elemento del vector, por lo que es necesario especificar
en primer lugar la posicin del vector y en segundo, el valor a
asignar.

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Observaciones

Para declarar la matriz correspondiente al coste de transporte, c(i,j),


tambin se utiliza el comando parameter, sin embargo, la asignacin de los
elementos se realiza posteriormente como funcin de otros datos.
Las variables del problema de optimizacin se declaran mediante el
comando Variables. Slo cuando se completa la ejecucin del cdigo
GAMS el optimizador determina el valor de estas variables. En GAMS se
debe especificar el carcter de las variables, en este caso, se indica que
x(i,j) es una variable positiva (no negativa).
El comando Equations permite indicar el nombre con que se referenciar a
las restricciones del problema, incluida la funcin objetivo. Tras el comando,
aparece el nombre en primer lugar; si es necesario indicar que existen
varias restricciones con la misma estructura, se indica seguidamente
mediante el ndice correspondiente entre parntesis. Una vez declaradas
las restricciones con este comando, se pasa a su definicin colocando el
smbolo .. y su formulacin correspondiente en formato GAMS tras el
nombre con el que se han declarado.
Muchas funciones matemticas se pueden emplear en la definicin de las
restricciones, como suma y multiplicacin, entre otras.
ESCUELA POLITCNICA NACIONAL
Dra. SANDRA

Observaciones

El siguiente paso consiste en asociar un nombre al modelo y especificar


qu conjunto de restricciones lo forman mediante el comando Model. En el
ejemplo, el modelo se denomina transporte, y est formado por todas las
restricciones previamente definidas (lo indica la palabra all).
Por ltimo, se emplea el comando Solve para que GAMS llame al
optimizador (solver) pertinente que finalmente resuelve el problema (en el
ejemplo, la palabra lp indica que se debe usar un optimizador para
programacin lineal).
De manera opcional, se puede ordenar a GAMS que muestre el valor de los
resultados ms interesantes en un fichero de salida. Aqu, por ejemplo, el
comando Display x.l tiene como objetivo mostrar el valor obtenido para el
vector de variables x(i,j).
Una vez que se ha escrito el cdigo GAMS en el fichero de entrada, se
compila; si no existen errores de sintaxis se resolver el problema mediante
el optimizador correspondiente y se escribir la solucin en un fichero de
salida con extensin .lst. En este fichero, aquellos valores de la solucin
que son cercanos a cero se representan mediante EPS, y aquellos que son
cero se denotan mediante un punto.
ESCUELA POLITCNICA NACIONAL
Dra. SANDRA

Resumen de comandos

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

El poder del asterisco


El asterisco puede utilizarse en GAMS en los siguientes casos:
Hacer comentarios aclaratorios en el fichero de entrada. Aquellas
lneas que contienen este smbolo en la primera columna son
comentarios en GAMS.
Definir conjuntos de ndices de manera compacta. Esta funcin se
explic en el ejemplo.
Indicar errores de compilacin en el fichero de salida. Con cuatro
asteriscos consecutivos se indica la lnea que contiene errores.
Indicar en el fichero de salida que las restricciones no lineales son
infactibles para el punto inicial. En este caso, aparecen tres
asteriscos al final de la formulacin de la restriccin afectada.
Operador del producto * y de la potenciacin **.

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

El poder del asterisco


Representar un conjunto comodn cuando se definen vectores,
matrices, tablas, variables o restricciones. Este comodn tiene
sentido si los ndices que recorren dichas estructuras no guardan
relacin entre s y, por tanto, no tiene sentido agruparlos en un
conjunto. El siguiente ejemplo ayuda a comprender esta
caracterstica de GAMS.

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Resuelva y analice el siguiente


problema

Un productor fabrica una pieza, cuya demanda vara en el tiempo,


de acuerdo con el grfico de la siguiente figura:

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

El productor debe siempre atender la demanda mensual. En general,


cualquier problema de planificacin admitir diversas posibilidades que
aseguren que la demanda es convenientemente atendida. Existen dos
posibilidades:
1. Produccin variable. El fabricante puede producir cada mes el nmero
exacto de unidades que le solicitan. Sin embargo, como una produccin
que vara es costosa de mantener, por los costos de horarios ms largos en
los meses de produccin alta y los costes asociados al descanso del
personal y la maquinaria en los meses de produccin baja; este tipo de
produccin no es eficiente.
2. Produccin constante. El fabricante que debe atender una demanda
que cambia con el tiempo puede producir por encima de dicho nivel en
periodos de baja demanda y almacenar la sobreproduccin para los
periodos de demanda mayor. As, la produccin puede mantenerse
constante, compensando la demanda alta con la sobreproduccin de
periodos pasados. Sin embargo, debido a los costes de almacenamiento,
tal opcin puede no ser deseable si requiere costes altos de
almacenamiento durante varios meses.

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

Nuestro objetivo es llevar a cabo una


planificacin de la produccin que
maximice los beneficios despus de
considerar los costes de las variaciones
en la produccin y los almacenes.
Los cuatro elementos principales que
intervienen en el problema de la
planificacin de la produccin son:

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

ESCUELA POLITCNICA NACIONAL


Dra. SANDRA

You might also like