Professional Documents
Culture Documents
logo
Introduccion
Lenguajes Algebraicos de modelado (GAMS, AMPL, XPRESS): Son las alternativas
m
as complejas y potentes por su capacidad de indexaci
on de las variables y ecuaciones,
permiten cambiar sin dificultad las dimensiones del modelo, de forma natural separan
datos de resultados. Desde el punto de vista del modelador permiten la detecci
on de
errores de consistencia en la definici
on y verificaci
on del modelo. Desde el punto de
vista del usuario simplifican su mantenimiento.
Puede visitar las p
aginas para revisi
on del producto: GAMS: www.gams.com, AMPL:
www.ampl.com, XPRESS: www.dash.co.uk GAMS es el lenguaje mas ampliamente
difundido comercialmente con su propia lista de discusi
on de usuarios: gamsl@listserv.gmd.de
logo
Ventajas
Proporcionan una formulaci
on sencilla de modelos grandes y complejos.
Mejoran la productividad de los modeladores pues permiten dedicar m
as tiempo
al dise
no, ejecuci
on del modelo y an
alisis de los resultados y menos tiempo a la
codificaci
on del mismo.
La formulaci
on del problema es independiente del tama
no.
Permiten el uso de la estructura del modelo para diferentes casos.
Generalmente se desarrolla una maqueta (caso peque
no) y una vez depurado y
verificado su validez se lo utiliza para resolver el problema real.
Permiten la realizaci
on de cambios en el modelo de una manera sencilla y segura.
Permiten la portabilidad de los modelos entre plataformas y sistemas operativos.
Desventajas
Como u
nica desventaja de los lenguajes Algebraicos de modelado se puede anotar las
siguiente
No son adecuados para la resoluci
on de problemas de tama
no peque
no por parte
de usuarios espor
adicos por la barrera de entrada que supone el aprendizaje de
un nuevo lenguaje, en ese caso lo preferible sera el uso de SOLVER de Excel por
el tiempo invertido en la codificaci
on del mismo.
logo
Tendencias
Interfaces de entrada y salida de datos m
as estrechamente relacionadas con las
bases de datos y ERPs.
Posibilidad de ocultar el c
odigo fuente produciendo versiones ejecutables para
usuarios finales.
Desarrollo de interfaces gr
aficas que faciliten al usuario la formulaci
on visual.
El modelador debe ir acompa
nado de un solver (optimizador), el cual toma el
modelo desarrollado en GAMS (u otro) y lo resuelve.
Actualmente CPLEX es el optimizador m
as usado comercialmente, y una
versi
on que soporta un n
umero ilimitado de variables viene incluido en GAMS.
Seg
un expertos hoy es posible resolver un problema LP de 150.000 ecuaciones
con 150.000 variables y 106 elementos no nulos en la matriz de coeficientes
Tecnol
ogicos en unas pocas horas.
logo
logo
Modularidad
Estructurarlo en diversos m
odulos: la inclusi
on de datos (tal como son entendidos y
recogidos) y la escritura de los resultados deben separarse en diferentes archivos que son
convenientemente insertados mediante la instrucci
on $INCLUDE en el m
odulo principal.
Utilizaci
on de las entidades (par
ametros, escalares, etc.) con el mismo prop
osito y
significado en las diferentes partes del c
odigo.
logo
Bloques obligatorios
Los siguientes bloques son obligatorios en cualquier modelo.
VARIABLES
EQUATIONS
MODEL
SOLVE
Bloques opcionales
Los bloques opcionales son los siguientes:
SET
DATA
DISPLAY
logo
Bloque de variables
Este bloque debe comenzar con la palabra VARIABLES. Dentro de este bloque 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 o no cotas y el punto de partida.
Bloque de ecuaciones
Este bloque ha de comenzar con el ttulo EQUATIONS. En este bloque hay que declarar
y definir las ecuaciones que se van a usar en el modelo.
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 tiene que comenzar con el
nombre de MODEL.
Bloque de solucion
En este bloque hay que indicar que tipo de algoritmo deseamos usar para poder resolver
el modelo que se ha definido previamente. A la hora de inicializar este bloque ha de
aparecer la palabra SOLVE.
logo
Modelo simple
El siguiente es un ejemplo peque
no para demostrar el uso de cada uno de los bloques
obligatorios.
$ONTEXT
Soluci
on de un problema sencillo usando GAMS
$OFFTEXT
VARIABLES
C,L,Z;
POSITIVE VARIABLES
C,L;
EQUATIONS
OBJ, TERRENO, HH, CEB;
OBJ.. Z =E= 50*C+80*L;
TERRENO.. C+L =L= 110;
HH.. 4*C+8*L =L= 720;
CEB.. C =L= 80;
MODEL
GRANJA /OBJ, TERRENO, HH, CEB/;
SOLVE
GRANJA USING LP MAXIMIZING Z;
logo
Comentarios en GAMS
En todos los ficheros que generemos siempre es conveniente introducir lneas de comentario que, si bien no forman parte del modelo y por lo tanto no van a ser compiladas, nos
pueden facilitar la lectura posterior tanto del fichero de datos como el de la soluci
on.
Las lneas de comentarios pueden ser introducidas de dos formas distintas:
Comenzando cada lnea con un asterisco (*), en este caso hay que tomar en
consideraci
on que ciertos smbolos est
an prohibidos, como por ejemplo los
acentos, la letra n
, etc.
Cuando hay que escribir varias lneas es conveniente utilizar el comando
$ONTEXT, a continuaci
on de
el podemos escribir tantas lneas como queramos
y adem
as utilizar cualquier car
acter especial (acentos, n
, etc.). Para indicar que
han finalizado las lneas de comentarios hay que utilizar el comando $OFFTEXT.
logo
Comentarios en GAMS
En todos los ficheros que generemos siempre es conveniente introducir lneas de comentario que, si bien no forman parte del modelo y por lo tanto no van a ser compiladas, nos
pueden facilitar la lectura posterior tanto del fichero de datos como el de la soluci
on.
Las lneas de comentarios pueden ser introducidas de dos formas distintas:
Comenzando cada lnea con un asterisco (*), en este caso hay que tomar en
consideraci
on que ciertos smbolos est
an prohibidos, como por ejemplo los
acentos, la letra n
, etc.
Cuando hay que escribir varias lneas es conveniente utilizar el comando
$ONTEXT, a continuaci
on de
el podemos escribir tantas lneas como queramos
y adem
as utilizar cualquier car
acter especial (acentos, n
, etc.). Para indicar que
han finalizado las lneas de comentarios hay que utilizar el comando $OFFTEXT.
logo