You are on page 1of 10

Optimitzaci Assignatura dEstadstica, UAB

Curs 2006/2007

LINDO - Parte 1 Introduccin a LINDO


LINDO: abreviatura en ingls de Linear INteractive Discrete Optimization (Optimizacin Lineal Discreta e INteractiva). Es un software muy bsico que permite realizar optimizacin de problemas de programacin lineal y cuadrtica, definidos sobre variables reales y/o binarias.

Ejemplo 1: El Problema del Carpintero

A. El problema Un carpintero slo fabrica mesas y sillas y vende todas las mesas y las sillas que fabrica en un mercado. Sin embargo, no tiene un ingreso estable y desea optimizar esta situacin. El objetivo es determinar cuntas mesas y sillas debera fabricar por semana para maximizar sus ingresos netos. Los tiempos de produccin requeridos para una mesa y una silla en distintos momentos del da se calculan en 2 horas y 1 hora, respectivamente. Las horas laborales totales por semana son slo 40 (esta limitacin proviene de la familia del carpintero). La materia prima requerida para una mesa y una silla es de 1 y 2 unidades, respectivamente y el abastecimiento total de materia prima es de 50 unidades por semana. Los ingresos netos de la venta de una mesa y una silla son 50 euros y 30 euros respectivamente. B. Formulacin del modelo Las variables de decisin X1 y X2 representan la cantidad de mesas y sillas/semana La funcin objetivo es: 50X1 + 30X2 Restricciones: las limitaciones de la mano de obra y los recursos de materia prima. En resumen se tiene el siguiente modelo matemtico para el problema planteado: Maximizar 50 X1 + 30 X2 Sujeto a: 2 X1 + X2 <= 40 restriccin de mano de obra X1 + 2 X2 <= 50 restriccin de materiales tanto X1 como X2 son no negativas.

C. Resolver el problema usando el LINDO y interpretar los resultados Abra el editor del LINDO y escriba el modelo matemtico, con la diferencia que "sujeto a" debe escribirse "SUBJET TO" o "S.T." o "ST". No es necesario que agregue las condiciones de no negatividad, porque el programa las supone. Su archivo debe lucir como: MAX 50X1 + 30 X2 ST 2X1 + X2 <40 X1 + 2X2 < 50 END No olvide de dejar los espacios adecuados y de bajar a una nueva lnea con la tecla Enter. El no seguir estas indicaciones puede originar problemas a la hora de resolver el modelo. NOTA: 1. La funcin objetivo no debera contener ninguna restriccin. Por ejemplo, no se puede ingresar Max 2X1 + 5. 2. Todas las variables deben aparecer en el lado izquierdo de las restricciones, mientras que los valores numricos deben aparecer en el lado derecho de las restricciones 3. Se presupone que todas las variables son no negativas. No ingrese las condiciones de no negatividad. Por defecto, LINDO ya considera la no negatividad de las variables. 4. LINDO slo acepta cinco operadores: + , - , <= , >= , = . As pues, en la formulacin del problema no podr usarse ningn otro operador ( * , / , ^ , etc.) ni tampoco parntesis asociativos. 5. LINDO interpreta las desigualdades del tipo <= y >= como desigualdades estrictas (del tipo < y >) 6. Para separar los dgitos decimales de un numero se usa el punto . , por ejemplo en LINDO no se escribe 1,5 sino 1.5. 7. Siempre hemos de finalizar la formulacin del problema aadiendo el comando END.

Se puede aadir comentarios personales sin ms que anteponerles el signo de admiracin ! por ejemplo: MAX 50X1 + 30 X2 ST 2X1 + X2 <40 ! restriccin de mano de obra X1 + 2X2 < 50 ! restriccin de materiales END

Adems se puede asignar un nombre a cada restriccin. Por ejemplo, si escribimos

la restriccin de mano de obra tiene el nombre MANO y la restriccin de materiales tiene el nombre MATERIAL

Guarde el archivo con cualquier nombre y asegrese que quede con la extensin LTX

El siguiente paso es pedirle a LINDO que resuelva el problema. Para ello es suficiente con hacer clic sobre el botn Solve (el que tiene forma de diana), o bien seleccionar esta opcin en la barra de mens.

Nota: Si seleccionamos la opcin SOLVE desde la barra de mens : Si tras resolver un problema hacemos alguna modificacin en la formulacin del mismo, es necesario volver a compilar el modelo (Solve>Compile) antes de volver a usar Solve.
LINDO intentar primero compilar el modelo formulado (para determinar si est bien planteado o no) y, en el caso de que la formulacin sea incorrecta (ya sea desde un punto de vista matemtico o de sintaxis), nos devolver el siguiente mensaje: An error ocurred during compilation on line: n .

Si el modelo ha podido ser compilado, LINDO comenzar la resolucin efectiva del problema, mostrando la ventana Status, donde se da informacin sobre el estado del proceso resolutivo:

A continuacin se describen algunos de los campos que aparecen en la ventana anterior:


Status: ofrece el estado de la solucin actual (ptima, factible, no factible, o no acotada). Iterations: nmero de iteraciones (tablas del algoritmo) que se han realizado. Infeasibility: cantidad por la cual las restricciones han sido excedidas o violadas. Objective: valor actual de la funcin objetivo. Elapsed time: tiempo transcurrido desde el inicio de la resolucin.

Cuando la resolucin haya finalizado, el programa nos preguntar si queremos realizar un anlisis de sensibilidad. De momento elegiremos la opcin NO. Cerramos la ventana Status:

Aparecer una nueva ventana en la pantalla, la Reports Window (hay que hacer clic en la ventana debajo de la ventana principal del LINDO)

La informacin bsica que nos proporciona esta ventana para nuestro ejemplo es que 1. Se han necesitado dos iteraciones para llegar a la solucin ptima `LP OPTIMUM FOUND AT STEP 2' (OPTIMO DE PL ENCONTRADO EN EL PASO 2) indica que se encontr la solucin ptima en la iteracin 2. LINDO utiliza el mtodo de optimizacin simplex.
Muchas veces, aparecer un mensaje muy confuso: "LP OPTIMUM FOUND AT STEP 0" (OPTIMO DE PL ENCONTRADO EN EL PASO 0). Cmo puede ser paso 0? Lindo lleva un registro en su memoria de todas las actividades previas realizadas antes de resolver cualquier problema que usted ingrese. Por lo tanto, no muestra exactamente cuntas iteraciones fueron necesarias para resolver el problema en cuestin. Para saber cuntas iteraciones lleva realmente resolver un problema en particular, debe salir de Lindo y luego reingresar, volver a escribir y a presentar el problema. De esta manera aparecer la cantidad exacta de vrtices (excluyendo el origen) visitados para llegar a la solucin ptima (si es que existe) en forma correcta.

2. Inmediatamente debajo aparece el ptimo del valor de la funcin objetivo.

Este significa que los ingresos netos ptimos (solucin optima del LP) son 1100 euros.

3. Despus sigue la solucin del problema, es decir la estrategia para fijar las variables de decisin a fin de lograr el valor ptimo antes mencionado. Esto aparece con una columna de variables y una columna de valores.

La columna de valores contiene la solucin del problema. Es decir, la estrategia optima es fabricar 10 mesas (variable X1) y 20 sillas (variable X2). Esta solucin va a sorprender al carpintero (debido a los mayores ingresos netos provenientes de la venta de una mesa (50 euros) ).

4. La reduccin de costos asociada con cada variable se imprime a la derecha de la columna de valores La reduccin de costos (REDUCED COST) es la cantidad que tendra que mejorar (aumentar en un MAX, disminuir en un MIN) el coeficiente objetivo asociado con la variable, para que resultase rentable asignar un valor no nulo a la variable. Entonces, una variable que aparece en la solucin optima (con un valor distinto de cero) tendr siempre un coste reducido igual a cero.

5. Debajo de la solucin, aparecen los valores de las variables de holgura/excedente de la tabla final. Los valores de las variables de holgura/excedente para la solucin final figuran en la columna `SLACK OR SURPLUS' (HOLGURA O EXCEDENTE).

Holgura representa la cantidad que sobra de un recurso y Excedente representa el exceso de produccin. Es decir, esta columna nos dice cuan cerca estamos (en unidades) de agotar la restriccin asociada (cumplirla en igualdad). Si es del tipo <= ser un SLACK (Holgura) y si es del tipo >=, un SURPLUS (excedente). Una restriccin es obligatoria (activa) si su holgura tiene el valor cero.

6. Los precios duales relacionados aparecen a la derecha. Los Precios duales (DUAL PRICES) nos dan la cantidad en que mejorara la funcin objetivo (aumentado en un MAX, disminuyendo en un MIN) si relajsemos la restriccin asociada en una unidad. Nota: Con asignar un nombre a cada restriccin es mas fcil interpretar los resultados del LINDO. Por ejemplo, si habamos asignado el nombre MANO a la restriccin de mano de obra y el nombre MATERIAL a la restriccin de materiales tendramos los resultados:

Ejemplo 2: El Problema del Carpintero (2) ...Contratar o no contratar a un ayudante? Supngase que el carpintero pudiera contratar a un ayudante a un costo de 5 euros por hora. Le conviene al carpintero contratar a un ayudante? En caso afirmativo, por cuntas horas? Para resolver este problema hay que aadir una nueva variable X3 para representar la cantidad de horas extra. Entonces el problema modificado es: Maximizar 50 X1 + 30 X2 - 5 X3 Sujeta a: 2 X1 + X2 < 40 + X3 restriccin de la mano de obra con horas adicionales desconocidas X1 + 2 X2 < 50 restriccin de materiales

Ejercicio 1: 1. Escribir el problema del carpintero (2) en la forma necesaria para el paquete LINDO (Cuidado con la restriccin de la mano de obra! Recuerda que en la parte derecha de una desigualdad slo se permiten valores numricos, mientras que en la parte izquierda slo se permiten expresiones lineales de variables y sus coeficientes) 2. Hallar la solucin optima usando LINDO 3. Responda a las siguientes preguntas: 3.1 Cual es el nuevo valor de los ingresos netos ptimos del carpintero? Le conviene contratar a un ayudante? 3.2 Por cuntas horas debe contratar (en caso afirmativo) el ayudante? 3.3 Cul es la estrategia optima (cuantas mesas y sillas van a fabricar el carpintero con su ayudante en el caso optimo)? 3.4 Qu cambiara con la produccin de sillas si el carpintero contrata un ayudante? Es posible modificar el coeficiente de la variable X2 (=ingresos netos de venda de sillas) para que la produccin de sillas sea rentable? Cmo? (COLUMNA DEL COSTE REDUCIDO). 3.5 Cules son las restricciones activas en este problema? (COLUMNA DE HOLGURA). 3.6 Se puede anticipar (sin cambiar el modelo) qu ocurrira si las horas laborables por semana sean aumentados a 41 horas? Qu ocurrira si el abastecimiento total de materia prima sea 55 unidades por semana? (COLUMNA DE PRECIOS DUALES).

Ejemplo 3: El Problema de mesas de ordenador Una empresa fabrica dos modelos de mesas para ordenador, M1 y M2. Para su produccin se necesita un trabajo manual de 20 minutos para el modelo M1 y de 30 minutos para el M2; y un trabajo de mquina de 20 minutos para M1 y de 10 minutos para M2. Se dispone de 100 horas al mes de trabajo manual y de 80 horas al mes de mquina. El beneficio por unidad es de 1,5 y 1 euros para M1 y M2, respectivamente. Cmo se puede planificar la produccin para obtener el mximo beneficio? Llamamos: M1 = n unidades producidas al mes de M1 M2 = n unidades producidas al mes de M2 La funcin objetivo sera: Maximizar 1,5M1 + M2 y las restricciones vendrn dadas por: Sujeto a: 20M1 + 30M2 <= 100*60 20M1 + 10M2 <= 80*60 M1>= 0 M2>= 0 Las dos ltimas restricciones, si bien no constan de forma explcita en el enunciado, s figuran de forma implcita, pues el nmero de mesas a producir no puede ser inferior a 0. Ejercicio 2: 1. Escribir el problema anterior en la forma necesaria para el paquete LINDO. (Cuidado! El nmero 1,5 se escribe como 1.5) 2. Hallar la solucin optima usando LINDO 3. Responda a las siguientes preguntas: 3.1 Cual es el mximo beneficio? 3.2 Cules son los valores ptimos de M1 y M2 unidades producidas? 3.5 Cules son las restricciones activas en este problema? 3.6 Qu ocurrira si las 100 horas de disponibilidad de trabajo manual al mes sean ahora 110 horas al mes? Se puede anticipar (sin cambiar el modelo)?

Octubre 2006 Maria Zakynthinaki

10

You might also like