Está en la página 1de 22

GAMS

The General Algebraic Modeling System


GAMS
The General Algebraic Modeling System (GAMS) is a high-level modeling
system for mathematical programming and optimization. It consists of a
language compiler and a stable of integrated high-performance solvers.
GAMS is tailored for complex, large scale modeling applications, and
allows you to build large maintainable models that can be adapted
quickly to new situations.

GAMS (www.gams.com) y AMPL (www.ampl.com) de origen


estadounidense y AIMMS (www.aimms.com) y XPRESS-MP
(www.dash.co.uk) de origen europeo.

http://www.gams.com/

http://pisis.unalmed.edu.co/vieja/cursos/analisis_decisiones/AD_Software.htm
INTERFACE INICIAL
INFORMACIÓN BÁSICA
• Preparar el proyecto: para vincular todos los
archivos que tengan que ver con el proyecto.
– File / Project / New Project

• INPUT FILE: allí es donde editamos el modelo. Se


definen variables, ecuaciones, tipo de modelo,
modo de resolución, entre otros.

Recomendación: Definir previamente modelo para


tener claridad del objetivo, variables y
parámetros involucrados.
ESTRUCTURA GENERAL
SIGNOS RELACIONADOS
=e= (Igual)
=l= (menor o igual que)
=g= (mayor o igual que)
=lt= (menor que)
=gt= (Mayor que)
+ (suma)
- (resta)
* (multiplicación). Además, al inicio de una línea sirve para comentar
/ (división)
** (Exponenciación)
TIPOS DE VARIABLES
• FREE (−, )
• POSITIVE (0, )

• NEGATIVE (−,0)

• BINARY ( 0 ó 1)

• INTEGER (0, 1, 2, 3,…,100)


NOTACIÓN
• Sumatoria:
– Sum(índice o índices, sumando)
– Sum(j, x(i,j))  xij
j

– Sum((i,j), c(i,j)*x(i,j))  c
i j
ij * xij

• Productoria:
– prod(j, x(i,j))
xj
ij
SOLVER DE RESOLUCIÓN
• LP Programación Lineal

• NLP programación No lineal


• MIP programación mixta

• RMIP programación mixta relajada


• MINLP programación No lineal mixta
• RMINLP programación No lineal mixta relajada
• MCP problemas de complementariedad mixta
• Entre otros
COMPLEMENTOS DEL LENGUAJE
• X(i): Para introducir todos los elementos del subíndice i en
alguna función
• X(“3”): Para seleccionar o introducir un subíndice especifico.
• $ Para establecer condiciones. Ej. Sumar solo cuando i es
menor que j. Sum((i,j)$(ord(i) lt ord(j)), x(i,j))
• Si se desea hacer un ciclo de operaciones “loop”
loop(
);
• Para usar el valor arrojado por una variable de decisión x(i)
como parámetro de otra.
x.l(i) L:denota “level”
Ejemplo Problema de Transporte
Objetivo: Minimizar el costo de llevar mercancía desde 2 plantas a 3
mercados.
DISTANCIA (Miles de Millas)

MERCADOS

PLANTAS NEW YORK CHICAGO TOPEKA OFERTA

Seattle 2.5 1.7 1.8 350

San Diego 2.5 1.8 1.4 600

DEMANDA 325 300 275

Índices: i=plantas, j=mercados


Datos:
Oi= oferta de la planta i
Dj= demanda del mercado j
Dij= distancia entre la planta i y el mercado j
El costo por articulo por mil millas es F=$90
Ejemplo Problema de Transporte

Min _ Z =  cij * xij


i j

s.a
capacidad _ de _ las _ plantas
Demanda _ del _ mercado
var iables _ positivas

C(ij)= costo de llevar mercancía de la planta i al mercado j


Xij)= mercancía transportada desde i hasta j
FORMULACIÓN EN GAMS
SETS
I plantas / SEATTLE, SAN-DIEGO /
J mercados / NEW-YORK, CHICAGO, TOPEKA / ;

PARAMETERS
A(I) capacidad de la planta
/ SEATTLE 350
SAN-DIEGO 600 /
B(J) demanda del mercado
/ NEW-YORK 325
CHICAGO 300
TOPEKA 275 / ;
FORMULACIÓN EN GAMS
TABLE D(I,J) distancia en miles de millas
NEW-YORK CHICAGO TOPEKA
SEATTLE 2.5 1.7 1.8
SAN-DIEGO 2.5 1.8 1.4 ;

SCALAR F costo de transporte por artículos por mil millas /90/ ;

PARAMETER C(I,J) costo de transporte en miles de dólares por articulo ;


C(I,J) = F * D(I,J) ;
FORMULACIÓN EN GAMS
VARIABLES
X(I,J) cantidad de articulos
Z costos totales de transporte ;

POSITIVE VARIABLE X ;

SCALAR F costo de transporte por artículos por mil millas /90/ ;

PARAMETER C(I,J) costo de transporte en miles de dólares por articulo ;


C(I,J) = F * D(I,J) ;
FORMULACIÓN EN GAMS
EQUATIONS
COST función objetivo
SUPPLY(I) suministro de planta i
DEMAND(J) demanda satisfecha de mercado j ;

COST .. Z =E= SUM((I,J), C(I,J)*X(I,J)) ;


SUPPLY(I) .. SUM(J, X(I,J)) =l= A(I) ;
DEMAND(J) .. SUM(I, X(I,J)) =G= B(J) ;
FORMULACIÓN EN GAMS
MODEL TRANSPORT /ALL/ ;

SOLVE TRANSPORT USING LP MINIMIZING Z ;


Resultados
Optimal solution found.
Objective : 153675.000000

LOWER LEVEL UPPER MARGINAL

SEATTLE .NEW-YORK . 50.000 +INF .


SEATTLE .CHICAGO . 300.000 +INF .
SEATTLE .TOPEKA . . +INF 36.000
SAN-DIEGO.NEW-YORK . 275.000 +INF .
SAN-DIEGO.CHICAGO . . +INF 9.000
SAN-DIEGO.TOPEKA . 275.000 +INF .
ORGANIZANDO LOS RESULTADOS
FILE Resul/Resultados.out /;
put Resul;
*/ hace que se pase 1 linea sin texto

put //;
put '"TRASPORTE OPTIMO "'//;
loop (i,
put /'Planta ', ord(i);
put /;
put @20,'Mercado';
put @40, 'mercancia' //;
loop (j,
if(x.l(i,j)>=0.00000001,
put @20,j.tl
@40,x.l(i,j)
/
;
);
);
);
Resultados
"TRANSPORTE OPTIMO "

Planta 1.00
Mercado mercancía

NEW-YORK 50.00
CHICAGO 300.00

Planta 2.00
Mercado mercancía

NEW-YORK 275.00
TOPEKA 275.00
EJERCICIO DE CLASE

Formular y resolver mediante GAMS el


problema de planificación de la producción de
una planta de papel
FORMULACIÓN

También podría gustarte