Sie sind auf Seite 1von 16

17/04/2017

INVESTIGACION DE OPERACIONES I

Ing. Enrique M. Avendaño Delgado


enrique.avendano@upn.pe

Unidad 1
Introducción a la programación lineal

Ing. Enrique M. Avendaño Delgado


enrique.avendanod@upn.pe

1
17/04/2017

OBJETIVOS

• Resuelvan los modelos de programación lineal utilizando el programa LINDO.


• Interpreten los resultados del modelo PL obtenidos con el programa LINDO.

Programación Lineal (PL)

• Un problema de programación lineal con dos variables tiene por


finalidad optimizar (maximizar o minimizar) una función lineal (FO:
funcion objetivo).
• Sujeta a Restricciones (Limitantes) expresadas en forma de
inecuaciones.

PROBLEMAS RESUELTOS CON LINDO

• LINDO: abreviatura en inglés de Linear INteractive Discrete Optimization (Optimización


Lineal Discreta e Interactiva).
• Es un software muy básico que permite realizar optimización de problemas de programación
lineal y cuadrática, definidos sobre variables reales y/o binarias.
• Download: www.lindo.com

2
17/04/2017

PROBLEMA A RESOLVER

• Una empresa fabrica y vende dos productos. Se dispone de 10kg diarios de materia prima y
20 horas de máquina diaria. Cada producto requiere 1 y 2kg de materia prima
respectivamente. Y de 4 y 2 hrs de máquina por unidad. Los beneficios unitarios son de 4 y
1$ por unidad de cada producto.
• Debido a un contrato firmado con un cliente se deben producir como mínimo 2 unidades
diarias del producto2.

RECOLECCIÓN DE DATOS

Consumo de recursos por unidad de Cantidad de


Recurso actividad recursos
ACTIVIDADES… n disponibles

1 a11 a12 a13 … a1n b1


2 a21 a22 a23 … a2n b2
. . .
. . .
m am1 am2 am3 … amn bm

Contribución a Z C1 C2 C3 … Cn
por unidad de
actividad

3
17/04/2017

MODELO DE PL

MAX Z = c1X1 + c2X2+ ...........+ cnXn

• Sujeto a:
a11X1+ a12X2+ .............+ a1nXn≤b1
a21X1+ a22X2+ .............+ a2nXn≤b2
am1X1+am2X2+ .............+ amnXn≤bm
• Xi≥0 para i = 1,2,....,n

RECOLECCIÓN DE DATOS PARA 2 VARIABLES

Consumo de recursos por unidad de Cantidad de


Recurso actividad recursos
ACTIVIDADES… n=2 disponibles

1 a11 a12 b1
2 a21 a22 b2
. .
.
. .
m . bm
am1 am2
Contribución a Z C1 C2
por unidad de
actividad

4
17/04/2017

MODELO DE PL 2 VARIABLES

MAX Z = c1X1 + c2X2


• Sujeto a:
a11X1+ a12X2≤b1
a21X1+ a22X2≤b2
am1X1+am2X2≤bm
• Xi≥0 para i = 1,2

RECOLECCIÓN DE DATOS

Consumo de recursos por Cantidad de


Recurso PRODUCTO recursos
X1 X2 disponibles
Materia Prima (Kg) 1 2 10

Maquinaria (hrs) 4 2 20

Contrato 1 2

Maximizar Z (beneficio) 4 1

5
17/04/2017

MODELO DE PL 2 VARIABLES

MAX Z = 4X1 + 1X2


• Sujeto a:
1X1+ 2X2<=10 ……restricción MP
4X1+ 2X2<=20……restricción Maquin
X2>= 2 ……restricción Contrato
X1, X2 ≥0 (no negatividad)

• X1: unidades a producir de producto 1


• X2: unidades a producir de producto 2

MODELO PL EN LINDO

Menú FILE – NEW

Menú FILE – SAVE (*.ltx) => archivo de texto

6
17/04/2017

OBTENER RESULTADOS

• Menú SOLVE - Solve

VENTANA LINDO SOLVER STATUS

• Status: ofrece el estado de la solución actual


(óptima, factible, no factible, o no acotada).
• Iterations: número de iteraciones (tablas del
algoritmo) que se han realizado.
• Infeasibility: cantidad por la cual las
restricciones han sido excedidas o violadas.
• Objective: valor actual de la función objetivo.
(Valor de Z)
• Elapsed time: tiempo transcurrido desde el
inicio de la resolución.

7
17/04/2017

OTRAS OPCIONES

• Limpiar ventana de modelo / reportes


• Menu EDIT – Clear All

• Compilar modelo (cada vez que realiza un cambio en el modelo)


• Menu SOLVE – Compile Model

• Verificar ingreso de modelo (errores)


• Menu SOLVE – Debug

a) OBJETIVE FUNCTION VALUE (Z) : valor óptimo es 18$


(maximizar beneficio)
b) VARIABLES: X1, X2
• VALUE es el valor que tomara cada una de las variables. Es decir
4 unidades de X1 (producto1) y 2 unidades de X2 (producto 2)
• REDUCED COST: costo de oportunidad. Su Valor 0 indica que
ambos productos se estan produciendo.

8
17/04/2017

REDUCED COST

• La reducción de costos (REDUCED COST) es la cantidad que tendría que ‘mejorar’


(aumentar en un MAX, disminuir en un MIN)
el coeficiente objetivo asociado con la variable, para que resultase ‘rentable’ asignar un valor
no nulo a la variable.
• Entonces, una variable que aparece en la solución óptima (con un valor distinto de cero)
tendrá siempre un coste reducido igual a cero.

……

c) Restricciones
• SLACK OR SUPLUS: Holgura o Exceso
• Si se produce X1=4 y X2= 2
 Restricción de MATPRI) 1X1+ 2X2 <= 10
Reemplazando: 1(4)+ 2(2) <= 10
8 <= 10
Sobrando 2kg de materia prima (SLACK)

9
17/04/2017

SLACK - SURPLUS

• Holgura representa la cantidad que sobra de un recurso y Excedente representa el exceso de


producción. Es decir, esta columna nos dice cuan cerca estamos (en unidades) de ‘agotar’ la
restricción asociada (cumplirla en igualdad).
• Si es del tipo <= será un ‘SLACK’ (Holgura) y
• Si es del tipo >=, un ‘SURPLUS’ (Excedente).

• Una restricción es obligatoria (activa) si su holgura tiene el valor cero.

10
17/04/2017

DUAL PRICES

Los Precios duales, Valor Marginal, Precio Sombra (DUAL PRICES) nos dan la
cantidad en que ‘mejoraría’ la función objetivo (aumentado en un MAX, disminuyendo
en un MIN) si ‘relajásemos’ la restricción asociada en una unidad.

d) NO ITERATIONS: Nro de iteraciones en la que se encontró la solición óptima.

11
17/04/2017

CONSIDERACIONES

• La función objetivo no debería contener ninguna restricción. Por ejemplo, no se puede


ingresar MAX 3X1 + 8
• Para iniciar las restricciones en lugar de "sujeto a" o “S.A.” debe escribirse "SUBJET TO" o
"S.T." o "ST".
• Las variables deben aparecer en el lado izquierdo de las restricciones, y los valores
numéricos en el lado derecho.
• No olvide de dejar los espacios adecuados y de bajar a una nueva línea con la tecla Enter.

Consideraciones

• No ingrese las condiciones de no negatividad. Por defecto, LINDO ya considera la no


negatividad de las variables.

• LINDO acepta cinco operadores: + , - , <= , >= , =. No podrá usarse ningún otro operador ( * ,
/ , ^ , etc.)

• LINDO interpreta las desigualdades del tipo <= y >= como desigualdades estrictas (del tipo
< y >)

• Para finalizar la formulación del problema usar el comando END.

12
17/04/2017

Consideraciones

• Para separar los dígitos decimales de un numero use el punto, por ejemplo en
LINDO no se escribe 3,5 sino 3.5

• Para agregar comentarios anteponer el signo de admiración ! (documentar)

• El nombre de la variable debe comenzar con una letra y puede contener hasta 8
caracteres alfanuméricos.

EJERCICIOS

Hallar la solución a los modelos planteados en la clase 1 e interprete:

• Valor de función objetivo


• Valor (VALUE) de cada variable del modelo.
• Holgura o Exceso (Slack-Surplus)

13
17/04/2017

ANEXO

Valores de Status:
•Infeasible: el modelo es incompatible (no tiene solución válida). (NO
FEASIBLE SOLUTION…).
•Unbounded: el modelo es un poliedro abierto (el funcional no está
restringido). (UNBOUNDED SOLUTION …).
•Optimal: se llegó a una solución óptima. Se presenta la posibilidad de
realizar un análisis de sensibilidad del rango de variación de los
coeficientes de la función objetivo y los términos independientes de las
restricciones.

14
17/04/2017

Copiar modelo y resultado a Ms Word.


• Utilice la opción "Cut" y "Paste" en el menú "Edit" para colocar el
texto en su documento de Ms Word.

• Puede usted también acceder a los comandos "Cut", "Paste" y "New"


seleccionando los botones correspondientes en la barra de
herramientas.

Páginas de Lindo:
• http://www.lindo.com/lindo/licldof.html
• http://www.lindo.com/downloads/lnd61.exe

15
17/04/2017

16