Tutorial SOFTWARE LINGO 8.0

1 Tutorial SOFTWARE LINGO 8.0Creado por Cristian Oliva ...
Author: Domitila Pinero
0 downloads 0 Views

1 Tutorial SOFTWARE LINGO 8.0Creado por Cristian Oliva

2 ¿Qué es LINGO? 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

3 Creando un Modelo LINGOEn 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

4 UN EJEMPLO Prod. Depart. 1 Depart. 2 Depart. 3 Benef. 1 3 hrs./unid.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 : Prod. Depart. 1 Depart. 2 Depart. 3 Benef. 1 3 hrs./unid. 2 hrs./unid. 1 hr./unid. $ 2 2 4 hrs./unid. 3 hr./unid. $ 4 3 2 hr./unid. $ 2.5 Hrs. Total 600 horas 400 horas 300 horas

5 Modelo

6 Modelo LINGO Cada Línea en LINGO debe terminarse con un punto y coma« ; ». Tu modelo no se resolverá sin ellos.

7 Modelo LINGO Ya que los computadores no tienen el símbolo , LINGOAdoptó la convención de usar los caracteres <= para denotar . Sin embargo, tu puedes entrar simplemente <. Lo mismo ocurre para >=, tu puedes entrar simplemente >.

8 Modelo LINGO También podemos incluir al modelo LINGO comentarios, detal manera que mejore la legibilidad de éste.

9 Sintaxis general de LINGOUna expresión puede ser escritas en muchas líneas, 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 no diferencia entre letras mayúsculas o minúsculas. Por lo tanto, los siguientes nombres de variables podrían ser equivalentes. TURBO, Turbo, turbo

10 Sintaxis general de LINGOCuando se le dan nombres a las variables en LINGO, todos 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.

11 Resolviendo un modelo LINGOUna 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

12 Ventana de Status del Solver LINGOSi no se encontraron errores, la ventana del status del solver de LINGO aparece. Aparece también el informe de la solución.

13 Utilizando el Lenguaje de ModelamientoUna 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.

14 Utilizando el Lenguaje de ModelamientoPowerco 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.

15 Utilizando el lenguaje de modelamientoC1 (US$) C2 C3 C4 Oferta P1 8 6 10 9 35 P2 12 13 7 50 P3 14 16 5 40 Demanda 45 20 30

16 Modelo

17 Función Objetivo Notación Matemática Sintaxis LINGO min MIN = cijLenguaje modelo LINGO MIN : C(I,J) * X(I,J)); Notación Matemática Sintaxis LINGO min MIN = @SUM(ARCOS(I,J) : cij C(I,J) xij X(I,J));

18 Las Restricciones de oferta@FOR(PLANTAS(I) <=O(I)); Notación Matemática Sintaxis LINGO @FOR(PLANTAS(I) : @SUM(CLIENTES(J) : xij X(I,J) Oi O(I));

19 Las Restricciones de demanda@FOR(CLIENTES(J) >=D(J)); Notación Matemática Sintaxis LINGO @FOR(CLIENTES(J) : @SUM(PLANTAS(I) : xij X(I,J) Dj D(J));

20 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

21 Definiendo los conjuntosTenemos 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

22 COLOCANDO LOS DATOS DATA: O = 35 50 40; D = 45 20 30 30; C = 8 6 10 9 ; ENDDATA

23 MODELO LINGO

24 CARACTERISTICAS ADICIONALESPODEMOS COLOCARLES NOMBRES A NUESTRA FUNCION OBJETIVO, RESTRICCIONES Y UN TITULO AL MODELO Ejemplo 1: [objetivo] MIN = X; Ejemplo : [oferta_planta] @SUM(CLIENTES(J):X(I,J))<=O(I));

25 Problema Costos de transporte por unidad

26 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 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.

27 Usando Conjuntos (Sets)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

28 Usando Conjuntos 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;

29 Usando Conjuntos 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;

30 Usando Conjuntos 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

31 Usando Conjuntos Como una ilustración, en el ejemplo Powerco, podríamos haber definido el conjunto PLANTAS como : PLANTAS /P1..P3/ : O;

32 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

33 Usando Conjuntos : conjuntos derivadosPara 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]

34 Usando Conjuntos : conjuntos derivadossetname(Lista_conj_padres)[/lista_miembros/][:lista_atrib] EJEMPLO : SETS: PRODUCTO /A B /; MAQUINA /M N/; SEMANA /1..2/; ASIGNACION(PRODUCTO,MAQUINA,SEMANA); ENDSETS

35 Usando Conjuntos : conjuntos derivados y filtrosEJEMPLO : 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

36 Funciones función uso @FOREs 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

37 Función @SUM SETS: CLIENTES / C1 C2 C3 C4 C5/ : Demanda; ENDSETSDATA : DEMANDA = ; ENDDATA Demanda_total Demanda_total Demanda_3 #LE3# :DEMANDA(J));

38 Función @MIN, @MAX SETS: CLIENTES / C1 C2 C3 C4 C5/ : Demanda; ENDSETSDATA : DEMANDA = ; ENDDATA Min_demanda Max_demanda Min_demanda Max_demanda

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

40 Usando funciones de dominios para variablesTipos variables definición @GIN Variable entera @BIN Variable binaria @FREE Cualquier valor @BND Rango para la variable

41 Sintaxis @GIN(nombre_variable). @GIN(X);

42 Problema de la mochila : @BINartículo peso Rating 1 2 3 9 4 8 5 10 6 7

43 Modelo LINGO MODEL: SETS: ARTICULOS /A1..A10/: PESO, RATING, INCLUYE;ENDSETS DATA: PESO RATING = 2 9 3 8 10 6 4 10; CAPACIDAD_MOCHILA = 15; ENDDATA

44 Modelo LINGO MAX = @SUM(ARTICULOS: RATINGS * INCLUYE);@SUM(ARTICULOS:PESO*INCLUYE)<=CAPACIDAD_MOCHILA; END

45 VARIABLES ACOTADAS @BND(cota_inferior,nombre_variable,cota_superior);