Documentos de Académico
Documentos de Profesional
Documentos de Cultura
SEATTLE
SAN DIEGO
DEMANDAS
2.5
1.7
2.5
1.8
325
300
Tabla 1: Datos para el problema de transporte.
PRODUCCIN
1.8
1.4
275
350
600
para toda i
para toda j
Funcin objetivo:
Note que este simple ejemplo, revela algunas prcticas que referimos como buenos
hbitos en general y que son consistentes con el diseo en GAMS. Primero, todas las
entidades son identificados (y agrupadas) por su tipo. Segundo, el orden de las entidades es
elegido de tal forma que ningn smbolo est referido sin ser antes definido.Tercero, las
unidades de todas las entidades estn especificadas, y cuarto, las unidades son elegidas a
una escala tal que los valores numricos a ser encontrados en la optimizacin, tengan un
orden de magnitud relativamente pequeo.
Los nombres de los tipos de las entidades pueden diferir dependiendo de los programas. Por
ejemplo, la terminologa adaptada en GAMS es la siguiente: los indices son llamados sets,
los datos son llamados parameters, las variables de decisin son llamadas variables, y las
restricciones y la funcin objetivo son llamadas equations.
La presentacin en GAMS de este problema es la siguiente:
Sets
i plantas / seattle, san-diego /
j mercados / new-york, chicago, topeka / ;
Parameters
a(i) capacidad de cada planta
/ seattle 350
san-diego 600 /
b(j) demanda del mercado j / new-york 325, chicago 300, topeka 275 / ;
Table d(i,j) tabla de datos de distancias 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 flete en dlares por unidad por cada mil millas /90/ ;
Parameter c(i,j) costo de transporte en miles de dlares por unidad;
c(i,j) = f * d(i,j) / 1000 ;
Variables
x(i,j) cantidades transportadas
z costo total de transporte en miles de dlares ;
Positive Variable x ;
Equations
cost define la funcin objetivo
supply(i) limite de produccin en la planta i
demand(j) demanda a satisfacer en el mercado j ;
cost .. z =e= sum((i,j), c(i,j)*x(i,j)) ;
SETS
Sets
i plantas / seattle, san-diego /
j mercados / new-york, chicago, topeka / ;
El objeto de esta declaracin es evidente. Declaramos dos sets y les damos los nombres i y j.
Tambin en esa declaracin, asignamos miembros o elementos a los sets como se presenta a
continuacin:
i = {Seattle, San Diego}
j = {New York, Chicago, Topeka}
Note la diferencia entre el formato GAMS y el formato utilizado en matemticas. GAMS usa
slashes (/) en lugar de llaves de conjunto ({}), simplemente porque no todos los teclados tienen
las teclas de llaves. Observe tambin que los nombres con ms de una palabra como New
York, no son permitidos, por lo cual se debe insertar un guin como en el ejemplo.
Las palabras en minsculas en las declaraciones set anteriores, son llamadas textos (text).
Los textos son opcionales. Estn all solo para documentacin interna, sirviendo para un
El efecto es el siguiente:
t = {1991, 1992, 1993, ... , 2000}
m = {maq1, maq2, maq3, ..., maq24}
Note que los elementos del set son almacenados como cadenas de caracteres, as los
elementos de t no son nmero. Otra forma conveniente es la declaracin de "alias", la cual es
usada para dar otro nombre a un set declarado previamente. En el ejemplo siguiente:
Alias(t,tp);
El nombre tp es como t en notacin matemtica. Es til en modelos que son concernientes
con iteraciones de elementos de un mismo set.
Los set i, j, t y m son ejemplos de sets estticos, es decir, son asignados sus miembros
directamente por el usuario y no cambian. En GAMS se pueden crear sets dinmicos, los
cuales adquieren sus nombres como por ejemplo por medio de operaciones lgicas. Este tipo
de set se tratarn ms adelante.
El problema de transporte que estamos analizando, muestra los tres formatos que estn
disponibles para introducir datos. Los tres formatos son:
List (lista)
Tables (Tablas)
Direct assignments (Asignacin directa)
Introduciendo datos por lista (List).
El primer formato se presenta en la primera declaracin del ejemplo, el cual repetimos a
continuacin:
Parameters
a(i) capacidad de cada planta
/ seattle 350
san-diego 600 /
b(j) demanda del mercado j / new-york 325, chicago 300, topeka 275 / ;
Esta declaracin tiene varios efectos. Son evidentes pero vale la pena analizarlos en detalle.
Se declara la existencia de dos parmetros, dandole los nombres de a y b, y se declaran sus
dominios i y j respectivamente. (Un dominio es el set, o grupos de sets, sobre el cual un
parmetro, variable o ecuacin es definida). La declaracin tambin tiene un texto de notas
para cada parmetro y asigna los valores a(i) y b(j) a cada elemento de i y de j. Es
perfectamente aceptable separar esta declaracin en dos si lo prefiere:
Parameter
a(i) capacidad de cada planta
/ seattle 350
san-diego 600 /;
Parameter
b(j) demanda del mercado j / new-york 325, chicago 300, topeka 275 / ;
4.
Cero (0) es el valor por defecto de todos los parmetros. Por lo tanto, solamente
necesita incluir entrada de datos que no sean ceros en la lista de pares elemento-valor, y
pueden ser introducidos en cualquier orden.
5.
Un escalar es considerado un parmetro que no tiene dominio. Puede ser declarado
y asignado en una declaracin Scalar contenida en una lista degenerada (degenerate) de un
solo valor, como en la siguiente declaracin de nuestro ejemplo:
Scalar f flete en dlares por unidad por cada mil millas /90/ ;
Si un dominio de un parmetro tiene dos o ms dimensiones, puede sin embargo
tener sus valores introducidos por el formato List. Este es muy til para introducir
conjunto que son muy densos (teniendo pocos valores no ceros) y super-poco denso
(teniendo pocos valores distintos a no ceros).
topeka
1.8
1.4 ;
El problema de transporte que estamos analizando, muestra los tres formatos que estn
disponibles para introducir datos. Los tres formatos son:
List (lista)
Tables (Tablas)
Direct assignments (Asignacin directa)
Introduciendo datos por lista (List).
El primer formato se presenta en la primera declaracin del ejemplo, el cual repetimos a
continuacin:
Parameters
a(i) capacidad de cada planta
/ seattle 350
san-diego 600 /
b(j) demanda del mercado j / new-york 325, chicago 300, topeka 275 / ;
Esta declaracin tiene varios efectos. Son evidentes pero vale la pena analizarlos en detalle.
Se declara la existencia de dos parmetros, dandole los nombres de a y b, y se declaran sus
dominios i y j respectivamente. (Un dominio es el set, o grupos de sets, sobre el cual un
parmetro, variable o ecuacin es definida). La declaracin tambin tiene un texto de notas
para cada parmetro y asigna los valores a(i) y b(j) a cada elemento de i y de j. Es
perfectamente aceptable separar esta declaracin en dos si lo prefiere:
Parameter
a(i) capacidad de cada planta
/ seattle 350
san-diego 600 /;
Parameter
b(j) demanda del mercado j / new-york 325, chicago 300, topeka 275 / ;
1.
2.
3.
4.
5.
Scalar f flete en dlares por unidad por cada mil millas /90/ ;
Si un dominio de un parmetro tiene dos o ms dimensiones, puede sin embargo
tener sus valores introducidos por el formato List. Este es muy til para introducir
conjunto que son muy densos (teniendo pocos valores no ceros) y super-poco denso
(teniendo pocos valores distintos a no ceros).
Introduciendo datos por tablas (Tables).
Los practicantes de Optimizacin han notado que la mayora de los datos de entrada para un
modelo grande provienen de tablas de nmeros relativamente pequeas. As es muy til tener
el formato de tablas (Tables) para introducir datos. Un ejemplo de tablas de dos dimensiones o
matriz es mostrado en nuestro ejemplo:
topeka
1.8
1.4 ;