lingo
TRANSCRIPT
![Page 1: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/1.jpg)
Taller Lingo
Eliseo Melgarejohttp://www.udec.cl/~eliseomelgarejo
AgradecimientosChristopher Ramírezhttp://www.udec.cl/crramirez
![Page 2: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/2.jpg)
Contenidos
Introducción Lingo Métodos de resolución Sintaxis
![Page 3: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/3.jpg)
QUÉ ES LINGO?
Linear INteractive and General Optimizer
Herramienta que resuelve problemas de programación lineal, no lineal, entera y
cuadrática.
![Page 4: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/4.jpg)
Métodos de resolución
Modelos no linealesGeneral Nonlinear SolverGlobal SolverPermite encontrar soluciones globales a modelos no-lineales convexosMultistart SolverThe multistart solver intelligently generates a sequence of candidate starting points in the solution space of NLP and mixed integer NLPs
![Page 5: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/5.jpg)
Métodos de resolución
Modelos linealesSimplex SolversPrimal and dual simplexMixed Integer SolverIt contains several advanced solution techniques such as cut generation, tree reordering to reduce tree growth dynamically, and advanced heuristic and presolve strategies.Barrier Solver
The barrier solver is an alternative way for solving linear and quadratic programming problems.
![Page 6: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/6.jpg)
Programación lineal
![Page 7: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/7.jpg)
7
Sintaxis
- Por extensión (no necesita estructura)- Por comprensión o algebraica (estructurada)
![Page 8: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/8.jpg)
8
Sintaxis de LINGO: función objetivo
El nombre de la función objetivo o de cualquier restricción debe ir entre corchetes.
Para declarar la función objetivo debe usarse la palabra “MAX” o “MIN” seguidas del signo “=“.
Los comentarios deben empezar con el carácter “!”.
Lámina obtenida de Taller Lingo Eduardo Villablanca
Lámina obtenida de Taller Lingo Eduardo Villablanca
![Page 9: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/9.jpg)
Sintaxis de LINGO: Variables
Por defecto LINGO considera todas las variables como reales y positivas a menos que se especifiquen como:
@GIN : Variables enteras.@BIN : Variables binarias.@FREE : Variables positivas ó negativas.@BND : Limita la variable dentro de un rango
finito.
Lámina obtenida de Taller Lingo Eduardo Villablanca
Lámina obtenida de Taller Lingo Eduardo Villablanca
![Page 10: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/10.jpg)
10
Sintaxis de LINGO: Variables
Sintaxis:
@GIN : @GIN(variable_X);
@BIN : @BIN(variable_X);
@FREE : @FREE(variable_X);
@BND : @BND(lim_inf,X,lim_sup);
Lámina obtenida de Taller Lingo Eduardo Villablanca
Lámina obtenida de Taller Lingo Eduardo Villablanca
![Page 11: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/11.jpg)
Ejemplo
Una empresa manufacturera ha discontinuado la producción de cierta línea de productos no provechosa. Esto creó un exceso considerable en la capacidad de producción. El gerente está considerando dedicar esta capacidad en exceso a uno o más de tres productos; llamémoslo productos 1, 2 y 3. La capacidad disponible de las máquinas, que podría limitar la producción y los requerimientos por unidad de producto, se resume como sigue:
![Page 12: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/12.jpg)
Ejemplo
El departamento de ventas indica que el potencial de ventas para los productos 1 y 2 es mayor que la tasa de producción máxima y que el potencial de ventas para el producto 3 es de 20 unidades por semana. La utilidad unitaria sería de $30, $12 y $ 15 respectivamente, para los productos 1, 2 y 3.
![Page 13: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/13.jpg)
Modelo Ej1 X1: Cantidad producida del producto 1 X2: Cantidad producida del producto 2 X3: Cantidad producida del producto 3
MAX Z = 30*X1 + 12*X2 + 15*X3 S/A
9*X1 + 3*X2 + 5*X3 <= 500 (Restricción de horas de fresadora)
5*X1 + 4*X2 + 0*X3 <= 350 (Restricción de horas de torno)
3*X1 + 0*X2 + 2*X3 <= 150 (Restricción de horas de rectificadora)
X3 <= 20 (Restricción de mercado) X1,X2,X3 >=0;
![Page 14: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/14.jpg)
Modelo Ej1
MODELO LINGOMAX = 30*X1 + 12*X2 + 15*X3;9*X1 + 3*X2 + 5*X3 <= 500;5*X1 + 4*X2 + 0*X3 <= 350;3*X1 + 0*X2 + 2*X3 <= 150;X3 <= 20;
!alternativo@gin(x1);@gin(x2);@gin(x3);
![Page 15: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/15.jpg)
Ej1 (PE)
![Page 16: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/16.jpg)
Problema 2
MODELE UN PROBLEMA DE PROGRAMACION ENTERA QUE PERMITA MAXIMIZAR EL VAN TOTAL
Proyecto VAN INVERSION
1 16 5
2 22 7
3 12 4
4 8 3
PRESUPUESTO
14
![Page 17: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/17.jpg)
Ejercicio 3
![Page 18: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/18.jpg)
18
Sintaxis
Algebraica
![Page 19: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/19.jpg)
Estructura Lingo
MODEL:
SETS:
!declaramos las variables y variables de decisión.
ENDSETS
DATA:
!ingresamos los datos de cada variable.
ENDDATA
!FUNCIÓN OBJETIVO
!RESTRICCIONES
END
![Page 20: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/20.jpg)
20
Sets (conjuntos o entidades)
Sets son grupos de objetos relacionados.
LINGO reconoce 2 tipos de conjuntos : Primitivos:
Es un conjunto compuesto sólo de objetos que nopueden ser reducidos posteriormente. Ejemplo : PLANTAS
Derivados: Son definidos a partir de uno o más conjuntos. Ejemplo :
ARCOS
![Page 21: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/21.jpg)
Conjuntos primitivos
Un conjunto primitivo se define de la siguiente manera:
PLANTAS / P1 P2 P3/ : O;
Listado explícito de la lista miembros
PLANTAS / miembro1..miembroN/ : O;
Listado implícito de la lista miembros
![Page 22: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/22.jpg)
Conjuntos primitivos
Lista miembros Implícito (formato)
Ejemplo Conjunto de miembros
1..n 1..5 1,2,3,4,5
stringM..stringN TRUCKS3..
TRUCKS204
TRUCKS3, TRUCKS4,…,
TRUCKS204
DayM..dayN MON..FRI MON,TUE,WED,THU,FRI
monthM..monthN OCT..JAN OCT,NOV,DEC,JAN
![Page 23: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/23.jpg)
Conjuntos primitivos
Ejemplo
PLANTAS /P1..P3/ : O;
![Page 24: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/24.jpg)
Usando Conjuntos 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
![Page 25: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/25.jpg)
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]
![Page 26: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/26.jpg)
setname(Lista_conj_padres)[/lista_miembros/][:lista_atrib]
EJEMPLO :
SETS:PRODUCTO /A B /;MAQUINA /M N/;SEMANA /1..2/;
ASIGNACION(PRODUCTO,MAQUINA,SEMANA);ENDSETS
Conjuntos derivados
![Page 27: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/27.jpg)
27
Operadores y Funciones
Funciones Matemáticas:@ABS(…) : valor absoluto@COS(…) : coseno@SIN(…) : seno@TAN(…) : tangente@FLOOR(…) : entero inferior@LOG(…) : logaritmo@SQRT(…) : raíz cuadrada
![Page 28: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/28.jpg)
28
Operadores y Funciones
#EQ# : igual a #NE# : no igual a #GT# : mayor estricto a #GE# : mayor igual a #LT# : menor estricto a #LE#: menor igual a #NOT# : no (excluye un elemento) #AND# : y #OR# : ó
![Page 29: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/29.jpg)
Algunas funciones especiales
Función Uso
@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
![Page 30: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/30.jpg)
Función @SUMSETS:
CLIENTES / C1 C2 C3 C4 C5/ : Demanda;ENDSETSDATA :
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));
![Page 31: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/31.jpg)
Función @MIN, @MAXSETS:
CLIENTES / C1 C2 C3 C4 C5/ : Demanda;ENDSETSDATA :
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);
![Page 32: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/32.jpg)
Función @FOR
SETS:CAMIONES / RENAULT FORD DODGE / : CARGA;
ENDSETS
@FOR(CAMIONES(T) : CARGA(T) <= 2500);
CARGA(RENAULT)<=2500;CARGA(FORD) <= 2500;CARGA(DODGE)<=2500;
![Page 33: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/33.jpg)
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 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.
Utilizando el Lenguaje de Modelamiento
![Page 34: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/34.jpg)
Utilizando el lenguaje de modelamiento
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
Demanda 45 20 30 30
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.
![Page 35: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/35.jpg)
Modelo
i,jx
jDx
iOx
as
xcz
ij
jj
ij
iiij
ij
0
1,2,3,4
1,2,3
.
minij
ij
![Page 36: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/36.jpg)
Definiendo los conjuntosTenemos los siguientes conjuntos a definir :
PLANTASCLIENTES
ARCOS
SETS:PLANTAS / P1 P2 P3/ : O;
CLIENTES / C1 C2 C3 C4/ : D;
ARCOS(PLANTAS,CLIENTES) : C,X;ENDSETS
![Page 37: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/37.jpg)
Función Objetivo
i j
ijxc ijmin
LINGO MIN = @SUM(ARCOS(I,J) : C(I,J) * X(I,J));
j i
![Page 38: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/38.jpg)
Restricciones de oferta
iOx ij
ij
@FOR(PLANTAS(I) : @SUM(CLIENTES(J):X(I,J))<=O(I));
i
j
LINGO
![Page 39: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/39.jpg)
Restricciones de demanda
jDx ji
ij
@FOR(CLIENTES(J) : @SUM(PLANTAS(I):X(I,J))>=D(J));
i
j
LINGO
![Page 40: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/40.jpg)
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
![Page 41: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/41.jpg)
Resolviendo…
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
![Page 42: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/42.jpg)
MODELO FINALMODEL:SETS:
PLANTAS / P1 P2 P3/ : O;
CLIENTES / C1 C2 C3 C4/ : D;
ARCOS(PLANTAS,CLIENTES) : C,X;ENDSETSDATA:
O = 35 50 40;
D = 45 20 30 30;
C = 8 6 10 9 9 12 13 7 14 9 16 5;
ENDDATA
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
![Page 43: Lingo](https://reader033.vdocuments.pub/reader033/viewer/2022061200/5470426fb4af9f3d508b45f5/html5/thumbnails/43.jpg)
Problema 2
MODELE UN PROBLEMA DE PROGRAMACION ENTERA QUE PERMITA MAXIMIZAR EL VAN TOTAL
Proyecto VAN INVERSION
1 16 5
2 22 7
3 12 4
4 8 3
PRESUPUESTO
14