INTRODUCCIÓN A LA PROGRAMACIÓN ENTERA

Documentos relacionados
Programación Entera. Nelson Devia C. IN Modelamiento y Optimización Departamento de Ingeniería Industrial Universidad de Chile

Análisis Post Optimal y Algoritmo de Ramificación y Acotamiento

Teniendo en cuenta los valores de las variables se tienen 3 tipos de modelos lineales enteros:

PROGRAMACIÓN LINEAL ENTERA

PROGRAMACIÓN LINEAL ENTERA

Programación entera 1

Programación Lineal. El método simplex

Algoritmo de ramificación y acotación

CAPÍTULO 4 PROGRAMACIÓN LINEAL ENTERA

RELACIÓN DE PROBLEMAS DE CLASE DE PROGRAMACIÓN LINEAL ENTERA

máx 5x 1 + 7x 2 s.a 2x 1 + x x 1 + 9x 2 41 x 1 0, x 2 0, enteras, z opt z opt 38

PLE: Ramificación y Acotamiento

Formulación del problema de la ruta más corta en programación lineal

Programación Lineal Entera. Programación Entera

Guía de Problemas para el Control 2

Resolución del problema. Problema: Los puntos extremos no tienen por qué ser enteros

RESOLUCIÓN DE MODELOS DE PROGRAMACIÓN ENTERA MÉTODOS DE CORTE CORTES DE GOMORY

Programación Lineal. María Muñoz Guillermo Matemáticas I U.P.C.T. M. Muñoz (U.P.C.T.) Programación Lineal Matemáticas I 1 / 13

Programación Entera TIPOS DE PROBLEMAS DE PROGRAMACIÓN EN ENTEROS. Comparación entre la programación lineal y la de enteros

RAMIFICAR-ACOTAR Y PLANOS DE CORTE

7. PROGRAMACION LINEAL

Ejemplo 1: Programación Entera

1. Defina el problema de particionamiento. Escriba un ejemplo de este tipo de problema, junto con su formulación general en AMPL.

Contenido. 1 Resolución mediante planos de corte. Resolución mediante planos de corte

Optimización y Programación Lineal

84 Tema 3. Dualidad. todas las restricciones son del tipo, todas las variables son no negativas.

PROGRAMACION ENTERA. M. en C. Héctor Martínez Rubin Celis 1

Dualidad 1. 1 Formas simétricas. 2 Relación primal-dual. 3 Dualidad: el caso general. 4 Teoremas de dualidad. 5 Condiciones de holgura complementaria.

INVESTIGACIÓN OPERATIVA

IN34A - Optimización

METODO SIMPLEX. Paso 1 Se convierte el modelo matemático de Programación Lineal (PL) a su forma estándar.

Tema 3 Optimización lineal. Algoritmo del simplex

Programación Lineal y Optimización Segundo Examen Parcial Respuesta: :Solución Profr. Eduardo Uresti, Agosto-Diciembre 2011

Un sistema de ecuaciones diferenciales son aquellas que tienen varias posibilidades para su solución. Estas son:

PRÁCTICA 5: Optimización de modelos lineales (continuos

Tema 3: El Método Simplex. Algoritmo de las Dos Fases.

PROBLEMA DE PROGRAMACIÓN LINEAL RESUELTO POR MÉTODO SIMPLEX

Problemas de programación entera: El método Ramifica y Acota. Investigación Operativa, Grado en Estadística y Empresa, 2011/12

CAPÍTULO 6 PROGRAMACIÓN DINÁMICA. Programación Dinámica

Introducción a la programación lineal

El método Ramifica y acota (Branch and Bound) (V)

Degeneración y ciclaje. Método de las dos fases CO-3411 (S08) 30/03/

Programación entera: Ejemplos, resolución gráfica, relajaciones lineales. Investigación Operativa, Grado en Estadística y Empresa, 2011/12

Repaso del algoritmo SIMPLEX

INGENIERÍA DE SISTEMAS INVESTIGACIÓN OPERATIVA

Para poder elaborar el problema dual a partir del primal, este se debe presentar en su forma canónica de la siguiente forma:

Universidad Nacional Autónoma de Nicaragua UNAN-Managua. Curso de Investigación de Operaciones

Universidad de Managua Curso de Programación Lineal

3.1 ESPACIO DE SOLUCIONES EN FORMA DE ECUACIÓN

Optimización de Procesos

Contenido: Solución algebraica a los problemas de programación lineal con el método simplex.

Capítulo 4 Método Algebraico

Es un procedimiento matemático que permite la planeación de actividades y la asignación de recursos productivos basados en criterios de optimización.

El problema del agente viajero

σ * (.a 1 a 2... a t ) β * β e

OPTIMIZACIÓN Y SIMULACIÓN PARA LA EMPRESA. Tema 3 Programación Entera

Programación Lineal y Optimización Segundo Examen Parcial Profr. Eduardo Uresti, enero-mayo 2013

El Problema de Transporte

PROGRAMACION ENTERA: METODO DE BIFURCACIÓN Y ACOTAMIENTO

Dirección de Operaciones

Dualidad. Dpto. Ingeniería Industrial, Universidad de Chile. 22 de abril de IN3701, Optimización

Fundamentos de Investigación de Operaciones Investigación de Operaciones 1

Un programa entero de dos variables Jueves, 4 de abril. La región factible. Por qué programación entera? Variables 0-1

Matemáticas.

ESCUELA DE CIENCIAS CIENCIAS BASICAS TECNOLOGIA E INGENIERIA PROGRAMACION LINEAL Act No. 8. LECTURA LECCION EVALUATIVA 2

EL MÉTODO SIMPLEX ALGEBRAICO. M. En C. Eduardo Bustos Farías

Programación Lineal Entera.

Tema 7: Problemas clásicos de Programación Lineal

Investigación Operativa I. Programación Lineal. Informática de Gestión

X m,j. X m,n C m,n C m,j. X m, C m,1. X i,n. C i,n MODELO DE TRANSPORTE. Matemáticamente:

Con miras a conocer la metodología que se aplica en el Método SIMPLEX, tenemos a continiacion un ejemplo:

Dualidad y postoptimización

TEMA 1: ECONOMÍAS DE INTERCAMBIO October 6, 2015

Aritmética de Enteros

Universidad Tec Milenio: Profesional HG04002 Análisis de Decisiones I

3. Métodos clásicos de optimización lineal

Ejercicios de Programación Lineal

Problemas de Transbordo

SOLVER PLANTEAR EL SIGUIENTE EJERCICIO CON SUS PASOS A SEGUIR Y DISEÑAR UN MODELO MATEMATICO CON SUS RESPECTIVAS FUNCIONES

MATE Método Simplex maximización estándar

Comenzaremos presentando la idea principal del método de Karmarkar, para después describir los detalles de cómputo del algoritmo.

x 1, x 2 0 Maximizar 3x 1 + x 2 s.a 2x 1 + x 2 4 2x 1 + 3x 2 4 x 1 + 3x 2 3

POST-OPTIMIZACIÓN Y SENSIBILIDAD EN PROBLEMAS LINEALES.

PROBLEMA 1. Considere el siguiente problema de programación lineal:

ALN - Curso 2007 Gradiente Conjugado

PROGRAMACION DE REDES. MODELOS DE TRANSPORTE

Formulando con modelos lineales enteros

UNIDAD 3 MÉTODO SIMPLEX. Fundamentos del método simplex

Forma estándar de un programa lineal

Instituto Tecnológico Autónomo de México Maestría en Finanzas Economía Financiera (Eco-44105), 2015 Mercados de activos financieros: un ejemplo

Breve sobre Kuhn-Tucker

Programación lineal: Algoritmo del simplex

3.1. Motivación gráfica del método Simplex

Transcripción:

INTRODUCCIÓN A LA PROGRAMACIÓN ENTERA Los problemas de programación lineal en que se requiere que algunas o todas las variables tomen valores enteros, son de programación entera. La programación entera a llegado a ser un área muy especializada de la ciencia de la administración. Un enfoque práctico: Una empresa que fabrica costales para alimento de ganado y una solución lineal requiere que se fabriquen 3000,472 costales, carecerá de sentido. En tales situaciones, a menudo se adopta la solución no entera al requerimiento de enteros simplemente redondeando los resultados al entero más próximo. Esto produce lo que se llama la solución redondeada. Mediante ese recurso se obtienen soluciones aceptables para el administrador en aquellas situaciones en las que, con sentido practico, sencillamente no importa el redondeo. Por ejemplo, no hay diferencia significativa, ya sea en la función objetivo o en las restricciones, entre producir 19.283,64 y 19.283 costales de alimento para ganado, En realidad, probablemente baste para el ajuste de los datos del modelo que satisfaga al administrador una producción cercana a los 19.000 costales. CUANDO TIENEN IMPORTANCIA LAS SOLUCIONES ENTERAS Existen muchos problemas importantes en los que la solución redondeada simplemente no funciona. Esta complicación puede deberse a la escala de las variables por considerar. Por ejemplo, si la solución de un modelo de programación lineal recomienda que la Boeing construya 11,6 aparatos 747 y 6,8 aparatos 727, el administrador probablemente no quedara contento con la simple medida de tomar la decisión de construir 11 de los primeros y 6 de los segundos, o cualquier otra solución redondeada. La magnitud del rendimiento y la asignación de recursos asociados con cada unidad del problema aconsejan determinar la mejor solución entera posible. Con otro ejemplo, sé vera que muchos modelos usan variables enteras para indicar decisiones lógicas. Por ejemplo, veremos que problemas en los que queramos que una variable x sea igual a 1 si vamos a construir un almacén o x sea igual a cero (si-no). Supóngase que la solución de una versión de programación lineal de este problema produce un valor no entero, por ejemplo, x = 0,38. Vemos que este valor no contiene información aprovechable como solución al problema real. Es claro que no podemos construir 0,38 de un almacén. Es cierto que podemos elegir almacenes de diversos tamaños, pero en todo caso, o bien tenemos un almacén o no lo tenemos. Se podría suponer que en un caso como este se trataría de redondear al entero más próximo (0 en este caso) como forma de salvar la dificultad. Por desgracia, esto no garantiza que se obtenga una buena (y no digamos óptima) solución.

En realidad, veremos que el redondeo no siempre conduce a solucione factibles en casos como este. El fondo del asunto es que existen muchos problemas administrativos importantes que serian de programación lineal si no fuese por el requerimiento de que sean enteros los valores de algunas variables de decisión, en los que no se puede encontrar una buena solución mediante el uso del método Simplex seguido del redondeo de los valores óptimos resultantes para variables de decisión. Estos problemas deben ser resueltos mediante algoritmos especialmente diseñados para resolver problemas de programación entera. PROGRAMACIÓN LINEAL CONTRA PROGRAMACIÓN ENTERA A pesar del impresionante avance en nuestra capacidad para resolver problemas de programación entera, la tecnología aun dista mucho de la que hay disponible para manejar problemas en los que no es necesario que las variables de decisión sean enteras. Muchos problemas que se resuelven fácilmente como problemas de programación lineal llegan a ser irresolubles para propósitos prácticos cuando se exige que las variables de decisión sean enteras (es decir, que el tiempo y el costo necesario para los cálculos resultan demasiado grandes) TIPOS DE MODELOS DE PROGRAMACIÓN ENTERA: Programación Entera es un termino general para los modelos de programación matemática que presentan condiciones de integridad (condiciones que estipulan que algunas o todas las variables de decisión deben tener valores enteros). Ya hemos apuntado que los modelos de programación lineal entera son modelos de programación lineal que tienen la característica adicional de que algunas de las variables de decisión deben tener valores enteros. Existen diversas clasificaciones de esta categoría de modelos. PROGRAMAS ENTEROS PUROS Un modelo entero puro (PLE) es, como su nombre lo indica, un problema en el que se exige que todas las variables de decisión tengan valores enteros. Por ejemplo Min 6x1 + 5x2 + 4x3 s.a. 108x1 + 92x2 + 58x3 >= 576 7x1 + 18x2 + 22x3 >= 83 x1, x2, x3 ><0 y enteros Es un modelo entero puro. Sin las restricciones adicionales de que x1, x2, x3 sean enteros (o sea las condiciones de integralidad) seria un problema de programación lineal

PROGRAMAS ENTEROS MIXTOS Un problema en el que solo se requieren que algunas variables tengan valores enteros mientras que otras pueden asumir cualquier numero no negativo (es decir, cualquier valor continuo) se llama programación lineal entera mixta (PLEM). Por ejemplo, supóngase que en el problema anterior solo x1 y x2 deben ser enteros y x3 no. El problema resultante es: Min 6x1 + 5x2 + 4x3 s.a. 108x1 + 92x2 + 58x3 >= 576 7x1-18x2 + 22x3 >= 83 x1, x2, x3 >=0; x1 y x2 enteros PROGRAMAS ENTEROS 0-1 En algunos problemas se restringe el valor de las variables a 0 o 1. Dichos problemas se llaman binarios o programas lineales enteros 0-1. Son de particular interés debido a que se pueden usar las variables 0-1 para representar decisiones dicotómicas (sí o no). Diversos problemas de asignación, ubicación de plantas, planes de producción y elaboración de cartera, son de programación lineal entera 0-1. Existen dos métodos para generar las restricciones especiales que fuercen la solución óptima del problema, hacia la solución óptima entera deseada: - Método de ramificar y acotar. - Método de planos de corte. En ambos métodos las restricciones agregadas eliminan partes del espacio de soluciones, pero nunca alguno de los puntos enteros factibles. Desafortunadamente, ninguno de los dos métodos es efectivo en la solución de problemas de programación lineal entera. No obstante los métodos de ramificar y acotar son mucho mejores en cuanto al calculo se refiere que los métodos de plano de corte. Por esta razón, la mayoría de los códigos comerciales se basan en el procedimiento de ramificar y acotar.

ALGORITMO DE RAMIFICAR Y ACOTAR En este momento será más conveniente explicar los fundamentos del algoritmo de ramificar y acotar (R y A), por medio de un ejemplo numérico: Consideremos el siguiente problema de Programación lineal Entera: Max z = 5x1 + 4x2 Sujeto a x1 + x2 <=5 10x1 + 6x2 <=45 x1, x2 >= 0 y entero En la siguiente figura se muestra el espacio de soluciones de la programación lineal entera representado por los puntos. El espacio de soluciones de programación lineal asociado, programación lineal óptima, se define por cancelación de las restricciones enteras. La solución programación lineal óptima se da como x1 = 3,75, x2 = 1,25 y z = 23,75. 8 5 Solucion optima x1 = 3,75, x2 = 1,25 z = 23,75 0 4 5 El procedimiento de Ramificar y Acotar se basa en tratar solo con el problema programación lineal. Como la solución óptima (x1 = 3,75, x2 = 1,25 y z = 23,75) pero no satisface la necesidad de valores enteros, el algoritmo de R y A exige modificar el espacio de soluciones lineales de forma tal que nos permita identificar, finalmente, para conseguir la solución óptima entera. Primero seleccionaremos una de las variables cuyo valor corriente en la solución óptima no cumple el requisito de valor entero. Seleccionando x1=3,75 arbitrariamente, observamos que la región ( 3 < x1 < 4 ) del espacio de soluciones lineales, no puede incluir ninguna espacio solución factible entera. Entonces

podemos modificar el espacio de soluciones lineales eliminando esta región no prometedora, lo que, en realidad, es equivalente a reemplazar el espacio original por dos espacios los PL1 y PL2, definidos de la manera siguiente: 1. Espacio PL1 = espacio PLO + (x1 <= 3) 2. Espacio PL2 = espacio PLO + (x1 >= 4) 8 x1<=3 x1>=4 5 LP1 LP2 0 3 4 5 Esta figura muestra los espacios PL1 y PL2 en forma grafica. Se ve que los dos espacios contienen los mismos puntos enteros factibles del modelo PLE. Esto significa que, desde el punto de vista del problema original de PLE, tratar con PL1 y PL2 es igual que tratar con el original PLO. La diferencia principal es que la selección de las nuevas restricciones e acotamiento ( x1 >= 3 y x1 <= 4 ) mejoraran la oportunidad de forzar a los puntos extremos óptimos de PL1 y PL2 hacia la satisfacción del requisito de valor entero. Además el hecho que las restricciones de acotamiento están en la vecindad inmediata del optimo continuo del PLO, incrementara las posibilidades de producir buenas soluciones enteras. Las nuevas restricciones x1 >= 3 y x1 <= 4 son mutuamente excluyentes, PL1 y PL2 deben tratarse como dos programas lineales separados. Esta dicotomía da lugar al concepto de ramificación en el algoritmo de R y A. En efecto, ramificar significa subdividir un espacio de soluciones corrientes en subespacios mutuamente excluyentes.

Aquí vemos las ramas PL1 y PL2 y x1 llamada variable de ramificación x1 = 3,75, x2 = 1,25, z = 23,75 x1 >= 4 x1 <=3 LP2 x1 = 3, x2 = 2, z = 23 Cota inferior (optima) Sabemos que la solución óptima entera debe encontrarse en PL1 o PL2. Sin embargo, en ausencia del espacio grafico de soluciones, no tenemos manera de determinar donde puede encontrarse la solución óptima, por lo que nuestra única opción es investigar ambos problemas. Hacemos esto trabajando con un problema a la vez (PL1 o PL2). Supongamos que escogemos a PL1 asociado con x1 <= 3. En efecto, debemos resolver el siguiente problema: Max z = 5x1 + 4x2 Sujeto a x1 + x2 <=5 10x1 + 6x2 <=45 x1 <=3 x1, x2 >= 0 Como se indico antes PL1 es el mismo que el PLO con la restricción adicional de acotamiento superior, x1 <= 3. así podemos aplicar el algoritmo primal de acotamiento superior para resolver el problema. Esto da la nueva solución óptima. X1 = 3, x2 = 2 y z = 23 Como esta solución satisface el requisito de valor entero, se dice que el PL1 esta agotado, vació, lo que significa que el PL1 no puede producir ninguna solución mejor y no necesita investigarse mas a fondo. Determinar una solución factible entera en una etapa temprana de los cálculos es crucial para incrementar la eficiencia del algoritmo R y A. Tal solución fija una cota inferior al valor objetivo optimo, que a su vez se puede usar para descartar automáticamente cualquier subproblema no explorado (como el PL2) que no dan mejor solución entera. En este ejemplo el PL1 produce la cota inferior z = 23. Esto

significa que cualquier solución entera mejorada debe tener el valor de z mayor 23. Sin embargo, como la solución óptima del problema PLO tiene z = 23,75 y como todos los coeficientes de la función objetivo son enteros, se infiere que ningún subproblema que proceda del PLO puede producir un valor de z mejor que 23. En consecuencia, podemos descartar al PL2 porque no puede dar una mejor solución entera. Del análisis anterior vemos que un subproblema esta agotado si no satisface una de las siguientes condiciones: 1. El subproblema da una solución factible entera 2. El subproblema no puede dar una mejor solución que la mejor cota inferior disponible (valor z) del problema (Un caso especial de esta condición es que el subproblema no tendrá ninguna solución factible en absoluto) Pero si en nuestro ejemplo decidimos investigar PL2 primero la solución resultante será: x1 = 4, x2 = 0,8333, z = 23,3333. Como x2 no es entero el PL2 debe investigarse mas a fondo creándose el PL3 y PL4 y usando las respectivas ramas x2 >=0 y x2 >=1. Esto significa que Espacio PL3 = espacio PLO + (x1 >= 4) + (x2 <=0) Espacio PL4 = espacio PLO + (x1 >= 4) + (x2 >=1) En este momento para escoger tres subproblemas, el PL1, PL3 y PL4. (Observe nuevamente que estos tres subproblemas incluyen todas las soluciones enteras factibles del problema original PLE.) Si seleccionamos arbitrariamente el PL4, descubrimos que no tiene solución factible y por ello esta agotado. A continuación seleccionamos el PL3 para investigarlo. Su solución la da x1 = 4,5, x2 = 0 y z = 22,5. Como x1 = 4,5 no es entero, creamos dos subproblemas, el PL5 y PL6 del PL4, usando las restricciones x1 <= 4 y x1 >= 5 respectivamente. Obtenemos entonces: Espacio PL5 = espacio PLO + (x1 >= 4) + (x2 <=0) + (x1 <= 4) Espacio PL6 = espacio PLO + (x1 >= 4) + (x2 <=0) + (x1 >= 5) Escogemos ahora el PL6, para investigarlo. Como el PL6 no tiene solución factible, esta agotado. A continuación escogemos el PL5 cuya solución óptima (x1 = 4, x2 = 0, z = 20) satisface el requisito de valor entero. Finalmente, hemos encontrado una solución entera que fija una cota inferior (z = 20) a la solución entra óptima. Desafortunadamente, esta cota inferior es muy débil y muy tardía para ser útil. El único nodo restante, PL1, queda agotado a continuación con z = 23, lo que fija una nueva cota inferior. Como no quedan ya subproblemas por investigar, la ultima cota inferior asocia la solución óptima del PLE con PL1.

La pero secuencia posible de solución, mostrada en al figura siguiente, se ha escogido intencionalmente para evidenciar una de las principales debilidades del algoritmo de R y A. Esto es, un subproblema especifico, cómo seleccionamos a la variable de ramificación? Y, de entre todos los subproblemas no explorados, Cuál debe investigarse a continuación? Observe que en la figura, encontramos una buena solución en el primer subproblema PL1, lo que nos permitió declarar agotado al PL2 sin ninguna investigación posterior. Básicamente, el problema PLE se resolvió investigando solo un subproblema. En el siguiente caso tuvimos que resolver seis subproblemas antes de alcanzar la optimidad. Este caso no es raro y puede encontrarse situaciones reales. Aunque existen muchos métodos para aumentar l habilidad del algoritmo de R y A de ver adelante y hacer una buena conjetura, respecto a sí una rama dada conducirá a una solución mejorada del PLE, no existe una teoría consistente que produzca resultados concretos uniformes para la solución del problema general de PLE. 1 LP0 x1 = 3,75, x2 = 1,25, z = 23,75 x1 >= 4 x1 <=3 2 LP2 x1 = 4, x2 = 0,8333, z = 23,3333 LP1 x1 = 3, x2 = 2, z = 23 7 Cota inferior (optima) x2 >= 1 x2 <= 0 1 3 LP4 Ninguna Solucion LP3 x1 = 4,5, x2 = 0, z = 22,5 4 x1 >= 5 x1 <= 4 5 LP6 Ninguna Solucion 6 LP5 x1 = 4, x2 = 0, z = 20

Resumiremos ahora los pasos del algoritmo de R y A. Suponiendo un problema de maximización, definiremos z como la cota inferior de la solución entera óptima del problema. Hacemos inicialmente z = - e i = 0. Paso 1: Agotamiento y ramificación. Seleccione PLi como el próximo subproblema por investigarse. Resolvemos el PLi y trataremos de agotarlo usando las condiciones apropiadas. (a) (b) Si el PLi se declara agotado (solución inferior, infactible o entera), ponga al día la cota inferior z si se encuentra una mejor solución del PLE; si no es así, seleccione un nuevo subproblema i y repita el paso 1. Si todos los subproblemas se han investigado, la solución óptima del PLE esta asociada con la ultima cota inferior z en caso de que exista, si no es así Si el PLi no esta agotado, siga con el paso 2 para efectuar la ramificación del PLi. Paso 2: Ramificación. Seleccione una de las variables xj cuyo valor optimo en la solución del PLi no satisfaga la restricción del valor entero. Elimine la región creando dos subproblemas PL que correspondan a las dos siguientes restricciones mutuamente excluyentes, vuelva al paso 1.