Vous êtes sur la page 1sur 45

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);