Manual Lingo
Manual Lingo
Manual Lingo
LINGO - Parte 1
Introducción a LINGO
Una de las características más potentes de LINGO, es el lenguaje de modelación matemática. Este
lenguaje permite expresar el problema de una manera natural, similar a la notación matemática
standard. Además de poder ingresar cada término de cada restricción explícitamente, LINGO
permite expresar una serie de restricciones similares en una sola sentencia compacta.
Ejemplo 1
Una fábrica que tiene dos plantas localizadas en las ciudades A y B, necesita suministrar un
determinado producto a tres almacenes situados en las ciudades C, D y E. Las plantas A y B pueden
suministrar semanalmente 80 y 90 unidades del producto, respectivamente. Los almacenes
necesitan semanalmente 40, 50 y 80 unidades del producto para satisfacer su demanda. Los costes
de transporte por unidad de producto se recogen en la tabla siguiente:
Ciuda C D E
d
A 5 3 4
B 6 7 2
El problema consiste en determinar cuántas unidades del producto se deberán transportar desde
cada planta a cada almacén, de forma que se minimice el coste total de transporte.
Denotando por AC, AD, AE las unidades enviadas de la planta A hacia los almacenes C, D y E,
respectivamente, y por BC, BD, BE las unidades enviadas de la planta B hacia los almacenes C, D y
E, respectivamente, la formulación del problema de programación lineal asociado es la siguiente:
Minimizar 5AC+3AD+4AE+6BC+7BD+2BE
Sujeto a:
AC+AD+AE<= 80
BC+BD+BE<=90
AC+BC>=40
AD+BD>=50
AE+BE>=80
AC, AD, AE, BC, BD, BE>=0
Las dos primeras restricciones imponen que la cantidad suministrada en las plantas A
y B no supere su disponibilidad semanal, mientras que las tres siguientes imponen que
se cubra el requerimiento mínimo en los almacenes C, D y E.
1
Modelo en LINGO
La escritura del modelo en LINGO se basa en las siguientes reglas:
a) La función objetivo va precedida de “max=” o “min=” y finaliza en “;” al igual que cada
una de las restricciones.
b) Las desigualdades pueden escribirse de forma estricta, aunque LINGO las interpreta siempre
como <= o >=, según el caso.
c) No es necesario introducir las restricciones de no negatividad, si las hubiera, ya que LINGO
las considera por defecto.
d) Es necesario indicar el producto con “*”.
e) LINGO no distingue entre mayúsculas y minúsculas, por lo que es lo mismo ESTADISTICA
que estadística y que EsTADístiCA.
f) Los nombres de las variables deben comenzar con un carácter alfabético (A-Z), los
siguientes caracteres pueden ser alfabéticos, numéricos o subrayado (_). Los nombres
pueden ser de hasta 32 caracteres de longitud.
Ejercicio 1
Abra el editor del LINGO y escriba el modelo matemático del problema del ejemplo 1, teniendo en
cuenta las reglas del LINGO.
MIN = 5*AC+3*AD+4*AE+6*BC+7*BD+2*BE;
AC+AD+AE<80;
BC+BD+BE<90;
AC+BC>40;
AD+BD>50;
AE+BE>80;
Nota:
a) Cada línea en LINGO finaliza con un punto y coma. Los punto y coma son requeridos. El
modelo no se resolverá si falta algún punto y coma.
Se pueden introducir comentarios, que serán ignorados por LINGO, comenzando con un signo de
exclamación ! y terminando con un punto y coma.
Los comentarios también pueden ocupar varias líneas.
Por ejemplo:
AC+AD+AE<80; ! Esto es
Un comentario;
2
Además se puede asignar un nombre a cada restricción, como en el LINDO.
Por ejemplo, escribiendo
[R1] AC+AD+AE<= 80
[R2] BC+BD+BE<=90
El siguiente paso es pedirle a LINGO que resuelva el problema. Para ello es suficiente con hacer
clic sobre el botón Solve (el que tiene forma de diana, como en el LINDO), o bien seleccionar esta
opción en la barra de menús:
LINGO intentará primero compilar el modelo formulado (para determinar si está bien planteado o no) y, en el caso
de que la formulación sea incorrecta (ya sea desde un punto de vista matemático o de sintaxis), nos devolverá una
ventana con la siguiente mensaje:
LINGO error message
.
Si no hay errores en la formulación del problema durante la etapa de compilación, LINGO invocará
al módulo de resolución adecuado para buscar la solución óptima.
El recuadro "Variables" muestra el numero total de variables del modelo, las variables que son
no lineales y las enteras. Una variable es considerada no lineal si es parte de una restricción no
3
lineal en el modelo. Mientras mas variables no lineales y enteras contenga el modelo, mas difícil
será resolverlo de forma óptima en un tiempo razonable. Los modelos lineales puros sin variables
enteras tienden a resolverse mas rápidamente.
La cuenta de variables no incluye las que LINGO determina como de valor fijo, por ejemplo: dadas
las restricciones
X = 1;
X + Y = 3;
LINGO determina por la primera restricción que X está fija en 1, y, usando esta información,
deduce que Y está fija en 2. X e Y serán entonces excluidas del modelo.
El recuadro "Generator Memory Used" muestra la cantidad de memoria que está utilizando
LINGO para resolver el modelo.
El recuadro "Elapsed Runtime" muestra el tiempo total utilizado para generar y resolver el
modelo.
Campo Descripción
State Estado de la solución actual, puede ser
"Global optimum", "Local optimum",
"Feesible", "Unbounded", "Interrupted",
"Undetermined"
Iterations Numero de iteraciones
Infeasibility Cantidad de veces que es violada una
restricción
Objetive Valor actual de la función objetivo
Best IP Valor de la función objetivo de la mejor
solución entera encontrada (solo en
modelos de programación entera)
IP Bound Límite teórico de la función objetivo para
modelos de programación entera.
4
Cuando LINGO termine de resolver el modelo, creará una nueva ventana con el título Solution
Report (Informe de la solución), conteniendo los detalles de la solución:
Costo Reducido:
En el informe de la solución se encuentra un valor de costo reducido para cada variable. Como
hemos visto en LINDO, hay dos interpretaciones válidas y equivalentes para el costo reducido.
a) Primero se puede interpretar como el monto por el cual el coeficiente objetivo de la variable
se debería incrementar antes de hacerse provechoso darle a la variable en cuestión un valor
positivo en la solución óptima. Por ejemplo, si la variable tuviera un costo reducido de 10,
el coeficiente objetivo de esta variable deberá incrementarse en 10 unidades en un problema
de maximización o disminuirse en 10 unidades en un problema de minimización para
convertirse en una alternativa atractiva. Una variable en la solución óptima
automáticamente tiene un costo reducido de 0.
b) Segundo, el costo reducido de una variable se puede interpretar como el monto de
penalización que habrá que pagar por introducir una unidad de esa variable en la solución.
Como antes, si la variable tuviera un costo reducido de 10, habrá que pagar una penalización
de 10 unidades para introducir la variable en la solución. En otras palabras, el valor objetivo
caerá en 10 unidades en un modelo de maximización, o se incrementará 10 unidades en un
problema de minimización.
Los costos reducidos son válidos sólo dentro de un rango de valores.
5
Holgura o excedente
La columna Slack or Surplus en el informe de la solución de LINGO (como en LINDO) muestra
que tan cerca se está de satisfacer una restricción como una igualdad. Esta cantidad, en
restricciones de menor o igual, se denomina generalmente holgura. En restricciones de mayor o
igual se la llama excedente.
Si una restricción es exactamente satisfecha como una igualdad, la holgura o excedente valdrá cero.
Si una restricción es violada, este valor será negativo. Esto ayuda a encontrar las restricciones
violadas cuando en el modelo no existe un conjunto de valores para las variables que satisfacen
simultáneamente todas las restricciones.
Precio Dual.
El informe de la solución de LINGO también da un valor de precio dual para cada restricción. El
precio dual se puede interpretar como el monto en que la función objetivo mejorará si el segundo
miembro de la restricción se incrementase una unidad.
Al igual que los costos reducidos, los precios duales son válidos sólo dentro de un rango de valores.
Como puede observarse en la ventana de estado del LINGO, para minimizar los costes de transporte
han de enviarse 30 unidades de la planta A al almacén C y el resto, es decir 50, al almacén D.
En la planta B se ha de asignar 10 unidades al almacén C y el resto (80) al E.
6
Análisis de sensibilidad
Para hacer un análisis de sensibilidad de nuestro ejemplo hay que seleccionar el comando Range del
menú del LINGO
Se puede observar
a) el rango de variación permitido de cada coeficiente (tolerancia) en la función objetivo
(‘objective coefficient ranges’) para que, permaneciendo inalterados el resto de ellos, la
solución del problema primal no cambie.
b) el rango de variación permitido (tolerancia) en el término independiente de cada
restricciones (‘righthand side changes`) para que, permaneciendo inalterados el resto, la
solución siga siendo la misma.
Por ejemplo, el coste unitario de transporte entre las ciudades A y C puede variar en el intervalo
[2,6] sin que la solución del problema cambie.
(Para la variable AC=5.0 en el óptimo, ‘Allowable Coefficient Increase’=1.0 y ‘Allowable
Coefficient Decrease’ =3.0)
De forma similar, la producción en la planta A puede variar en el intervalo [80,90] y los precios
duales seguirían siendo los mismos.
(‘RHS’ valor en el lado derecho de la primera restricción= 80, ‘Allowable RHS Increase’=10.0
y ‘Allowable RHS Decrease’ =0.0)
7
Ejercicio 2
Una empresa de refrescos produce dos tipos de bebidas con sabor de naranja: de bajo contenido en
azúcar y de contenido normal, denominadas naranjada ligera y naranjada extra, respectivamente.
Para su fabricación se emplean tres procesos productivos (designados como P1, P2 y P3) siendo, en
cada uno de ellos, el número de horas empleado por unidad de bebida producida los que figuran en
la tabla, en la cual se recogen también los beneficios unitarios por unidad vendida de refresco.
Proceso Naranjada ligera Naranjada extra
P1 6 8
P2 4 3
P3 5 4
Beneficio unitario 6.5 8
Las características del proceso de producción dan lugar a que por cada unidad de naranjada ligera se
generen 3 unidades de residuo que deben eliminarse, con un coste unitario de 0.25 euros.
Análogamente, por cada unidad de naranjada extra se obtienen 1.5 unidades de cierto subproducto,
que puede venderse con un beneficio unitario de 1.5 euros. Sin embargo, la cantidad sobrante de
subproducto que no haya podido colocarse en el mercado debe eliminarse, con un coste unitario de
0.75 euro.
La demanda prevista de subproducto es, como mucho, de 15 unidades y que los tiempos de
producción disponibles son de 350 horas para P1, 300 horas para P2 y 320 horas para P3.
a) Formular un problema lineal que proporcione el plan de producción con máximo beneficio.
Supongamos que
NL : unidades de naranjada ligera que se van a fabricar
NE : unidades de naranjada extra que se van a fabricar
RE : unidades de residuo que se deben eliminar
SB : unidades de subproducto (de naranjada extra) que se van a producir
SE : unidades de subproducto que no haya podido colocarse en el mercado
8
b) Escribir el problema en LINGO
c) Resolver el problema usando LINGO. ¿ Cuál es el máximo beneficio? (361.25 euros)
d) ¿Cuáles son los valores óptimos de las variables NL, NE, RE, SB, SE? (45, 10 , 135, 15, 0)
e) ¿Cuáles son las restricciones activas en el óptimo? (restricciones: de las horas disponibles
para P1, de la demanda prevista de subproducto, y las dos igualdades)
f) ¿Cuánto se debería bajar el coste unitario de la cantidad sobrante de subproducto que no
haya podido colocarse en el mercado y que debe eliminarse? (precio dual de SE aprox. 0.53
euros)