1) Se resuelve un problema de programación lineal (PPL) para maximizar las utilidades de la producción de 3 productos sujetos a restricciones de recursos. La solución óptima es producir 20, 30 y 50 unidades de cada producto respectivamente para una utilidad total de $4,170. 2) Se explican conceptos como costos reducidos, holguras, excesos y precios duales. 3) Se analizan los rangos de sensibilidad donde la solución óptima no cambia ante variaciones en los parámetros del modelo.
1. 1
Resolución de un
PPL
con LINDO
Docente : Lic. Gabriel Solari Carbajal
Universidad Nacional Mayor de San Marcos
Facultad de Ingeniería de Sistemas e Informática
Investigación Operativa I
2
2. 2
3
LINDO/PC.-
LINDO System, Inc. se especializa en software de
optimización lineal, no lineal y entera, ofreciendo una
línea completa de productos, con un total soporte de
éstos. Los que vienen de acuerdo al tamaño de la
matriz de sus modelos (número de variables y
restricciones), además están disponibles en todas las
plataformas conocidas.
LINDO – Linear INterative and Discrete Optimizer.-
La velocidad y la facilidad de uso han hecho de LINDO
el estándar de la industria para resolver problemas de
optimización lineal, entera y cuadrática.
LINDO
4
3. 3
5
Ejemplo.-
Un comerciante se dedica a la fabricación de 3
productos y utiliza 3 tipos de recursos:
Matria prima
(kg/unidad)
Espacio
(pies3
/unidad)
Costo producción
($/unidad)
Utilidad
($/unidad)
Recursos 1 2 3 Disponibilidad
4 3 2 270 kg.
2 2 1 150 pies3
$3,700304050
58 47 32
Formular el PPL y resolver utilizando LINDO.
LINDO
6
Formulando el modelo:
Sea xi = número de unidades a producir del producto i.
El modelo es:
Max Z = 58 x1 + 47 x2 + 32 x3
sujeto a
4 x1 + 3 x2 + 2 x3 <= 270
2 x1 + 2 x2 + x3 <= 150
50 x1 + 40 x2 + 30 x3 <= 3700
x1 >=0, x2 >=0, x3 >=0
LINDO
4. 4
7
Ingresando la formulación del PPL al software, se debe
digitar conforme al modelo presentado:
MAX 58 X1 + 47 X2 + 32 X3
SUBJECT TO
2) 4 X1 + 3 X2 + 2 X3 <= 270
3) 2 X1 + 2 X2 + X3 <= 150
2) 50 X1 + 40 X2 + 30 X3 <= 3700
END
LINDO
8
Para resolver el problema utilizar el comando SOLVE
(Ctrl+S)
Y responder a la siguiente pregunta:
DO RANGE (SENSITIVY) ANALYSIS?
SI/NO
con (SI), el resultado presentado por LINDO es el
siguiente:
LINDO
5. 5
9
OPTIMO DEL PL ENCONTRADO EN EL PASO 3
VALOR DE LA FUNCION OBJETIVO
1) 4170.000
VARIABLE VALOR COSTO REDUCIDO
X1 20.000000 0.000000
X2 30.000000 0.000000
X3 50.000000 0.000000
FILA HOLGURA O EXCESO PRECIO DUAL
2) 0.000000 5.000000
3) 0.000000 4.000000
4) 0.000000 0.600000
NO. DE ITERACIONES= 3
LINDO
10
RANGOS EN LOS CUALES LA BASE OPTIMA NO CAMBIA:
RANGOS PARA LOS COEFIC. DE LA FUNCION OBJETIVO
VARIABLE COEFICIENTE INCREMENTO DECREMENTO
ACTUAL PERMITIDO PERMITIDO
X1 58.000000 4.000000 2.500000
X2 47.000000 5.000000 2.000000
X3 32.000000 2.500000 3.000000
RANGOS PARA LOS TERMINOS DEL LADO DERECHO
FILA RHS INCREMENTO DECREMENTO
ACTUAL PERMITIDO PERMITIDO
2 270.000000 25.000000 10.000000
3 150.000000 20.000000 15.000000
4 3700.000000 200.000000 250.000000
LINDO
6. 6
11
1) Se ha alcanzado la solución óptima en 3 iteraciones.
El valor óptimo es Z = 4170.000.
El valor óptimo se obtiene con:
X1 = 20.000000, X2 = 30.000000 y X3 = 50.000000
OPTIMO DEL PL ENCONTRADO EN EL PASO 3
VALOR DE LA FUNCION OBJETIVO
1) 4170.000
VARIABLE VALOR COSTO REDUCIDO
X1 20.000000 0.000000
X2 30.000000 0.000000
X3 50.000000 0.000000
Vemos que: Z = 58(20) + 47(30) + 32(50) = 4170
LINDO
12
2) El producto VALOR x COSTO REDUCIDO debe ser
igual a cero. Si el costo reducido de la variable X1
fuese diferente de cero, por ejemplo 8.000000 se
tendría entonces:
VARIABLE VALOR COSTO REDUCIDO
X1 0.000000 8.000000
X1 = 0 indica que el producto 1 no es parte de la
solución óptima.
Si el problema es de maximización, el costo
reducido de X1 igual a 8 indica la cantidad en que
debe aumentar su utilidad para que sea rentable su
producción. Es decir la utilidad de X1 debe ser como
mínimo 58 + 8 = 66.
LINDO
7. 7
13
Si el problema es de minimización, el costo
reducido de X1 igual a 8 indica la cantidad en que
debe disminuir su utilidad para que sea rentable su
producción. Es decir la utilidad de X1 debe ser como
mínimo 58 - 8 = 50.
LINDO
14
3) Si la restricción es ≥ el valor de la columna
HOLGURA O EXCESO es una variable de exceso.
Si la restricción es ≤ el valor de la columna es una
variable de holgura.
Variable de holgura.-
Como se muestra en el ejemplo las 3 restricciones
son ≤, las variables son de holgura.
Consideremos la fila 2, su variable de holgura es 0,
la restricción correspondiente:
4 X1 + 3 X2 + 2 X3 <= 270 (Materia prima)
LINDO
8. 8
15
Indica que estamos utilizando toda la materia prima
disponible:
4 (20) + 3 (30) + 2 (50) = 270
Supongamos que en la fila 4) la variable de holgura
hubiese sido 250:
50 X1 + 40 X2 + 30 X3 <= 3700
indica que no se utilizan los $ 3 700.
Sino: 3 700 – 250 = $ 3 450, es decir hay un
sobrante de $ 250.
LINDO
16
Variable de exceso.-
Supongamos que se tiene la restricción:
X1 + X2 + X3 >= 100
entre los tres productos debemos producir como
mínimo 100 kg.
Supongamos que en la solución óptima la variable
de exceso es igual a 30. Significa que estamos
produciendo en total 130 kg., es decir 30 kg. más
(exceso) respecto al mínimo requerido de 100 kg.
LINDO
9. 9
17
4) Precio DUAL
Tomemos la fila 2) que corresponde a la restricción:
4 X1 + 3 X2 + 2 X3 <= 270 (Materia prima, kg.)
su precio dual es 5
El valor óptimo es $ 4170, utilidad máxima
Por ejemplo si modificamos el término derecho de la
restricción a:
4 X1 + 3 X2 + 2 X3 <= 273
y resolvemos el problema, entonces el nuevo valor
óptimo será:
4170 + 3 x 5 = 4185
LINDO
18
Interpretación:
Como estamos utilizando toda la materia prima
disponible, entonces por cada kg. que
incrementamos dicha materia prima, la utilidad se
incrementará en $ 5.000000.
Ejemplo
4 X1 + 3 X2 + 2X3 <= 271
El valor óptimo será: $ 4175.
Si p es el precio al que debemos adquirir 1 kg. de
materia prima, el valor óptimo será realmente:
4175 – p
LINDO
10. 10
19
conviene el incremento si el nuevo valor óptimo es
mejor que el anterior (cuando sólo utilizamos lo
disponible)
4175 – p > 4170
P < 5
conviene incrementar materia prima si el precio por
kg. de ésta es menor de $ 5.
El precio dual indica lo máximo que se debe pagar
por el recuso a fin de que su incremento sea
rentable.
LINDO
20
Tomemos la fila 4) que corresponde a la restricción:
50 X1 + 40 X2 + 30 X3 <= 3700 (Capital)
si la modificamos a:
50 X1 + 40 X2 + 30 X3 <= 3800
el nuevo valor óptimo es:
4170 + 100 x 0.6 = 4230
0.6 es el máximo interés que debemos pagar en
caso de que nos hagan un préstamo de dinero para
incrementar nuestro capital.
LINDO
11. 11
21
Disminución del recurso.-
Por ejemplo en la fila 2):
4 X1 + 3 X2 + 2 X3 <= 270
si la modificamos a:
4 X1 + 3 X2 + 2 X3 <= 269
la nueva utilidad será:
4170 – 1 x 5 = 4165
Supongamos que ese kg. de materia prima que
hemos disminuido ha sido para venderlo al precio p,
este precio p debe ser:
LINDO
22
4165 + p > 4170
p > 5
En caso de disminuir un recurso para luego
venderlo, el mínimo precio (lo más barato) a que se
debe vender es $ 5/kg. (precio dual).
LINDO
12. 12
23
5) Rangos de sensibilidad.-
Rango para X1: [58 – 2.5, 58 + 4] = [55.5, 62]
Rango para X2: [47 – 2, 47 + 5] = [45, 52]
Rango para X3: [32 – 3, 32 + 2.5] = [29, 34.5]
Por ejemplo para X1 el rango de su coeficiente en la
función objetivo es [55.5, 62], mientras el coeficiente
de X1 varíe en este intervalo, entonces la solución
óptima no cambiará, seguirá siendo:
X1 = 20
X2 = 30
X3 = 50
LINDO
24
Rango Fila 2): [270 – 10, 270 + 25] = [260, 295]
Rango Fila 3): [150 – 15, 150 + 20] = [135, 170]
Rango Fila 4): [3700 – 250, 3700 + 200] =
= [3450, 3900]
En la fila 2) [260, 295], significa que mientras el
término derecho de la fila 2) se encuentre en este
intervalo, el precio dual no cambiará.
En el caso de que un incremento o decremento sea
infinito aparecerá: INFINITY en el lugar
correspondiente y el rango será: [-∞, n] o [n, +∞].
LINDO