MANUAL PARA USO DE LINDO 6.1 restricción . Por 1. La función objetivo no debería contener ninguna restricción. ejemplo, no se puede ingresar Ma !"1 # $. 2. Todas odas las las vari variab able les s debe deben n apar aparec ecer er en el lado lado izqu izquie ierrdo de las las restricciones, mientras que los valores numéricos deben aparecer en el lado dereco de las restricciones. !. "e presupone que todas las variables son no negativas. #o ingrese las condiciones de no negatividad. Por defecto, LINDO %a considera &a no negati'idad de &as 'ariab&es. $. L%#&' sólo acepta cinco operadores( ), * , +, -, . s/ pues, en la formu formulac lació ión n del del prob problem lema a no podr podr0 0 usarse usarse ning ningn n otro otro opera operador dor 3 , 4 , 5 , etc.6 ni tampoco paréntesis asociativos. 7. L%#& L%#&' ' inte interp rprreta eta las las desi desigu gual alda dade des s del del tipo tipo 8+9 8+9 : 8-9 8-9 como como desigualdades estrictas del tipo 8+9 : 8-96 ;. Para separar los d/gitos decimales de un numero se usa el punto 8.9 , por ejemplo en L%#&' no se escribe 1,7 sino 1.7. <. "iempre emos de =nalizar la formulación del problema a>adiendo el comando END.
"e puede a>adir comentarios personales sin m0s que anteponerles el signo de admiración
(
?@ 7A@1 ) !A @2 "BCDEFT T' 2@1 ) @2 +$A G restricción de mano de obra @1 ) 2@2 + 7A G restricción de materiales E#& Huarde el arcivo con cualquier nombre : asegrese que quede con la eItensión LT@
El siguiente paso es pedirle a L%#&' que resuelva el problema. Para ello es su=ciente con acer clic sobre el botón "olve el que tiene forma de diana6, o bien seleccionar esta opción en la barra de mens. #ota( "i seleccionamos la opción "'LJE desde la barra de mens( "i tras resolver un problema acemos alguna modi=cación en la formulación del mismo, es necesario volver a compilar el modelo "olve-Fompile6 antes de volver a usar "olve. "i el modelo a podido ser compilado, L%#&' comenzar0 la resolución efectiva del problema, mostrando la ventana K"tatus, donde se da información sobre el estado del proceso resolutivo(
continuación se describen algunos de los campos que aparecen en la ventana anterior( "tatus( ofrece el estado de la solución actual óptima, factible, no factible, o no acotada6. %terations( nmero de iteraciones tablas del algoritmo6 que se an realizado. •
•
%nfeasibilit:( cantidad por la cual las restricciones an sido eIcedidas o violadas. 'bjective( valor actual de la función objetivo. Elapsed time( tiempo transcurrido desde el inicio de la resolución. •
• •
Fuando la resolución a:a =nalizado, el programa nos preguntar0 si queremos realizar un an0lisis de sensibilidad. &e momento elegiremos la opción #'. Ferramos la ventana 9"tatus9(
parecer0 una nueva ventana en la pantalla, la KMeports NindoO a: que acer 8clic9 en la ventana debajo de la ventana principal del L%#&'6
La información b0sica que nos proporciona esta ventana para nuestro ejemplo es que 1. "e an necesitado dos iteraciones para llegar a la solución óptima LP 'PT%?B? Q'B#& T "TEP 2R 'PT%?' &E PL E#F'#TM&' E# EL P"' 26 indica que se encontró la solución óptima en la iteración 2. L%#&' utiliza el método de optimización simpleI. Muchas veces, aparecerá un mensaje muy confuso: "LP OPTIMUM FOUND AT T!P " #OPTIMO D! PL !N$ONT%ADO !N !L PAO &' ($)mo pue*e ser + paso + L-n*o ..eva un re/-s0ro en su memor-a *e 0o*as .as ac0-v-*a*es prev-as rea.-1a*as an0es *e reso.ver cua.2u-er pro3.ema 2ue us0e* -n/rese' Por .o 0an0o, no mues0ra e4ac0amen0e cuán0as -0erac-ones fueron necesar-as para reso.ver e. pro3.ema en cues0-)n' Para sa3er cuán0as -0erac-ones ..eva rea.men0e reso.ver un pro3.ema en par0-cu.ar, *e3e sa.-r *e L-n*o y .ue/o re-n/resar, vo.ver a escr-3-r y a presen0ar e. pro3.ema' De es0a manera aparecerá .a can0-*a* e4ac0a *e v5r0-ces #e4c.uyen*o e. or-/en& v-s-0a*os para ..e/ar a .a so.uc-)n )p0-ma #s- es 2ue e4-s0e& en forma correc0a'
2. %nmediatamente debajo aparece el óptimo del valor de la función objetivo.
Este signi=ca que los ingresos netos óptimos solución optima del LP6 son 11AA euros. &espués sigue la solución del problema, es decir la estrategia para =jar las variables de decisión a =n de lograr el valor óptimo antes mencionado. Esto aparece con una columna de variables : una columna de valores.
Progra)ación &inea& genera& con enteros La Programación Lineal est0ndar asume que las variables de decisión son continuas. "in embargo, en mucas aplicaciones, los valores fraccionarios pueden no tener sentido, por ejemplo S42 trabajadores. Los problemas de programación lineal con enteros son m0s dif/ciles de resolver que los de programación lineal continua. Por qué no resolver todos los problemas como problemas de programación lineal est0ndar : redondear las respuestas a los enteros m0s cercanosU &esafortunadamente, esto genera dos problemas( 1 La solución redondeada puede no ser factible. El redondeo puede no dar una solución óptima. Por lo tanto, el redondeo de resultados de programación lineal puede proporcionar respuestas razonables, pero, para garantizar soluciones óptimas, debemos aplicar programación lineal con enteros. Por defecto, el softOare L%#&' de Programación Lineal asume que todas las variables son continuas. Para problemas de Programación Lineal Entera, deberemos utilizar la sentencia de entero general, *IN. *IN+ seguida de un nombre de variable, restringe el valor de la variable a los enteros no negativos A, 1, 2,V6. El siguiente ejemplo ilustra el uso de la sentencia *IN. E,EMPLO Max 11X1 + 10X2 St 2X1 + X2 <= 12
X1 - 3X2 >= 1 END GIN X1 GIN X2
La salida después de siete iteraciones es( VALOR DE LA FUNCION OBJEIVO 1! ""#00000 VARIABLE VALOR COSE REDUCIDO X1 "#000000 -11#000000 X2 0#000000 -10#000000
"i no ubiéramos especi=cado @1 "i no ubiéramos especi=cado @1 : @2 como enteros generales en este modelo, L%#&' no abr/a allado la solución óptima de @1 ; : @2 A. En cambio, L%#&' abr/a considerado a @1 : @2 como continuos : abr/a llegado a la solución @1 7.2S : @2 1.$!. 'bsérvese, asimismo, que el simple redondeo de la solución continua a los valores enteros m0s próIimos no da la solución óptima en este ejemplo. En general, las soluciones continuas redondeadas pueden no ser las óptimas :, en el peor de los casos, no son factibles. "obre esta base, uno se puede imaginar que puede requerir muco tiempo obtener la solución óptima en un modelo con mucas variables de enteros. En general, esto es as/, : convendr0 utilizar la caracter/stica H%# sólo cuando es absolutamente necesario. Fomo ltimo comentario, el comando H%# también acepta un argumento de valor entero en lugar de un nombre de variable. El nmero corresponde al nmero de variables que uno desea que sean enteros generales. Estas variables deben aparecer primero en la formulación. &e tal modo, en este ejemplo sencillo, podr/amos aber reemplazado las dos sentencias H%# por la nica sentencia H%# 2.
Progra)ación entera binaria Fon el comando %#T en L%#&' se restringe la variable a A ó 1. estas variables con frecuencia se las llama variables binarias. En mucas aplicaciones, las variables binarias pueden ser mu: tiles en situaciones de todo o nada. En los ejemplos podemos considerar( asumir un coste =jo, construir una nueva planta o comprar un nivel m/nimo de algn recurso para recibir un descuento por cantidad, etc.
La salida que proporciona L%#&' da la solución óptima : el valor óptimo después de oco iteraciones utilizando el método WCranc*and*CoundW Mami=car : cotar6. 'bserve que, en lugar de repetir %#T cuatro veces, se puede emplear %#T $. Las primeras cuatro variables aparecieron en la función objetivo.
Ejemplo Max 11X1 + $X2 + %X3 + 1&X' (t 'X1 + 3X2 + 2X3 + &X' <= % END IN X1 IN X2 IN X3 IN X'
VALOR DE LA FUNCION OBJEIVO 1! 2'#00000 VARIABLE VALOR COSE REDUCIDO X1 0#000000 -11#000000 X2 1#000000 -$#000000 X3 0#000000 -%#000000 X' 1#000000 -1