LINDO
Linear Interactive Discrete Optimizer
Introducción
Es un popular software destinado a
resolver problemas Optimización:
programación lineal, entera y entera
mixta.
De esta forma trataremos de
explicar en que consiste y en como
utilizarlo, dando para ello algunos
ejemplos de aplicación y su análisis
correspondiente.
Comando a Considerar
Funciones.
Maximizar : MAX
Minimizar : MIN
Restricciones:
SUBJECT TO
SUCH THAT
S.T.
ST
Al terminar restricciones.
END
Variables
Las variables pueden tener un nombre de
máximo 8 caracteres.
Tipos de Variables:
FREE: declara a la variable S.R.S
GIN: Números enteros no negativos.
INT: Variables Binarias ( 0 o 1)
SLB: Coloca una cota inferior simple sobre la
variable ( X >= 20)
SUB Coloca una cota superior simple sobre la
variable (X =< 20)
Restricciones
5 operadores: +, - , >, <, =. Las
igualdades estrictas, las relaja.
No aceptará orden por paréntesis, este
resolverá de izquierda a derecha.
Puede escribir una F.O. o una restricción
en múltiples líneas excepto en medio de
un nombre variable o un coeficiente.
Lindo no es sensible a MAYUS, esto es
tomara a x y a X como una sola variable.
Lindo no permite variables al lado
derecho, del mismo modo no permite
constantes al lado izquierdo.
Problema
MAX Z= 6x + 7 y
Sujeto a
2x+3y≤24
2x+y≤16
Y≤16
X,Y≥0
Ejemplo Básico
Una vez hecho esto se procede a resolver, donde si la hoja de calculo no
está minimizada la solución y los detalles de ésta aparecerán detrás del
problema. Para un mayor entendimiento de lo que va sucediendo se
recomienda
Mientras el programa resuelve el problema, éste pregunta si se quiere un análisis de
sensibilidad o no, si la respuesta es si, la solución será mas detallada. Además tras
esta pequeña ventana de pregunta, se puede divisar que nuestro problema tiene un
optimo dentro de una serie de otras especificaciones, las cuales se muestran en la
siguiente figura
Solución Básica
Solución más Sensibilidad
Ejemplo
Carolina dedica parte de su tiempo al reparto de
propaganda publicitaria para Falabella y Ripley.
Falabella le paga $50 por cada volante entregado y
Ripley, con volantes más grandes, le paga $70. Ella
lleva dos bolsas: una para los impresos de
Falabella, en la que caben 120 y otra para los
impresos de Ripley, en la que caben 100. Ha
calculado que cada día es capaz de repartir 150
volantes como máximo. Lo que se pregunta la
estudiante es: ¿Cuántos volantes habrá que repartir
de cada clase para que su beneficio diario sea
máximo?
Solución
X: Cantidad de volantes de Falabella a
repartir.
Y: Cantidad de volantes de Ripley a
repartir.
Solución
Objetivo es Maximizar la utilidad
Max Z= 50X+70Y
Sujeto a
X<=120
Y<=100
X + Y<=150
X>=0
Y>=0
Ejercicio Nº1
Se desea Producir 3 productos: mesas, sillas, cajones.
El precio de venta de cada producto es de 20, 12 y 18
pesos, y el costo de producción es de 12, 6 y 11 pesos
respectivamente. Se dispone actualmente de 500 m3
de madera y los requerimientos son de 0.6, 0.4, 0.35
para las mesas, sillas y cajones.
Se sabe que cada mesa ocupa 0.5 hrs. en el taller de
fabricado, 0.2 en el taller de pintado y 0.1 en
embalado. Cada silla ocupa 0.3, 0.65, 0.15 hrs.
respectivamente. Y cada cajón 0.4, 0.42, 0,27 hrs.
respectivamente.
Además la producción mínima de mesas es 100 y
máxima de 8000, no se pueden producir mas de 2500
sillas ni tampoco menos de 50 cajones ni más de 3000
de estos mismos.
La restricción de horas de fabricado es de 800, de
pintado es de 400 y de embalado es de 300.
Variables de Decisión
X1: cantidad de mesas a Producir
X2: cantidad de Sillas a Producir
X3: cantidad de Cajones a Producir
Modelo del problema
MAXIMIZAR Z = (20 - 12) X1 + (12 - 6) X2 + (18 -11) X3
s/a:
FABRICACION: 0.5X1 + 0,3X2 + 0,4X3 800
PINTADO: 0,2X1 + 0,35X2 + 0,42X3 400
EMBALADO: 0,1X1 + 0,15X2 + 0,27X3 300
MATERIAL 0,6X1 + 0,4X2 + 0,35X3 500
X1 100
X1 8000
X2 0
X2 2500
X3 50
X3 3000
Xi0 , i=1,2,3.
Modelo LINDO
Solución
Análisis de Sensibilidad
Problema Nº2
Para producir una determinada aleación metálica que requiere
cobre, estaño y cinc, se van a mezclar 3 tipos de aleación de
estos 3 metales, disponibles en el mercado: A, B y C.
Cada libra de la aleación final deseada debe contener a lo
menos un 20% de cobre, no más de un 45% de estaño y la
proporción de cinc debe ser un 30%. Las características de
las aleaciones A, B y C son:
Plantear como un PPL la situación-problema de determinar los
porcentajes
de A, B y de C que debe contener 1 libra de aleación
deseada.
Definición de Variables
x1 = proporción de A en 1 libra de
aleación
x2 = proporción de B en 1 libra de
aleación
x3 = proporción de C en 1 libra de
aleación
Modelo
Modelo en Lindo
Resultado.
Infactible:
Problema Nº3
Una empresa tiene 3 fábricas y 2 tiendas
mayoristas. Los datos de producción semanal del
bien A en cada fábrica, los requerimientos
semanales del bien A en cada tienda y el costo
unitario de transporte desde cada fábrica hasta
cada tienda son:
Plantear como un PPL, para minimizar el costo
total semanal de transporte.
Definición de Variables
xi j = Nº unidades a transportar
desde fábrica “i” hasta tienda “j”
Para:
i = 1, 2, 3 j = 1, 2
Modelo
Modelo LINDO
Resultados
Sensibilidad
Ejercicio Nº4
Una empresa manufacturera de papeles debe
surtir un pedido consistente en 800 rollos de
papel de 30 cms. de ancho, 500 rollos de papel
de 45 cms. de ancho y 1.000 rollos de papel de
56 cms. de ancho. En este momento, la empresa
cuenta solamente con rollos de 108 cms. De
ancho y debe decidir cómo cortarlos para surtir el
pedido con un mínimo desperdicio de papel.
Definición de Variable
Sea xj = Nº de rollos de 108 cms.
que se cortan en la modalidad “j”.
Para j= 1,2,3,4,5.
Modelo.
Modelo LINDO
Resultados
Sensibilidad
Programación lineal
Entera binaria 0-1
Las variables binarias o 0-1 juegan un
importante papel en la aplicación de la PLE.
Estas variables hacen posible incorporar
“decisiones de si o no”, llamadas a veces
“decisiones dicotómicas”, el formato de una
programación matemática.
Dos ejemplos ilustran lo que decimos:
1.- En un problema de ubicación de una planta
pondremos Xj = 1 si decidimos ubicar la planta en
la localidad j y Xj = 0 si decidimos no hacerlo.
2.- En un problema de asignación de rutas
escribimos Xijk = 1 si el camión k va de la ciudad
i a la ciudad j o Xijk = 0 si no lo hace.
Solución mediante LINDO para
problemas de Programación Entera
- Para declarar variables enteras:
Escribir después de “END”
GIN Xi, con i=1,2,… etc.
- Para declarar variables binarias:
Escribir después de “END”
INT Xi, con i=0 ó 1
Ejemplo:
Solución sin declarar las variables como enteras:
Solución declarando las variables como
enteras: