Está en la página 1de 5
eee a 7 Introduccién a LINGO En esta seceién veremos cémo usar LINGO para resolver problemas de programacién mar tematica. El primer paso para resolver un problema es modelizarlo, as{ que.empezamos por plantear y modelizar el problema que usaremos como ejemplo. . 7.1 Un ejemplo de modelizacin Ejemplo 1a Una empresa necesita incrementar urgentemente el rendimiento de dos lineas de produccién de una de sus fébricas. En la primera linea de produccién necesita que se produzcan al fnenos 3000 unidades mds al dfa, mientras que en la segunda linea necesita al menos 5000 unidades mds, Para ello se dispone a contratar trabajadores temporales, que debe distribuir en turnos de mafiana, tarde y noche. La fabrica puede albergar hasta 100 horas adicionales en el turno de mafiana, hasta 200 en el turno de tarde y hasta 300 en el turno de noche. Por razones de organizacién, al ‘menos 190 horas de la primera linea de produccién deben realizarse antes de la noche. La tabla siguiente recoge el niimero de articulos que pueden producirse en cada hora de trabajo ‘en cada linea segiin el turno en que se realice: Mafiana Tarde Noche Leal 15 17 20 Lina2 10 12 15 mientras que la tabla siguiente recoge el precio (env euros) que la empresa deberd pagar por cada hora de trabajo en cada linea y turno: Mafiana Tarde Noche Lineal 4055100 Linea2 50 5090 Determina cudntas horas conviene contratar en cada turno para cada linea de produccién dé modo que se consiga la produccién adicional requerida con coste mfnimo. x Para modelizar el problema debemos identificar las variables de decisiGn, la funcién objetivo y las restricciones. « Determinacién de las variables Las variables representan lo que tenemos qué decidir: Tmaginemos que ya hemos resuelto cl problema y que tenemos que darle la solucién al gerente de la empresa. {Qué tendriamos que decirle? Nuestra respuesta serfa algo asf como: Para Ia primera nea de produccién conviene contratar 40 horas en el turno de ‘mafiana, 30 en el de tarde y 20 en el de noche, mientras que para la segunda linea de produccién conviene contratar 30 horas en el turno de mafiana, 25 en el de tarde y AT en el de noche. {Bsos ntimeros estén tomados al azar, precisamente porque lo que nos falta hacer es encontrar la respuesta correcta, la solucién éptima, pero, sea In que sea, debe constar de seis mimeros que ahora desconocemos. Dichos mimeros desconocidos son: 153 154 7 Introduccién a LINGO My horas que conviene contratar para la linea 1 en el turno de mafiana T; horas que conviene contratar para la linea 1 en el turno de tarde Ni, horas qué conviene contratar para. Ia linea 1 en el turno de fioche ‘My horas que conviene contratar para la linea 2 en el turno de maiiana T) horas que conviene contratar para la inea 2 en el turno de tarde Ng horas que conviene contratar para la linea 2 en el turno de noche Estas son, pues, las variables del problema. © Determinacién de la funcién objetivo El problema establece que nuestro objetivo es contratar las horas necesarias con el coste ininimo, luego la funcién objetivo es la funcién de coste. Si contratamos M, horas para el turno de mafiana en Ia Iinea 1, su coste seré de 40M; €, e igualmente con los demés casos, Inego el objetivo es min. 40M; ++ 50Ma + 551; + 5072 + 100; +90N2 # Detérminacién de las restricciones Ahora debemos leer atentamente el enunciado y detenernds en cada afirmacién que suponga tna limitacién por la que una solucién pudiera ser infactible e introducir la restriccién adecuada para que ello no suceda: En la primera linea de produccién nécesita que se produzcan al menos 3000 unidades més al da (Cuando cecribas una restriecién ) Para garantizar esto introducimos la restricci6n: | puedes comprobar que es cohe- rente comparande las wnidades de ambos miembros. Por ejemplo, no {tendrfa sentido escribic QB Mt 4m 2 5000, porque a Ia iaquierda estarfamos 'sumando horas y a la derecha te- ‘nemos unidades de producto. En jearabio, como 10 gon las unidades \de producto/hora de trabajo en la Linea 1, tenemos que 10My repre- lsenta unidades de producto y no horas 15M; +177, +20Nj > 3000 prod. linea 1 > prod. requerida. mientras que en la segunda Ifnea necesita al menos 5 000 unidades més. 10My+12T,+15N2 > 5000 prod. linea 2 > prod. requerida. idfiales en el turno La fébrica puede albergar hasta 100 horas a de mafiana ‘Bxigimos que no se rebase dicha capacidad: erect pects Mi +Mz<100 — horas turno de nfaiiana < capacidad Jeorrecto porque ‘el. miembro ize jquicrdo representa las horas em- pleadas (en el turno de maiiana) Jel miembro derecho las horas dis- ponibles en dicho turno, 200 en el turno de tarde y hasta 300 en el turmo de noche Ty +T2<200 ° horas turno de tarde < capacidad Ny +#Nz $300 horas turno de noche < capacidad Por razones de organizacién, al menos 190 horas de la primera linea de produccién deben realizarse antes de la noche. Esto significa que deben realizarse o bien en el turno de mafiana o bien en el de la tarde: M,+T,>190 horas en la Iinea 1 anteriores al turno de noche > cantidad exigida. eeeeegg . . . > . . . . . > ° > . . . . ° . > > > . . » > . . . . > . ® ® ® 2 ® = . . . . > . . . . » . . . . 7.2 Introduccién dé un problema en LINGO 155 Afiadiendo las condiciones de no negatividad, el modelo queda como sigu: Min. 40M, + 50Ms + 587; + 5073 + 100N; + 90N2 coste sa 15M; +17T; +20; > 3000 produccién linea 1 > produccién requerida, 10My-+T2P, + 15N2 > 5000 produccién linea 2> produccién requerida. My + Mz < 100 horas turno maiiana < capacidad T+ Ts $200 horas turno tarde < capacidad Ny + Ny < 300 horas turno noche < capacidad M, +T, > 190 horas anteriores a la noche en linea 1 > horas My, M2,T,T2,Ni, No 20 exigidas. En los apartados siguientes veremos o6mo introdueir este problema en LINGO y cémo in- ‘terpretar la solucién y toda la informacién adicional que éste proporciona. 7.2 Introduccién de un problema en LINGO. Para empezar a usar LINGO hemos de abrir la aplicacién y crear un documento en blanco sobre el que escribir (aunque ya se crea’ uno por defecto al abrir LINGO, si lo hemos cerrado ‘© queremos otro nuevo, basta acudir al ment File + New). LINGO maneja distintos tipos de documentos. Asegrirate de abrir uno de tipo Lingo Model, con extensién lg4. Puedes comprobar el tipo de documento en Ia barra superior de la ventana. Como en cualquier otra aplicacién, podemos guardar en cualquier momento nuestro trabajo mediante el ment File -> Save o bien File -+ Save as... La tinica configuracién que requiere el programa (al menos, para el uso que nosotros le daremos) se introduce mediante el mentt LINGO —+ Options... Aparece entonces un panel de ‘opciones con varias pestafias. 156 7 Introduccién a LINGO Sélo hemos de comprobar cuatro cosas: La opeién a) hace que LINGO eal- cule los precios duales y los inter vvalos de sensiblidad (véase més adelante). Cuando el problema no es de programacién Lineal esta ‘opeién puede dar lugar a un men- sajo de error, y en tal caso hay que Jdesactivarla.—* ‘La opcién b) hace que'no sea ne- cesarlo escribir en eada problema Jas condiciones de no negatividad, ‘sino que LINGO eupone a priori [que todas las variables son no ne- gativas: ‘La opeién e) hace que LINGO se asegure de que las soluciones que encuentra sean 6ptimos globales y ;no meramente locales. Para pro- blemas muy grandes podria hacer Jque tarde un tiempo excesivo oin- [cluso que no encuentre la solucién. {La opcién d) evita que LINGO in- texprete expresiones como ~2" en el sentido inusual de (~2)*, 8) Que, en Ia pestaiia titlada “General Solver”, en la ca- silla “Dual Computations.” esté seleccionada la opcién “Prices & Ranges” b) Que en esa misma pestaiia esté marcada la opcién “Var riables assumed non-negative”, ©) Que en la pestaiia titulads “Global Solver” esté marcada In opcién “Use Global Solver”. 4) Que en la pestafia titulada “Model Generator” esté mar- cada Ia opcién “Unary Minus Priority*: Low. Si pulsamos el botén “Save” de la parte inferior del cuadro, el ordenador recordaré estas opciones Ins préximas veces que usemos LINGO, y no serd necesario volver especificarlas, pero si usamos el programa en otro ordenador (por ejemplo, un ordenador del aula de informAtica que no sabemos cémo ha sido configurado), deberemos abrir este cuadro de opciones para comprobar que la configuracién es correcta. Ahora ya podemos escribir el problema, para lo cual tecleamnos Jo siguiente: (Coste) Min= 40*M1+50sM2+55"T1+50+T2+100«N1+904N2; (Produccion Li] 154Mi+17+T1+20#N1>3000; [Produccion_L2] 104M2+12¥12+15#N2>5000; [oras_M] M1+%2<100; Dioras_T] T1+T2<200; (Horas_N] m1#N2<300; {Distribucion_Li] Mi+T1>190; En general, a la hora de introducir un problema en LINGO hemos de tenet en cuenta lo siguiente: ) Cada ecuacién termina siempre con un punto y coma. Si una ecuacién fuera muy larga y no cupiera en uma inea, podemds cambiar de linea cuando queramos. LINGO entenderé que la ecuecién termina cuando encuentre el punto y coma. b) La funcién objetivo empieza con Max = si el objetivo es.:maximizar y con Min = si el ‘objetivo es minimizar. ©) En lugar de escribir < 0 > hemos de escribir < o >. Las restricciones de igualdad se introducen con 4) Es necesario escribir los productos con el signo *, de modo que obtendrfamas un error si escribiéramos 40M1 en lugar de 40M, ¢) La coma decimal se representa con un punto. SCSCSCSCSCSCSCSCTCSCSCSCGCSCSCGCSCSCSCSCSCSSCSSSSTseseeeseseeveseseuseveseuseuuuTUuuUUVOTTE 7.2 Introduccién de un problema en LINGO 157 £) Las potencias se introducen con el circunflejo ~. Por [Gtras funciones disponibles won ejemplo, 24 se escribirfa x74. @sqRt(x) para V2, 1066) para In, 8) No es necesario introducir Ins condiciones de no negati- | @EXPG=) para, vided, Mr, Ma,Ts,T2, Ni, Nz 2 0, sino que LINGO las _ |$5!¥(=} Para sens, da por supuestas. Si quisiéramos especificar que una va |Pae e ee acme riable, por ejemplo My, es libre, afiadiriamos una nueva |en el meni Edit» Paste Pu. Unea @Free (M1) 5 een h) Los nombres de las variables pueden constar de una o més letras (pero no espacios en blanco, acentos, ni efies, etc.). No podemos escribir literalmente My con subindice, pero sf M1, como hemos hecho. En cualquier caso, el primer signo de una variable tiene que ser ‘una letra y-no tn miimiero. Por ejemplo, 1M no serfa un nombre vélido para una variable. i) Las palabras entre corchetes antes de las restricciones no son necesarias, pero ayudan a leer después la solucién. Han de cumplir las mismas condiciones que los nombres de las variables. En particular no pueden tener espacios en blanco. Si queremos poner varias palabras podemos usar guiones bajos, como en Produccion_Li ‘Una ver introducido el modelo, lo resolvemos con el menti LINGO -+ Solve, o bien con el jcono en forma de diana (jp) que hay en la parte superior de la ventana. Si no se produce ningiin error, obtendremos una ventana con este aspecto: La tinica informacién que nos interesa es “State: Global Opt”, que nos indica que LINGO ha obtenido un éptimo global. Las posibilidades son: Global Opt: éptimo global. Local Opt: éptimo local. En tal caso deberemos estudiar si el éptimo es global mediante convexidad.

También podría gustarte