

























Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
Asignatura: Investigacion de Operaciones, Profesor: Ruben F., Carrera: Educación Primaria, Universidad: UCJC
Tipo: Guías, Proyectos, Investigaciones
1 / 33
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!


























I. Entorno de Desarrollo de modelos en el software LINGO
¿Qué es LINGO?
LINGO ( L inear, IN teractive, and G eneral O ptimizer), es un lenguaje de modelación matemática, que provee un entorno en el cual se puede desarrollar, correr y modificar modelos matemáticos.
LINGO es una herramienta fácil de utilizar para desarrollar grandes modelos de optimización lineal y no lineal.
Uso de Conjuntos (SETS)
Comúnmente los grandes modelos requieren expresar grupos de muchas restricciones, las cuales mantienen una estructura similar. Dada esta característica, LINGO, permite manejarlo como conjuntos (SET) de información y realizar las operaciones de una manera más eficiente. Usando el estilo del modelo directo, usted necesitará encargarse de tipear de manera repetitiva cada término de cada restricción. Los SETS le permiten definir y trabajar con grupos de objetos que necesitan ser procesados de formas similares. En efecto, los mismos objetos pueden incluso ser otros conjuntos. Los SETS son el fundamento del Lenguaje de Modelación de LINGO. Con una definición de conjuntos pude escribir una serie de restricciones similares en una sentencia simple y expresar formulaciones largas y complejas consistentemente. Esto le permite expresar sus modelos más grandes muy rápidamente, y de cierta manera es fácil de leer y entender.
Consideraciones sobre el uso de conjuntos (SETS)
SET puede ser una lista de productos, tareas, o stocks. Cada elemento del conjunto puede tener una o más características asociadas con éste. Llamaremos a estas características atributos. Por ejemplo, un SET de producto puede tener un atributo que lista el precio de cada producto.
Tipos de Conjuntos
Primitivos
Densos Derivados Lista Explicita No Densos Filtros
Conjunto Primitivo: Los conjuntos primitivos son los objetos fundamentales en un modelo y no pueden ser desmenuzados en componentes más pequeños.
La definición de un conjunto primitivo requiere:
nombre_conjunto / lista_miembros / [ : lista_atributos ] SUCURSAL / AREQUIPA, CUZCO, TRUJILLO / : INGRESOS;
En algunos casos de definición de conjuntos no es necesario definir atributos asociados a los miembros del conjunto, por ejemplo el caso anterior podría quedar así:
SUCURSAL / AREQUIPA, CUZCO, TRUJILLO / : ;
Los miembros de los dos ejemplos anteriores han sido definidos por extensión.
nombre_conjunto / 1 ..n / [ : lista_atributos ] PROYECTO / 1 .. 3 / : RENTABILIDAD;
Los miembros del ejemplo anterior han sido definidos por compresión. Ambos casos son validos.
También se podría generar un SET derivado a partir de un solo tipo de SET padre:
SETS: SUCURSAL / AREQUIPA, CUZCO, TRUJILLO /:; CONEXION(SUCURSAL, SUCURSAL): DISTANCIA; ENDSETS
Miembros del conjunto CONEXION
Indice Miembro 1 ( AREQUIPA, AREQUIPA) 2 ( AREQUIPA, CUZCO ) 3 ( AREQUIPA, TRUJILLO ) 4 ( CUZCO, AREQUIPA) 5 ( CUZCO, CUZCO ) 6 (CUZCO, TRUJILLO ) 7 (TRUJILLO, AREQUIPA) 8 (TRUJILLO, CUZCO ) 9 (TRUJILLO, TRUJILLO)
Conjunto Derivado No Denso (Usando una Lista de Miembros Explícita)
nombre_conjunto (Lista_conjuntos_padres) [ /especificaciones_lista_miembros/ ] [ :lista_atributos ];
SUC_PROY_PER (SUCURSAL, POYECTO, PERIODO) / AREQUIPA PROY1 1, AREQUIPA PROY2 2, CUZCO PROY2 1 / : TASA, INVMAXIMA;
SUC_PROY_PER tendrá solo tres miembros del conjunto disperso. ( AREQUIPA, PROY1, 1), ( AREQUIPA, PROY2, 2) y ( CUZCO, PROY2, 1)
Conjunto Derivado No Denso (Usando un Filtro de Miembros)
CAMIONES_PESADOS(CAMIONES) | CAPACIDAD(&1) #GT# 50000;
Una compañía dispone de 35 millones para distribuirlos el próximo año entre sus sucursales (Arequipa, Cuzco, Trujillo). Debido a compromisos de la estabilidad, el nivel de empleados y por otras razones la compañía ha establecido un nivel mínimo de asignación de fondos para cada sucursal. Estos fondos mínimos son de 8, 10 y 15 millones de dólares respectivamente. Debido a la naturaleza de su operación, la sucursal Cuzco no puede utilizar más de 20 millones de dólares. Cada sucursal tiene la oportunidad de dirigir distintos proyectos con los fondos que recibe. Para cada proyecto se ha establecido una tasa de ganancia (como un porcentaje de la inversión). Por otra parte, algunos de los proyectos permiten solo una inversión limitada. A continuación se dan los datos para cada proyecto.
Sucursal Proyecto (^) Utilidad (%)Tasa de InversiónMáxima 1 8 10 Arequipa 2 6 5 3 7 9 1 5 7 Cuzco 2 8 10 3 9 4 1 10 6 Trujillo 2 6 12 3 15 6
Pasos para identificar y relacionar los elementos que participan en la estructura de un modelo en LINGO
Para los principiantes en el uso de LINGO les recomendamos hacer este análisis para poder entender las relaciones entre los elementos y saber como definir la estructura de un modelo en un entorno LINGO. Si usted ya es un usuario de LINGO podría obviar estos pasos.
1. Describir los elementos que participan en el modelo.
( i ) =Índice de sucursal. ( j ) =Índice de proyectos.
Mínimo( i ) =Nivel mínimo de asignación de fondos para la sucursal i. Máximo( i ) =Nivel máximo de asignación de fondos para la sucursal i^. InvMaxima( i , j ) =Inversión máxima en la sucursal i^ para el proyecto j. PresupuestoTotal =Presupuesto total disponible. TasaRentabilidad ( i , j ) =Tasa de rentabilidad del proyecto i^ en la sucursal j.
2. Matriz de elementos que participan en el modelo y sus relaciones, Indicar cuales son parámetros y variables.
Clasific. ELEMENTOS Sucursal(i) Proyecto(j) Tasa Inv.Máximo Mínimo Máximo Presup Asignación Índice Sucursal (i) Índice Proyecto (j) Parámetro Tasa (^) x x Parámetro Inv. Máxima (^) x x Parámetro Mínimo (^) x Parámetro Máximo (^) x Parámetro Presupuesto
3. Relacionar los elementos (“depende de”).
De la matriz anterior podemos observar que:
♦♦♦♦ Sucursal(i) no dependen de ningún elemento superior, por lo tanto es un elemento básico. ♦♦♦♦ Proyecto(j) no dependen de ningún elemento superior, por lo tanto es un elemento básico. ♦♦♦♦ Tasa depende de los elementos Sucursal(i) y Proyecto(j). ♦♦♦♦ Inv. Máxima depende de los elementos Sucursal(i) y Proyecto(j). ♦♦♦♦ Mínimo depende solo del elemento Sucursal(i). ♦♦♦♦ Máximo depende solo del elemento Sucursal(i). ♦♦♦♦ Presupuesto es un parámetro aislado y no depende de ningún elemento.
Proyecto(j).
4. Relacionar los elementos (“depende de”) y plantear una estructura de SET.
Sucursal(i), no depende de ningún elemento superior, por lo tanto es un elemento básico, que se define como un conjunto primitivo, para nuestro ejemplo lo llamaremos el set SUCURSAL definido por extensión (Arequipa, Cuzco, Trujillo).
SETS: SUCURSAL /AREQUIPA,CUZCO,TRUJILLO/: ; ENDSETS
Proyecto(j), no depende de ningún elemento superior, por lo tanto es un elemento básico, que se define como un conjunto primitivo, para nuestro ejemplo lo llamaremos el set PROYECTO, compuesto por tres proyectos, y lo definiremos por comprensión.
SETS: SUCURSAL /AREQUIPA,CUZCO,TRUJILLO/: ; PROYECTO /1…3/: ; ENDSETS
Los elementos Tasa, Inv. Máxima y X (^) ( i , j ), depende de los elementos Sucursal(i) y Proyecto(j) (definidos anteriormente como conjuntos), por lo tanto es necesario crear una estructura de un set derivado que permita enlazar ambos conjuntos; para nuestro ejemplo lo llamaremos el set SUCURSAL_PROYECTO, compuesto por los conjuntos SUCURSAL y PROYECTO, y lo definiremos como un conjunto derivado denso. Así mismo los elementos Tasa, Inv. Máxima y X (^) ( i , j ), serán llamados atributos del conjunto derivado SUCURSAL_PROYECTO, y los definiremos como TASA, INVMAXIMA y ASIGNACION.
SETS: SUCURSAL /AREQUIPA,CUZCO,TRUJILLO/: ; PROYECTO /1…3/: ; SUCURSAL_PROYECTO(SUCURSAL, PROYECTO): TASA, INVMAXIMA, ASIGNACION ; ENDSETS
Los elementos mínimo y máximo depende solo del elemento Sucursal(i), por lo tanto serán llamados atributos del conjunto primitivo SUCURSAL, y los definiremos como MINIMO y MAXIMO. Finalmente la sección SETS quedara de la siguiente manera:
SETS: SUCURSAL /AREQUIPA,CUZCO,TRUJILLO/: MINIMO, MAXIMO; PROYECTO /1..3/: ; SUCURSAL_PROYECTO(SUCURSAL, PROYECTO): TASA, INVMAXIMA, ASIGNACION ; ENDSETS
Formulación en LINGO:
MAX = @SUM( SUCURSAL_PROYECTO : TASA * ASIGNACION );
La función de @SUM es usada para alcanzar todos los miembros del SET derivado SUCURSAL_PROYECTO.
Ecuación Generada:
MAX .08 ASIGNACION( AREQUIPA, 1) + .06 ASIGNACION( AREQUIPA, 2)
Restricción de uso mínimo de presupuesto por sucursal.
Formulación Matemática:
X (^) Minimo()
3
1
( ,) i j
Formulación en LINGO:
@FOR( SUCURSAL(I): @SUM( PROYECTO(J) : ASIGNACION(I,J) ) >= MINIMO(I) );
Para cada SUCURSAL I, la suma de las cantidades asignadas a cada SUCURSAL I asociadas al PROYECTO J, en la variable ASIGNACION(I,J), debe ser mayor o igual que el MINIMO de nivel de asignación de fondos de la SUCURSAL I.
Ecuación Generada:
ASIGNACION( AREQUIPA, 1) + ASIGNACION( AREQUIPA, 2)
ASIGNACION( CUZCO, 1) + ASIGNACION( CUZCO, 2)
ASIGNACION( TRUJILLO, 1) + ASIGNACION( TRUJILLO, 2)
Restricción de uso máximo de presupuesto por sucursal.
Formulación Matemática:
X (^) Máximo()
3
1
( ,) i j
∀ i = 2 (Solo para Cuzco)
Formulación en LINGO:
@FOR( SUCURSAL( I) | MAXIMO(I) #NE# 0 : @SUM( PROYECTO (J): ASIGNACION(I,J)) <= MAXIMO( I));
Para cada SUCURSAL I, donde su valor de atributo nivel MAXIMO sea distinto de cero, la suma de las cantidades asignadas a cada SUCURSAL I asociadas al PROYECTO J, en la variable ASIGNACION(I,J), debe ser menor o igual que el MAXIMO de nivel de asignación de fondos de la SUCURSAL I.
Ecuación Generada:
Solo se genera la ecuación para la sucursal cuzco, que es la única que tiene una restricción de uso máximo de presupuesto de 20 millones. Para las otras sucursales que tienen cero (según la data leída en la sección DATA), se debe asumir que no existe restricción de límite máximo.
ASIGNACION( CUZCO, 1) + ASIGNACION( CUZCO, 2)
Restricción de inversión máxima por proyecto en cada sucursal.
Formulación Matemática:
X (^) ( i , j )≤ (^) InvMaxima( i , j ) ∀ i = 1 , 2 , 3 ; ∀ j = 1 , 2 , 3
Formulación en LINGO:
@FOR( SUCURSAL_PROYECTO (I,J) : ASIGNACION(I,J) <= INVMAXIMA(I,J) );
Para cada SUCURSAL I, y PROYECTO J, las cantidades asignadas a cada SUCURSAL I asociadas al PROYECTO J, en la variable ASIGNACION(I,J), debe ser menor o igual a la inversión máxima INVMAXIMA para la SUCURSAL I en el PROYECTO J.
Ecuación Generada:
ASIGNACION( AREQUIPA, 1) <= 8 ASIGNACION( AREQUIPA, 2) <= 6 ASIGNACION( AREQUIPA, 3) <= 7 ASIGNACION( CUZCO, 1) <= 5 ASIGNACION( CUZCO, 2) <= 8 ASIGNACION( CUZCO, 3) <= 9 ASIGNACION( TRUJILLO, 1) <= 10 ASIGNACION( TRUJILLO, 2) <= 6 ASIGNACION( TRUJILLO, 3) <= 15
Solo se genera la ecuación para aquellos valores donde el atributo MAXIMO es distinto de cero, revise la observación anterior en definición de DATA (*)
El modelo llevado al entorno LINGO
Ahora resolvamos el modelo. En LINGO para Windows escoger solve del menú Lingo.
Resolviendo el Problema
Para resolver el problema haga un clic en el boton del bull ubicada en la barra de herramientas
La ventana “Solver Status”
State: Da el estado de la solución actual, los posibles estados, son: "Global Optimum" "Local Optimum" "Feasible" "Infeasible" "Unbounded" "Interrupted” "Undetermined".
Iterations: Número de iteraciones realizadas.
Infeasibility: Cantidad por la cual las restricciones son violadas.
Objective: Valor actual de la función objetivo.
11 0.0000000 0.1000000E- 12 8.000000 0. 13 6.000000 0. 14 0.0000000 0.5000000E- 15 0.0000000 0.
El valor objetivo, en la parte superior del reporte, nos dice que la máxima rentabilidad es 3.98 millones de dólares.
El resultado nos da la asignación total de los recursos financieros, en el atributo ASIGNACION. El valor de ASIGNACION(Arequipa, 1), por ejemplo es 8. Esto significa que la cantidad de dinero asignado a la sucursal Arequipa para el proyecto 1 deberá ser 8 millones de dólares. Para ver la solución de sólo este atributo en LINGO, escoja la opción “solution” del menú “Lingo” e ingrese el nombre del atributo “ASIGNACION” en el cuadro de dialogo. También puede seleccionar el siguiente icono:
Y aparecerá la siguiente ventana:
Active con un check la opción que le permite mostrar solo los valores distintos de cero, y haga Click en OK. De esta manera, Lingo mostrará sólo los valores de las variables ASIGNACION distintos de cero, como se muestra abajo.
Variable Value Reduced Cost ASIGNACION( AREQUIPA, 1) 8.000000 0. ASIGNACION( CUZCO, 2) 1.000000 0. ASIGNACION( CUZCO, 3) 9.000000 0. ASIGNACION( TRUJILLO, 1) 2.000000 0. ASIGNACION( TRUJILLO, 3) 15.00000 0.
El siguiente modelo es una ampliación del modelo anterior, ilustra el uso del SET derivado no denso, usando una lista de miembros explicita.
Una compañía dispone de 180 millones como presupuesto para los siguientes 3 periodos, que se usaran entre sus 3 sucursales. Se ha establecido un nivel máximo de asignación de fondos de 20 millones para cada sucursal por periodo. En caso que una sucursal no exceda el límite del periodo, puede usar esa diferencia para el siguiente periodo. Cada sucursal tiene la oportunidad de dirigir distintos proyectos con los fondos que recibe. Para cada proyecto se ha establecido una tasa de ganancia (como un porcentaje de la inversión). Por otra parte, algunos de los proyectos obligan una inversión mínima. Determine la política de asignación que genere el mejor beneficio.
Inversión Mínima (millones)
Sucursal Proyecto Periodo Cantidadmínima
Arequipa 1 1 5 Cuzco 1 3 4 Trujillo 3 1 3
Periodo 1 Periodo 2 Periodo 3 Sucursal (^) Proyecto Tasa deUtilidad (%)
Inversión Máxima (m)
Proyecto
Tasa de Utilidad (%)
Inversión Máxima (m)
Proyecto
Tasa de Utilidad (%)
Inversión Máxima (m) 1 8 10 1 9 9 1 8 10 Arequipa 2 6 7 2 6 5 2 7 6 3 7 9 3 7 9 3 7 9 1 5 7 1 6 4 1 5 7 Cuzco 2 8 10 2 18 10 2 8 8 3 9 4 3 9 3 3 9 4 1 10 6 1 11 6 1 7 6 Trujillo 2 6 12 2 6 10 2 6 11 3 15 6 3 15 5 3 15 6
Solución:
Formulación Algebraica del modelo
Definición de variables:
Definición de parámetros:
Máximo ( (^) i , k ) =Nivel máximo de asignación de fondos para la sucursal i en el periodo
Pasos para identificar y relacionar los elementos que participan en la estructura de un modelo en LINGO
Como este ejemplo es una ampliación del modelo anterior iremos de frente a la matriz de relaciones.
8. Matriz de elementos que participan en el modelo y sus relaciones, Indicar cuales son parámetros y variables.
Clasific. ELEMENTOS Sucur.(i) Proy(j) Period(k) Tasa Inv.Máximo Mín Máx Presup (^) (i,j,k)X Sobrante(i,k) Parámetro Sucursal (i) Parámetro Proyecto (j) Parámetro Periodo (k) Parámetro Tasa (^) x x x Parámetro Inv. Máxima (^) x x x Parámetro Mínimo (^) x x x Parámetro Máximo (^) x x Parámetro Presupuesto Variable X (i,j,k) (^) x x X Variable Sobrante .( i , k ) x X
9. Relacionar los elementos (“depende de”).
De la matriz anterior podemos observar que:
Sucursal(i), no depende de ningún elemento superior, por lo tanto es un elemento básico, que se define como un conjunto primitivo, para nuestro ejemplo lo llamaremos el set SUCURSAL definido por extensión (Arequipa, Cuzco, Trujillo).
SETS: SUCURSAL /AREQUIPA,CUZCO,TRUJILLO/: ; ENDSETS
Proyecto(j), no depende de ningún elemento superior, por lo tanto es un elemento básico, que se define como un conjunto primitivo, para nuestro ejemplo lo llamaremos el set PROYECTO, compuesto por tres proyectos, y lo definiremos por comprensión.
SETS: SUCURSAL /AREQUIPA,CUZCO,TRUJILLO/: ; PROYECTO /1…3/: ; ENDSETS
Periodo (k), no depende de ningún elemento superior, por lo tanto es un elemento básico, que se define como un conjunto primitivo, para nuestro ejemplo lo llamaremos el set PERIODO, compuesto por tres periodo, y lo definiremos por comprensión.
SETS: SUCURSAL /AREQUIPA, CUZCO, TRUJILLO/: ; PROYECTO /1…3/: ; PERIODO /1…3/: ; ENDSETS
Los elementos (^) Sobrante .( i , k ) y Máximo, depende de los elementos Sucursal(i) y
Periodo(k) (definidos anteriormente como conjuntos), por lo tanto es necesario crear una estructura de un set derivado que permita enlazar ambos conjuntos; para nuestro ejemplo lo llamaremos el set SUCURSAL_PERIODO, compuesto por los conjuntos SUCURSAL y PERIODO, y lo definiremos como un conjunto derivado denso. Así mismo el elemento (^) Sobrante .( i , k )y Máximo, serán llamados atributos del conjunto
derivado SUCURSAL_PERIODO, y los definiremos como SOBRANTE y MAXIMO.
SETS: SUCURSAL /AREQUIPA, CUZCO, TRUJILLO/: ; PROYECTO /1…3/: ; PERIODO /1…3/: ; SUCURSAL_PERIODO(SUCURSAL, PERIODO): SOBRANTE, MAXIMO; ENDSETS
Proyecto(j) y Periodo(k) (definidos anteriormente como conjuntos), por lo tanto es necesario crear una estructura de un set derivado que permita enlazar los tres conjuntos; para nuestro ejemplo lo llamaremos el set SUCURSAL_PROYECTO_PERIODO, compuesto por los conjuntos SUCURSAL, PROYECTO y PERIODO, y lo definiremos como un conjunto derivado denso.
conjunto derivado SUCURSAL_PROYECTO_PERIODO, y los definiremos como TASA, INVMAXIMA y ASIGNACION.
SETS: SUCURSAL /AREQUIPA, CUZCO, TRUJILLO/: ; PROYECTO /1…3/: ; PERIODO /1…3/: ; SUCURSAL_PERIODO(SUCURSAL, PERIODO): SOBRANTE, MAXIMO; SUCURSAL_PROYECTO_PERIODO(SUCURSAL, PROYECTO, PERIODO): TASA, INVMAXIMA, ASIGNACION ; ENDSETS