0% encontró este documento útil (0 votos)
42 vistas45 páginas

Tutorial de LINGO para Optimización

El documento presenta un tutorial sobre el uso del software LINGO para resolver problemas de optimización lineal. Explica que LINGO permite formular modelos de optimización de forma concisa y resolver problemas de gran tamaño. Luego, muestra un ejemplo de modelo de optimización lineal para una empresa que fabrica tres productos y resume los pasos para crear un modelo en LINGO, incluyendo la función objetivo, variables y restricciones. Finalmente, explica cómo resolver el modelo y analizar los resultados en LINGO.

Cargado por

Liz Liz
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
42 vistas45 páginas

Tutorial de LINGO para Optimización

El documento presenta un tutorial sobre el uso del software LINGO para resolver problemas de optimización lineal. Explica que LINGO permite formular modelos de optimización de forma concisa y resolver problemas de gran tamaño. Luego, muestra un ejemplo de modelo de optimización lineal para una empresa que fabrica tres productos y resume los pasos para crear un modelo en LINGO, incluyendo la función objetivo, variables y restricciones. Finalmente, explica cómo resolver el modelo y analizar los resultados en LINGO.

Cargado por

Liz Liz
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPT, PDF, TXT o lee en línea desde Scribd

Universidad Nacional Mayor de San Marcos

Facultad de Ingeniería Industrial


Investigación Operativa I

Tutorial SOFTWARE LINGO

MSc. Ing° Ezzard Omar Alvarez Díaz

LINGO Document
¿Qué es LINGO?
Investigación Operativa I

• LINGO (Linear, INteractive, and General


Optimizer).
 Es una herramienta simple para utilizar la
optimización lineal, no-lineal y enteros.

 Permite formular problemas de gran


tamaño en forma concisa.
 Permite resolverlos
 Permite analizar los resultados
Creando un Modelo LINGO
Investigación Operativa I

• En general, un modelo de optimización


consiste de 3 partes :
 Función Objetivo
Una sola fórmula que describe exactamente que es lo que
se desea optimizar.
 Variables
Cantidades que pueden ser cambiadas para producir el
valor óptimo de la función objetivo
 Restricciones
Fórmulas que definen los límites de los valores de las
variables
UN EJEMPLO
• Una empresa fabrica tres productos 1,2 y 3. Cada producto
requiere tiempos de producción en tres departamentos
como se ilustra en la siguiente tabla :
Investigación Operativa I

Prod. Depart. 1 Depart. 2 Depart. 3 Benef.

1 3 hrs./unid. 2 hrs./unid. 1 hr./unid. $ 2

2 4 hrs./unid. 1 hr./unid. 3 hr./unid. $ 4

3 2 hrs./unid. 2 hr./unid. 3 hr./unid. $ 2.5

Hrs. 600 horas 400 horas 300 horas


Total
Modelo
Max 2 x1  4 x2  2.5 x3
Investigación Operativa I

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
Modelo LINGO
Cada Línea en LINGO debe terminarse con un punto y coma
Investigación Operativa I

« ; ». Tu modelo no se resolverá sin ellos.

LINGO Document
Modelo LINGO
Ya que los computadores no tienen el símbolo , LINGO
Investigación Operativa I

Adoptó la convención 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;
Modelo LINGO
También podemos incluir al modelo LINGO comentarios, de
Investigación Operativa I

tal manera que mejore la legibilidad de éste.

LINGO Document
Sintaxis general de LINGO
• Una expresión puede ser escritas en muchas líneas,
Investigación Operativa I

pero la expresión debe ser terminada por un punto y


coma. Por ejemplo, podríamos haber utilizado dos
líneas para la función objetivo.

LINGO Document

 LINGO no diferencia entre letras mayúsculas


o minúsculas. Por lo tanto, los siguientes
nombres de variables podrían ser
equivalentes.
TURBO, Turbo, turbo
Sintaxis general de LINGO
• Cuando se le dan nombres a las variables en LINGO, todos
Investigación Operativa I

los nombres deben comenzar con un caracter (A-Z). Los


otros pueden ser alfabéticos, numéricos o el símbolo _. Los
nombres pueden tener una longitud de 32 caracteres.
Resolviendo un modelo LINGO
Investigación Operativa I

• Una vez que el modelo ha sido entrado en la


« ventana modelo », éste puede ser resuelto
mediante :
• Un click en el botón « solve »

• Seleccionando « solve » del menú LINGO

• Utilizando la tecla ctrl-s

• Si existen errores, éstos serán informados

LINGO Document
Ventana de Status del Solver
LINGO
Investigación Operativa I

• Si no se encontraron errores, la ventana del


status del solver de LINGO aparece.
 Aparece también el informe de la
solución.

LINGO Document
Utilizando el Lenguaje de
Modelamiento
Investigación Operativa I

• Una de las características más poderosas de


LINGO es su lenguaje de modelamiento
matemático.

 El lenguaje de modelamiento de LINGO


permite expresar tu problema de una
manera natural que es muy similar a la
notación matemática.
Utilizando el Lenguaje de
Modelamiento
Investigación Operativa I

• Powerco tiene tres plantas de generación de energía eléctrica


que suministran energía requerida a cuatro ciudades. Cada
planta puede suministrar las siguientes cantidades de kilowatt-
hora (kwh) de energía eléctrica : la planta 1, 35 millones; la
planta 2, 50 millones; la planta 3, 40 millones. Las demandas
máximas de energía 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
millón de kwh de energía de una planta a una ciudad depende
de la distancia que la energía tiene que viajar. Formule un PL
que minimice el costo para satisfacer la demanda máxima de
energía de cada ciudad.
Utilizando el lenguaje de
modelamiento
Investigación Operativa I

C1 C2 C3 C4 Oferta
(US$) (US$) (US$) (US$)
P1 8 6 10 9 35

P2 9 12 13 7 50

P3 14 9 16 5 40

Deman 45 20 30 30
da
Modelo
Investigación Operativa I

min z  c
ij
ij xij

s.a
x
i
ij  Oi i  1,2,3

x
j
ij  Dj j  1,2,3,4

xij  0 i,j
Función Objetivo
min cij
ij xij
Investigación Operativa I

Lenguaje modelo LINGO

MIN = @SUM(ARCOS(I,J) : C(I,J) * X(I,J));

Notación Sintaxis LINGO


Matemática
min MIN =

ij
@SUM(ARCOS(I,J) :

cij C(I,J)
xij X(I,J));
Las Restricciones de oferta
x
j
ij  Oi i
Investigación Operativa I

@FOR(PLANTAS(I) : @SUM(CLIENTES(J):X(I,J))
<=O(I));

Notación Sintaxis LINGO


Matemática
i @FOR(PLANTAS(I) :

 @SUM(CLIENTES(J) :
j

xij X(I,J)
Oi O(I));
Las Restricciones de demanda
x
i
ij  Dj j
Investigación Operativa I

@FOR(CLIENTES(J) : @SUM(PLANTAS(I):X(I,J))
>=D(J));

Notación Sintaxis LINGO


Matemática
j @FOR(CLIENTES(J) :

 @SUM(PLANTAS(I) :
i

xij X(I,J)
Dj D(J));
EL MODELO LINGO ES
Investigación Operativa I

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
Definiendo los conjuntos
Tenemos los siguientes conjuntos a definir :
Investigación Operativa I

PLANTAS

CLIENTES

ARCOS

SETS:
PLANTAS / P1 P2 P3/ : O;

CLIENTES / C1 C2 C3 C4/ : D;

ARCOS(PLANTAS,CLIENTES) : C,X;
ENDSETS
COLOCANDO LOS DATOS
Investigación Operativa I

DATA:
O = 35 50 40;

D = 45 20 30 30;

C = 8 6 10 9
9 12 13 7
14 9 16 5;

ENDDATA
MODELO LINGO
Investigación Operativa I

LINGO Document
CARACTERISTICAS
ADICIONALES
Investigación Operativa I

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

LINGO Document
Problema
Investigación Operativa I

Almacén Oferta
1 2 3 4
Fábrica
1 12 13 10 11 10
2 10 12 14 10 9
3 14 11 15 12 7
Demanda 6 5 7 8 26

Costos de transporte por unidad


Usando Conjuntos (Sets)
Investigación Operativa I

• 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
más características relacionadas con él.
• Estas características se conocen bajo el nombre
de atributos.
• Los valores de los atributos pueden ser conocidos
o desconocidos.
Usando Conjuntos (Sets)
Investigación Operativa I

• LINGO reconoce 2 tipos de conjuntos :

• Primitivos

• Derivados

•Primitivos : Es un conjunto compuesto sólo de objetos que no


pueden ser reducidos posteriormente. Ejemplo : PLANTAS

•Derivados : Es definido a partir de uno o más conjuntos.


Ejemplo : ARCOS
Usando Conjuntos
Investigación Operativa I

• Un conjunto primitivo se define de la


siguiente manera :
– setname [/lista_miembros/][: lista_atributos];

Listado explícito de la lista miembros

PLANTAS / P1 P2 P3/ : O;
Usando Conjuntos
Investigación Operativa I

• Un conjunto primitivo se define de la


siguiente manera :
– setname [/lista_miembros/][: lista_atributos];

Listado implícito de la lista miembros

PLANTAS / miembro1..miembroN/ : O;
Usando Conjuntos
Lista miembros Ejemplo Conjunto de
Implícito (formato) miembros
Investigación Operativa I

1..n 1..5 1,2,3,4,5


stringM..stringN TRUCKS3.. TRUCKS3,
TRUCKS204 TRUCKS4,
…,TRUCKS
204
DayM..dayN MON..FRI MON,TUE,
WED,THU,F
RI
monthM..monthN OCT..JAN OCT,NOV,D
EC,JAN
Usando Conjuntos
Investigación Operativa I

• Como una ilustración, en el ejemplo


Powerco, podríamos haber definido el
conjunto PLANTAS como :

– PLANTAS /P1..P3/ : O;
Usando Conjuntos
Investigación Operativa I

• Una forma alternativa, cuando se utiliza el formato 1..n, tu puedes definir


la longitud del conjunto en la sección DATA y entonces realizar la
referencia :
– DATA:
• Número_de_plantas = 3;
– ENDDATA

– SETS:
• PLANTAS /1..Número_de_plantas/ : O;
– ENDSETS
Usando Conjuntos : conjuntos
derivados
Investigación Operativa I

• 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]
Usando Conjuntos : conjuntos
derivados
Investigación Operativa I

setname(Lista_conj_padres)[/lista_miembros/][:lista_atrib]

EJEMPLO :

SETS:
PRODUCTO /A B /;
MAQUINA /M N/;
SEMANA /1..2/;

ASIGNACION(PRODUCTO,MAQUINA,SEMANA);
ENDSETS
Usando Conjuntos : conjuntos
derivados y filtros
Investigación Operativa I

EJEMPLO :

CAMIONES_PESADOS(CAMIONES) | CAPACIDAD(&1) #GT# 50000;

Operadores lógicos reconocidos por LINGO son :

#EQ# igual
#NE# distinto
#GE# mayor o igual que
#GT# mayor
#LT# menor que
#LE# menor o igual que
Funciones
función uso
Investigación Operativa I

@FOR Es utilizado para generar conjuntos de


restricciones
@SUM Calcula la suma de una expresión sobre
todos los miembros de un conjunto
@MIN Calcula el mínimo de una expresión sobre
todos los miembros de un conjunto
@MAX Calcula el máximo de una expresión sobre
todo los miembros de un conjunto
Función @SUM
Investigación Operativa I

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


Función @MIN, @MAX
Investigación Operativa I

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);
Función @FOR
Investigación Operativa I

SETS:
CAMIONES / RENAULT FORD DODGE / : CARGA;
ENDSETS

@FOR(CAMIONES(T) : CARGA(T) <= 2500);

CARGA(RENAULT)<=2500;
CARGA(FORD) <= 2500;
CARGA(DODGE)<=2500;
Usando funciones de dominios
para variables
Investigación Operativa I

Tipos variables definición

@GIN Variable entera

@BIN Variable binaria

@FREE Cualquier valor

@BND Rango para la


variable
Sintaxis
Investigación Operativa I

• @GIN(nombre_variable).
– @GIN(X);

LINGO Document
Problema de la mochila : @BIN
artículo peso Rating
Investigación Operativa I

1 1 2
2 3 9
3 4 3
4 4 8
5 4 10
6 1 6
7 5 4
8 10 10
Modelo LINGO
Investigación Operativa I

MODEL:
SETS:
ARTICULOS /A1..A10/: PESO, RATING, INCLUYE;
ENDSETS
DATA:
PESO RATING =
1 2
3 9
4 3
5 8
6 10
7 6
5 4
10 10;
CAPACIDAD_MOCHILA = 15;
ENDDATA
Modelo LINGO
Investigación Operativa I

MAX = @SUM(ARTICULOS: RATINGS * INCLUYE);

@SUM(ARTICULOS:PESO*INCLUYE)<=CAPACIDAD_MOCHILA;

@FOR(ARTICULOS:@BIN(INCLUYE));

END
VARIABLES ACOTADAS
Investigación Operativa I

@BND(cota_inferior,nombre_variable,cota_superior);

También podría gustarte