Universidad Nacional Mayor de San Marcos
Investigacin Operativa I
Facultad de Ingeniera Industrial
Tutorial SOFTWARE LINGO
MSc. Ing Ezzard Omar Alvarez Daz
Investigacin Operativa I
Qu es LINGO?
LINGO (Linear, INteractive, and General
Optimizer).
Es una herramienta simple para utilizar la
optimizacin lineal, no-lineal y enteros.
Permite formular problemas de gran
tamao en forma concisa.
Permite resolverlos
Permite analizar los resultados
Investigacin Operativa I
Creando un Modelo LINGO
En general, un modelo de optimizacin
consiste de 3 partes :
Funcin Objetivo
Una sola frmula que describe exactamente que es lo que
se desea optimizar.
Variables
Cantidades que pueden ser cambiadas para producir el
valor ptimo de la funcin objetivo
Restricciones
Frmulas que definen los lmites de los valores de las
variables
Investigacin Operativa I
UN EJEMPLO
Una empresa fabrica tres productos 1,2 y 3. Cada producto
requiere tiempos de produccin en tres departamentos
como se ilustra en la siguiente tabla :
Prod.
Depart. 1
Depart. 2
3 hrs./unid. 2 hrs./unid. 1 hr./unid. $ 2
4 hrs./unid. 1 hr./unid.
3 hr./unid. $ 4
2 hrs./unid. 2 hr./unid.
3 hr./unid. $ 2.5
Hrs.
Total
600 horas
300 horas
400 horas
Depart. 3
Benef.
Investigacin Operativa I
Modelo
Max 2 x1 4 x2 2.5 x3
s.a
3 x1 4 x2 2 x3 600
2 x1 x2 2 x3 400
x1 3 x2 3 x3 300
x1 , x2 , x3 0
Investigacin Operativa I
Modelo LINGO
Cada Lnea en LINGO debe terminarse con un punto y coma
; . Tu modelo no se resolver sin ellos.
Investigacin Operativa I
Modelo LINGO
Ya que los computadores no tienen el smbolo , LINGO
Adopt la convencin de usar los caracteres <= para denotar .
Sin embargo, tu puedes entrar simplemente <. Lo mismo ocurre
para >=, tu puedes entrar simplemente >.
max
2 x1 4 x2 2.5 x3 ;
3 x1 4 x2 2 x3 600;
2 x1 x2 2 x3 400;
x1 3 x2 3 x3 300;
Investigacin Operativa I
Modelo LINGO
Tambin podemos incluir al modelo LINGO comentarios, de
tal manera que mejore la legibilidad de ste.
Investigacin Operativa I
Sintaxis general de LINGO
Una expresin puede ser escritas en muchas
lneas, pero la expresin debe ser terminada por un
punto y coma. Por ejemplo, podramos haber
utilizado dos lneas para la funcin objetivo.
LINGO no diferencia entre letras maysculas
o minsculas. Por lo tanto, los siguientes
nombres
de
variables
podran
ser
equivalentes.
TURBO, Turbo, turbo
Investigacin Operativa I
Sintaxis general de LINGO
Cuando se le dan nombres a las variables en
LINGO, todos los nombres deben comenzar con
un caracter (A-Z). Los otros pueden ser
alfabticos, numricos o el smbolo _. Los
nombres pueden tener una longitud de 32
caracteres.
Investigacin Operativa I
Resolviendo un modelo LINGO
Una vez que el modelo ha sido entrado en la
ventana modelo , ste puede ser resuelto
mediante :
Un click en el botn solve
Seleccionando solve del men LINGO
Utilizando la tecla ctrl-s
Si existen errores, stos sern informados
Investigacin Operativa I
Ventana de Status del Solver
LINGO
Si no se encontraron errores, la ventana del
status del solver de LINGO aparece.
Aparece
solucin.
tambin el informe de la
Investigacin Operativa I
Utilizando el Lenguaje de
Modelamiento
Una de las caractersticas ms poderosas de
LINGO es su lenguaje de modelamiento
matemtico.
El lenguaje de modelamiento de LINGO
permite expresar tu problema de una
manera natural que es muy similar a la
notacin matemtica.
Investigacin Operativa I
Utilizando el Lenguaje de
Modelamiento
Powerco tiene tres plantas de generacin de energa
elctrica que suministran energa requerida a cuatro
ciudades. Cada planta puede suministrar las siguientes
cantidades de kilowatt-hora (kwh) de energa elctrica : la
planta 1, 35 millones; la planta 2, 50 millones; la planta 3,
40 millones. Las demandas mximas de energa en estas
ciudades, que se presentan al mismo momento (2 p.m.)
son las siguientes (en kwh): la ciudad 1, 45 millones; la
ciudad 2, 20 millones; la ciudad 3, 30 millones; la ciudad
4; 30 millones. Los costos para enviar 1 milln de kwh de
energa de una planta a una ciudad depende de la distancia
que la energa tiene que viajar. Formule un PL que
minimice el costo para satisfacer la demanda mxima de
energa de cada ciudad.
Investigacin Operativa I
Utilizando el lenguaje de
modelamiento
C2
(US$)
6
C3
(US$)
10
C4
(US$)
9
Oferta
P1
C1
(US$)
8
P2
12
13
50
P3
14
16
40
20
30
30
Deman 45
da
35
Investigacin Operativa I
Modelo
min z
ij
xij
ij
s.a
ij
Oi
i 1,2,3
ij
Dj
j 1,2,3,4
xij 0
i,j
Funcin Objetivo
Investigacin Operativa I
min
ij
xij
ij
Lenguaje modelo LINGO
MIN = @SUM(ARCOS(I,J) : C(I,J) * X(I,J));
Notacin
Matemtica
min
ij
Sintaxis LINGO
MIN =
@SUM(ARCOS(I,J) :
cij
C(I,J)
xij
X(I,J));
Las Restricciones de oferta
Investigacin Operativa I
ij
Oi
@FOR(PLANTAS(I) : @SUM(CLIENTES(J):X(I,J))
<=O(I));
Notacin
Matemtica
Sintaxis LINGO
@FOR(PLANTAS(I) :
@SUM(CLIENTES(J) :
xij
X(I,J)
Oi
O(I));
Las Restricciones de demanda
Investigacin Operativa I
ij
Dj
@FOR(CLIENTES(J) : @SUM(PLANTAS(I):X(I,J))
>=D(J));
Notacin
Matemtica
Sintaxis LINGO
@FOR(CLIENTES(J) :
@SUM(PLANTAS(I) :
xij
X(I,J)
Dj
D(J));
Investigacin Operativa I
EL MODELO LINGO ES
MODEL :
MIN = @SUM(ARCOS(I,J) : C(I,J) * X(I,J));
@FOR(PLANTAS(I) :
@SUM(CLIENTES(J):X(I,J))<=O(I));
@FOR(CLIENTES(J) :
@SUM(PLANTAS(I):X(I,J))>=D(J));
END
Investigacin Operativa I
Definiendo los conjuntos
Tenemos los siguientes conjuntos a definir :
PLANTAS
CLIENTES
ARCOS
SETS:
PLANTAS / P1 P2 P3/ : O;
CLIENTES / C1 C2 C3 C4/ : D;
ARCOS(PLANTAS,CLIENTES) : C,X;
ENDSETS
Investigacin Operativa I
COLOCANDO LOS DATOS
DATA:
O = 35 50 40;
D = 45 20 30 30;
C = 8 6 10 9
9 12 13 7
14 9 16 5;
ENDDATA
Investigacin Operativa I
MODELO LINGO
Investigacin Operativa I
CARACTERISTICAS
ADICIONALES
PODEMOS COLOCARLES NOMBRES A NUESTRA
FUNCION OBJETIVO, RESTRICCIONES Y UN TITULO
AL MODELO
Ejemplo 1: [objetivo] MIN = X;
Ejemplo 2: @FOR(PLANTAS(I) : [oferta_planta]
@SUM(CLIENTES(J):X(I,J))<=O(I));
Investigacin Operativa I
Problema
Almacn
Oferta
Fbrica
12
13
10
11
10
10
12
14
10
14
11
15
12
Demanda
Costos de transporte por unidad
26
Investigacin Operativa I
Usando Conjuntos (Sets)
Sets son simplemente grupos de objetos
relacionados.
Un conjunto (set) puede ser una lista de
productos, camiones o empleados.
Cada miembro del conjunto puede tener una o
ms caractersticas relacionadas con l.
Estas caractersticas se conocen bajo el nombre
de atributos.
Los valores de los atributos pueden ser
conocidos o desconocidos.
Investigacin Operativa I
Usando Conjuntos (Sets)
LINGO reconoce 2 tipos de conjuntos :
Primitivos
Derivados
Primitivos : Es un conjunto compuesto slo de objetos que no
pueden ser reducidos posteriormente. Ejemplo : PLANTAS
Derivados : Es definido a partir de uno o ms conjuntos.
Ejemplo : ARCOS
Investigacin Operativa I
Usando Conjuntos
Un conjunto primitivo se define de la
siguiente manera :
setname [/lista_miembros/][: lista_atributos];
Listado explcito de la lista miembros
PLANTAS / P1 P2 P3/ : O;
Investigacin Operativa I
Usando Conjuntos
Un conjunto primitivo se define de la
siguiente manera :
setname [/lista_miembros/][: lista_atributos];
Listado implcito de la lista miembros
PLANTAS / miembro1..miembroN/ : O;
Investigacin Operativa I
Usando Conjuntos
Lista miembros
Implcito (formato)
Ejemplo
Conjunto de
miembros
1..n
1..5
1,2,3,4,5
stringM..stringN
TRUCKS3.. TRUCKS3,
TRUCKS204 TRUCKS4,
,TRUCKS
204
MON..FRI
MON,TUE,
WED,THU,F
RI
OCT..JAN
OCT,NOV,D
EC,JAN
DayM..dayN
monthM..monthN
Investigacin Operativa I
Usando Conjuntos
Como una ilustracin, en el ejemplo
Powerco, podramos haber definido el
conjunto PLANTAS como :
PLANTAS /P1..P3/ : O;
Investigacin Operativa I
Usando Conjuntos
Una forma alternativa, cuando se utiliza el formato
1..n, tu puedes definir la longitud del conjunto en
la seccin DATA y entonces realizar la referencia
:
DATA:
Nmero_de_plantas = 3;
ENDDATA
SETS:
PLANTAS /1..Nmero_de_plantas/ : O;
ENDSETS
Investigacin Operativa I
Usando Conjuntos : conjuntos
derivados
Para definir un conjunto derivado, tu
especificas :
El nombre del conjunto
Sus conjuntos PADRES
Opcionalmente, sus miembros
Opcionalmente, sus atributos
setname(Lista_conj_padres)[/lista_miembros/][:lista_atrib]
Investigacin Operativa I
Usando Conjuntos : conjuntos
derivados
setname(Lista_conj_padres)[/lista_miembros/][:lista_atrib]
EJEMPLO :
SETS:
PRODUCTO /A B /;
MAQUINA /M N/;
SEMANA /1..2/;
ASIGNACION(PRODUCTO,MAQUINA,SEMANA);
ENDSETS
Investigacin Operativa I
Usando Conjuntos : conjuntos
derivados y filtros
EJEMPLO :
CAMIONES_PESADOS(CAMIONES) | CAPACIDAD(&1) #GT# 50000
Operadores lgicos reconocidos por LINGO son :
#EQ# igual
#NE# distinto
#GE# mayor o igual que
#GT# mayor
#LT# menor que
#LE# menor o igual que
Investigacin Operativa I
Funciones
funcin
uso
@FOR
Es utilizado para generar conjuntos de
restricciones
@SUM
Calcula la suma de una expresin sobre
todos los miembros de un conjunto
@MIN
Calcula el mnimo de una expresin sobre
todos los miembros de un conjunto
@MAX
Calcula el mximo de una expresin sobre
todo los miembros de un conjunto
Investigacin Operativa I
Funcin @SUM
SETS:
CLIENTES / C1 C2 C3 C4 C5/ : Demanda;
ENDSETS
DATA :
DEMANDA = 5 1 3 4 6;
ENDDATA
Demanda_total = @SUM(CLIENTES(J):DEMANDA(J));
Demanda_total = @SUM(CLIENTES:DEMANDA);
Demanda_3 = @SUM(CLIENTES(J)|J #LE3# :DEMANDA(J));
Investigacin Operativa I
Funcin @MIN, @MAX
SETS:
CLIENTES / C1 C2 C3 C4 C5/ : Demanda;
ENDSETS
DATA :
DEMANDA = 5 1 3 4 6;
ENDDATA
Min_demanda = @MIN(CLIENTES(J):DEMANDA(J));
Max_demanda = @MAX(CLIENTES(J):DEMANDA(J));
Min_demanda = @SUM(CLIENTES:DEMANDA);
Max_demanda = @SUM(CLIENTES:DEMANDA);
Investigacin Operativa I
Funcin @FOR
SETS:
CAMIONES / RENAULT FORD DODGE / : CARGA;
ENDSETS
@FOR(CAMIONES(T) : CARGA(T) <= 2500);
CARGA(RENAULT)<=2500;
CARGA(FORD) <= 2500;
CARGA(DODGE)<=2500;
Investigacin Operativa I
Usando funciones de dominios
para variables
Tipos variables
definicin
@GIN
Variable entera
@BIN
Variable binaria
@FREE
Cualquier valor
@BND
Rango para la
variable
Investigacin Operativa I
Sintaxis
@GIN(nombre_variable).
@GIN(X);
Investigacin Operativa I
Problema de la mochila : @BIN
artculo
1
2
3
4
5
6
7
8
peso
1
3
4
4
4
1
5
10
Rating
2
9
3
8
10
6
4
10
Investigacin Operativa I
Modelo LINGO
MODEL:
SETS:
ARTICULOS /A1..A10/: PESO, RATING, INCLUYE;
ENDSETS
DATA:
PESO RATING =
1
2
3
9
4
3
3
8
4
10
1
6
5
4
10
10;
CAPACIDAD_MOCHILA = 15;
ENDDATA
Investigacin Operativa I
Modelo LINGO
MAX = @SUM(ARTICULOS: RATINGS * INCLUYE);
@SUM(ARTICULOS:PESO*INCLUYE)<=CAPACIDAD_MOCHILA;
@FOR(ARTICULOS:@BIN(INCLUYE));
END
Investigacin Operativa I
VARIABLES ACOTADAS
@BND(cota_inferior,nombre_variable,cota_superior);