Programación Lineal - Antonin Ponsich 1. Introducción Herramientas computacionales para la Programación n Lineal 1. Introducción El método gráfico es válido para problemas de hasta dos variables de decisión presenta resultados reutilizables para implementar métodos de resolución computacionales (cf. Método Simplex) Para resolver problemas de dimensión mayor u igual a 3, se desarrollaron herramientas que pueden tratar problemas de tamaño industrial Hojas de cálculo (MS Excel) Paquetes de optimización (Lindo) Herramientas computacionales para la Programación Lineal 1 Herramientas computacionales para la Programación Lineal 2 Modelos de Decisiones: Ejemplo 1. Problema de Maximización Datos del Problema: Tiempo de Producción Operación Estandar (E) Lujo (L) Tiempo Disponible Corte y Teñido 0,7 1 630 Costura 0,5 0,83333 600 Acabados 1 0,66667 708 Empaque 0,1 0,25 135 Utilidad por unidad 10 9 Modelo: Variables de Decisión Estandar (E) Lujo (L) Unidades Producidas 0 0 Maximizar la Utilidad Total 0 Herramientas computacionales para la Programación Lineal 3 Herramientas computacionales para la Programación Lineal 4
4. Seleccionar una celda e introducir en ella la fórmula para calcular el lado izquierdo de cada una de las restricciones 4. Seleccionar una celda e introducir en ella la fórmula para calcular el lado izquierdo de cada una de las restricciones 5. Seleccionar una celda e introducir en ella la fórmula para calcular el lado derecho de cada una de las restricciones Herramientas computacionales para la Programación Lineal 5 Herramientas computacionales para la Programación Lineal 6 Procedimiento general para RESOLUCIÓN (1) 1. Seleccionar el menú de Herramientas y después el submenú Solver 2. Una vez en la ventana de Solver Parameters, coloque la referencia de la celda con la función objetivo en el cuadro Set Target Cell 3. Seleccione una opción: Max, Min or Value of 4. Coloque las celdas con los valores elegidos para las variables de decisión en el cuadro By changing cells Procedimiento general para RESOLUCIÓN (2) 5. Seleccione Add. Coloque la referencia de la celda correspondiente al lado izquierdo de la primera restricción. Después seleccione >=, <= o =. Finalmente, introduzca la referencia de la celda correspondiente al lado derecho de la primera restricción 6. Repetir el paso 5 para las demás restricciones Alternativamente y para hacerlo más rápido, seleccione el lado izq. de todas las restriciones; posteriormente >=, <= o =; y finalmente seleccione el lado derecho de todas las restriciones 7. Seleccionar el botón de Options e indicar lo siguiente: Assume linear model y Assume Non-Negative 8. Apretar el boton de Solver y después Keep solver solution Herramientas computacionales para la Programación Lineal 7 Herramientas computacionales para la Programación Lineal 8
Ejemplo 1 (Ventana Solvers Parameters) Ejemplo 1 (resultados) Modelos de Decisiones: Ejemplo 1. Problema de Maximización Datos del Problema: Tiempo de Producción Operación Estandar (E) Lujo (L) Tiempo Disponible Corte y Teñido 0.7 1 630 Costura 0.5 0.83333 600 Acabados 1 0.66667 708 Empaque 0.1 0.25 135 Utilidad por unidad 10 9 Modelo: Variables de Decisión Estandar (E) Lujo (L) Unidades Producidas 540 252 Maximizar la Utilidad Total 7668 Restricciones Horas Usadas Horas Disponibles Holgura Corte y Teñido 630 < = 630 0 Costura 480 < = 600 120 Acabados 708 < = 708 0 Empaque 117 < = 135 18 Herramientas computacionales para la Programación Lineal 9 Herramientas computacionales para la Programación Lineal 10 Lindo propone un paquete de optimización, para el tratamiento de problemas de tamaño industrial, usable desde varios tipos de productos Interfaz de formulación de problemas de optimización Software de modelado de problemas complejos Adds-in para hojas de cálculo Tipos de problemas tratados Lineal Cuadrático - no lineal Programación entera lineal Descarga del paquete Versión libre para estudiantes Hasta 300 variables continuas Hasta 30 variables enteras Hasta 150 restricciones www.lindo.com DOWNLOADS LINDO for Windows (Students) Se sugiere consultar la librería de Lindo en www.lindo.com Herramientas computacionales para la Programación Lineal 11 Herramientas computacionales para la Programación Lineal 12
Construcción de un modelo Sintaxis muy sencilla MAX o MIN MAX F(x 1,, x n ) ST g 1 (x 1,, x n ) b 1 <= o >= o = g p (x 1,, x n ) b p END Sólo variables del lado izquierdo Tips Sólo constantes del lado derecho Se recomienda no usar paréntesis Los comentarios se incluyen después de! Lindo no es case-sensitive o SUBJECT TO o SUCH THAT o S.T. Escrito en una o varias líneas Construcción de un modelo Variables Nombres limitados a 8 carácteres Por default, las variables se asumen continuas y nonegativas. Sinó, declaracines especiales: -FREE var variable libre -GIN var variable entera no-negativa -INT var variable binaria -SLB var val cuota inferior de var = val -SUB var val cuota superior de var = val Herramientas computacionales para la Programación Lineal 13 Herramientas computacionales para la Programación Lineal 14 Ejemplo 1 Formulación del modelo con Lindo Resolución de un problema Antes de que cualquier cosa: Save! Para sus primeros pasos con Lindo, es más conveniente compilar antes de resolver Menu Solve Compile Model Resolución: Menu Solve Solve DO RANGE (SENSITIVITY) ANALYSIS? cf. clase siguiente Herramientas computacionales para la Programación Lineal 15 Herramientas computacionales para la Programación Lineal 16
Solución del Ejemplo 1 Resultados Reports Window Función objetivo Variables de decisión Herramientas computacionales para la Programación Lineal 17 Herramientas computacionales para la Programación Lineal 18