Sei sulla pagina 1di 30

ESCUELA TCNICA SUPERIOR DE INGENIERA

DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS
Jos Mara Ferrer Caja
Universidad Pontificia Comillas
ESCUELA TCNICA SUPERIOR DE INGENIERA
DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 0

Alternativas para desarrollar modelos


 Lenguajes de programacin de propsito general


C, C++, Java, Visual Basic, FORTRAN 90

 Lenguajes o entornos de clculo numrico o


simblico


Hojas de clculo, MATLAB, Mathematica

 Lenguajes algebraicos de modelado




GAMS, OPL Studio, AMPL, AIMMS, XPRESS-MP, MPL,


Zimpl

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 1

Lenguajes de propsito general


 Ventajas




Versatilidad para crear modelos de gran complejidad y/o


tamao
Ejecucin frecuente
Uso de algoritmos especficos de optimizacin

 Inconvenientes



Dificultad en la programacin
Mantenimiento costoso del modelo

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 2

Lenguajes de clculo numrico o simblico


 Ventajas





Facilidad de manejo de los optimizadores existentes


Familiaridad con el entorno
Visualizacin cmoda de los resultados
Buena alternativa para problemas pequeos

 Inconvenientes




No inducen una buena prctica de programacin


No permiten modelar problemas complejos o de gran tamao
Presentan dificultades en el desarrollo, verificacin,
validacin, actualizacin y documentacin de los modelos

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 3

Lenguajes algebraicos de modelado


 Ventajas








Formulacin compacta de modelos grandes y complejos


Estructuran buenos hbitos de modelado
Separan datos de estructura matemtica del modelo
Modelo independiente de optimizadores
Documentacin simultnea al modelo
Mantenimiento y reformulacin cmodos
Portabilidad entre plataformas y sistemas operativos

 Inconvenientes



No recomendables para uso espordico con problemas de


pequeo tamao
No son adecuados para resolucin directa de problemas de
muy gran tamao

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 4

GAMS (General Algebraic Modeling System)







Lenguaje algebraico de modelado


Creado en 1987 en EEUU
Ms de 10000 usuarios en 100 pases
Compatible con multitud de optimizadores

 Descarga e instalacin de la versin estudiante







Enlace en el portal de recursos


Instalada en los ordenadores de la escuela
Permite resolver problemas de tamao pequeo
Para resolver un problema mayor se puede enviar al enlace
que aparece en el portal de recursos

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 5

Manuales
 Ejecutar la aplicacin GAMS
 Para un manual de GAMS: Seleccionar en el men
superior Help GAMS Users Guide
 Para manuales de los optimizadores disponibles:
Seleccionar en el men superior Help Solver Manual

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 6

Formato general de las instrucciones GAMS


 Para incluir un comentario se comienza la lnea con *. Si el
comentario ocupa varias lneas se puede intercalar entre las
instrucciones $Ontext y $Offtext
 No se distingue entre maysculas y minsculas
 El parntesis (), el corchete [] o la llave {} se pueden utilizar
indistintamente para separar niveles
 Las instrucciones han de acabar con ; (puede omitirse si la
siguiente palabra es reservada)
 Las palabras reservadas del lenguaje GAMS tienen un uso
especfico, el cdigo las reconoce y las resalta (en azul). No se
pueden utilizar fuera de su uso

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 7

Palabras reservadas

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 8

Estructura general de un modelo


 Declaracin de conjuntos. Asignacin de valores
 Inclusin y manipulacin de datos de entrada y
parmetros auxiliares.
 Variables
 Ecuaciones
 Modelo
 Acotacin e inicializacin de variables
 Resolucin del problema de optimizacin
 Presentacin de resultados

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 9

Bloques de un modelo en GAMS


 Obligatorios





VARIABLES
EQUATIONS
MODEL
SOLVE

 Opcionales



SETS: (ALIAS)
DATA: SCALARS, PARAMETERS, TABLE

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 10

Bloque VARIABLES
 Se recomienda el uso de comentarios explicativos
 La funcin objetivo se declara como variable (libre)
 Tipos






FREE (por omisin)


POSITIVE
NEGATIVE
BINARY
INTEGER

- a +
0a+
-a0
01
0 a 100

 Sufijos






.LO
.UP
.L
.M
.FX

cota inferior
cota superior
valor inicial antes y valor ptimo despus
valor marginal (coste reducido)
fija una variable a un valor

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 11

Bloque EQUATIONS
 Se asigna un nombre a cada tipo de ecuacin
 Se recomienda el uso de comentarios explicativos
 Tipos




=E=
=L=
=G=

 Sufijos






.LO
.UP
.L
.M
.FX

cota inferior
cota superior
valor inicial antes y valor ptimo despus
valor marginal (variable dual o precio en la sombra).
fija una variable a un valor

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 12

Bloques MODEL y SOLVE


 Se pueden definir varios modelos y resolverlos
simultneamente
 MODEL nombre_modelo1 / nombre_ecuaciones /
MODEL nombre_modelo2 / nombre_ecuaciones /

 SOLVE nombre_modelo1 USING tipo_problema


MINIMIZING (MAXIMIZING) variable_objetivo

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 13

Bloque SETS
 Se utiliza para introducir conjuntos y subconjuntos de
ndices


SETS
ndice1 comentario / elementos del conjunto1 /
ndice2 comentario / elementos del conjunto2 /

 En los conjuntos numricos se puede usar * como


puntos suspensivos
 Se utiliza ALIAS(i,j,) para crear copias del ndice
i definido con anterioridad

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 14

Entrada de datos
 Para parmetros unidimensionales
 PARAMETER
nombre (ndice) comentario / elemento 1 valor1, elemento 2
valor2,/

 Se pueden definir parmetros mediante frmulas


 Para parmetros bidimensionales
 TABLE
nombre (ndices) comentario
j1

j2

i1

valor11 valor12

i2

Valor21 Valor22

 Se pueden importar datos de un fichero externo mediante


$include nombre_del_fichero
ESCUELA TCNICA SUPERIOR DE INGENIERA
DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 15

Ejemplo de parmetro tridimensional


SETS i / MAD, BCN /
j / A1, A2 /
k / A, B, C /
TABLE CAPACIDAD(i,j,k) capacidad mxima
A B C
MAD.A1 1 0 3
MAD.A2 2 1 2
2 alternativas
BCN.A1 4 3 3
BCN.A2 0 2 2
TABLE CAPACIDAD(i,j,k) capacidad mxima
A1.A A1.B A1.C A2.A A2.B A2.C
MAD
1
0
3
2
1
2
BCN
4
3
3
0
2
2
ESCUELA TCNICA SUPERIOR DE INGENIERA
DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 16

Funciones y operadores
 Elementales: +, -, * , /, ** POWER(x,n)
 ORD, CARD


Ordinal y cardinal de un conjunto

 SUM, PROD, SMAX, SMIN




Con ndices

 Otras funciones: ABS, SIN, COS, FLOOR, EXP, LOG,


LOG10, MAX, MIN, MOD, SIGN, SQRT
 Operadores lgicos: NOT, AND, OR, XOR
 Operadores relacionales: LT, GT, EQ, NE, LE, GE

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 17

Tipos de problemas y optimizadores


 LP, RMIP (programacin lineal): BDMLP, CPLEX
 MIP (programacin lineal entera mixta): CPLEX, OSL, XA,
XPRESS
 NLP (programacin no lineal): CONOPT, MINOS, SNOPT,
PATHNLP, LGO, MOSEK
 DNLP (programacin no lineal con derivadas no continuas):
CONOPT, MINOS, SNOPT, BARON, LGO, OQNLP, MOSEK
 MINLP (programacin no lineal entera mixta): DICOPT, SBB,
BARON, OQNLP
 SP (programacin estocstica): DECIS, OSLSE
 MCP (problema mixto complementario): MILES, PATH, NLPEC
 MPEC (programacin matemtica con restricciones de equilibrio):
NLPEC
 CNS (sistemas no lineales restringidos): CONOPT, PATH

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 18

Eleccin de los optimizadores


 En men inicio:



File Options Solvers


Pinchar en el optimizador deseado

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 19

Compilacin y resolucin
 Para compilar slo


File Compile

 Para compilar y resolver




File Run o pinchando en el botn directo o F9

 Al compilar se crean 2 nuevos archivos






nombre_fichero.gms
nombre_fichero.lst
nombre_fichero.log

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Archivo del cdigo creado en el editor


Archivo de resultados
Archivo del registro del proceso

Lenguaje GAMS- 20

Ejemplo de transporte: Cdigo (1)


SETS
I fbricas de envasado / VIGO, ALGECIRAS /
J mercados de consumo / MADRID, BARCELONA, VALENCIA /
PARAMETERS
A(i) capacidad de produccin de la fbrica i [cajas]
/ VIGO
350
ALGECIRAS 700 /
B(j) demanda del mercado j [cajas]
/ MADRID
400
BARCELONA 450
VALENCIA 150 /
TABLE C(i,j) coste transporte entre i y j [ por caja]
MADRID BARCELONA VALENCIA
VIGO
0.06
0.12
0.09
ALGECIRAS 0.05
0.15
0.11

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 21

Ejemplo de transporte: Cdigo (2)


VARIABLES
X(i,j) cajas transportadas entre fbrica i y mercado j [cajas]
CT
coste de transporte
[]
POSITIVE VARIABLE X
EQUATIONS
COSTE
coste total de transporte
[]
CAPACIDAD(i) capacidad mxima de cada fbrica i
[cajas]
DEMANDA(j)
satisfaccin demanda de cada mercado j [cajas] ;
COSTE ..

CT =E= SUM((i,j),
C(i,j) * X(i,j)) ;
SUM

CAPACIDAD(i) .. SUM(j,
X(i,j)) =L= A(i) ;
SUM
DEMANDA(j) ..

SUM(i,
X(i,j)) =G= B(j) ;
SUM

MODEL TRANSPORTE / COSTE, CAPACIDAD, DEMANDA /


SOLVE TRANSPORTE USING LP MINIMIZING CT
ESCUELA TCNICA SUPERIOR DE INGENIERA
DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 22

Ejemplo de transporte: Resultados (1)

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 23

Ejemplo de transporte: Resultados (2)

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 24

Secuenciacin de trabajos: Planteamiento


 Hay que realizar 5 trabajos en una mquina (en cualquier orden). El
tiempo de ejecucin de cada trabajo es
TR1

TR2

TR3

TR4

TR5

15

13

14

12

16

 El tiempo de ajuste de la mquina para pasar de ejecutar el trabajo


(fila) a ejecutar el trabajo (columna) aparece en la siguiente tabla
TR1
TR1

TR2

TR3

TR4

TR5

TR2

TR3

TR4

TR5

5
3

 Determinar cmo secuenciar los trabajos para que el tiempo


empleado sea mnimo. Considerar que la secuencia se ha de repetir
indefinidamente
ESCUELA TCNICA SUPERIOR DE INGENIERA
DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 25

Secuenciacin de trabajos: Cdigo (1)


$TITLE Secuenciacin de rdenes de trabajo
SETS
I trabajos que se van a ejecutar / TR1 * TR5 /
ALIAS (i,j)
TABLE C(i,j) tiempo de ajuste para pasar del trabajo i al trabajo j
TR1
TR2
TR3
TR4
TR5
TR1
2
5
1
6
TR2
3
4
2
5
TR3
4
2
3
4
TR4
5
3
6
5
TR5
4
4
4
3
* Es indiferente el tiempo de ejecucin de los trabajos
VARIABLES
X(i,j) paso del trabajo i al trabajo j
TT
tiempo total en completar los trabajos
BINARY VARIABLE X
ESCUELA TCNICA SUPERIOR DE INGENIERA
DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 26

Secuenciacin de trabajos: Cdigo (2)


EQUATIONS
TIEMPO
ANTERIOR(i)
POSTERIOR(j)
PAREJAS(i,j)
TIEMPO
ANTERIOR(i)
POSTERIOR(j)
PAREJAS(i,j)

tiempo total de trabajo


de cada trabajo se parte una vez
a cada trabajo se llega una vez
suma de los trabajos por parejas ;

.. TT =E= SUM[(i,j) $(NOT SAMEAS(i,j)), C(i,j)*X(i,j)] ;


.. SUM[j $(NOT SAMEAS(i,j)), X(i,j)] =E= 1 ;
.. SUM[i $(NOT SAMEAS(i,j)), X(i,j)] =E= 1 ;
$(ORD(i) < ORD(j)) .. X(i,j) + X(j,i) =L= 1 ;

* El segundo modelo impide subciclos de parejas de trabajos


MODEL AJUSTE1 / TIEMPO, ANTERIOR, POSTERIOR
/
MODEL AJUSTE2 / TIEMPO, ANTERIOR, POSTERIOR, PAREJAS /
SOLVE AJUSTE1 USING MIP MINIMIZING TT
SOLVE AJUSTE2 USING MIP MINIMIZING TT

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 27

Secuenciacin de trabajos: Resultados (1)

El primer modelo no
ofrece una solucin vlida:
se forman subciclos

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 28

Secuenciacin de trabajos: Resultados (2)

La solucin ptima es la secuencia:


TR1, TR4,TR5, TR3, TR2

Tiempo en completar un ciclo:


15 + 68 = 83

ESCUELA TCNICA SUPERIOR DE INGENIERA


DEPARTAMENTO DE ORGANIZACIN INDUSTRIAL

Lenguaje GAMS- 29

Potrebbero piacerti anche