1616
16
16
INSTITUTO TECNOLÓGICO DE VILLAHERMOSA
Unidad III. Programación entera.
Investigación de operaciones I
Ingeniería Industrial
Catedrático: IIQ. Jorge Alberto Rosado Ramos
Alumno: Bulmaro Madrazo Maldonado
Hora: 07-08
Villahermosa, Tabasco, México a 23 de abril del 2017
Contenido
Introducción. 3
3.1 Introducción y casos de aplicación de la programación entera. 4
Introducción a la programación entera 4
Aplicaciones 5
3.2 Definición y modelos de programación entera. 7
Definición 7
Modelos de Programación Entera 7
3.3 Método gráfico en la programación entera. 9
3.4 Método de ramificación y acotación 11
Diagrama de flujo del método de ramificación y acotación. 12
3.5 Método heurístico para problemas binarios 13
3.6 Uso del software. 14
WinQSB 14
TORA 14
DS for Windows 14
LINGO 14
LINDO 14
CONCLUSIONES. 15
Bibliografías. 16
Introducción.
Investigación de operaciones es una materia que nos sirve para resolver distinto problemas en los cuales se refiere en la búsqueda de una solución óptima y de igual forma tomar la mejor decisión a un problema, para el manejo de esta misma se utilizan distintos métodos de resolución de problema; esta materia surgió de la necesidad del hombre, ya que todas estas diversas técnicas iniciaron en base la segunda guerra mundial, para buscar la forma de minimizar los recursos.
Al inicio de curso hemos aprendimos los fundamentos de esta materia, como lo que es la construcción de un modelo, como resolver problemas de programación lineal por el método simplex, y de igual forma lo que fue el método gráfico, para los problemas que poseían solamente 2 variables, analizando sus vértices máximos para encontrar la mejor solución al problema y elegir una decisión optima ya sea esta de optimización o minimización de nuestra función objetivo (muchas veces denominada meta).
Sin embargo la programación lineal no es solamente uno de los método para resolver diversos tipos de problemas, para eso también se utiliza la programación entera, la cual, en base a manejar problemas con coeficientes enteros, podemos llegar a un resultado algo más sólido y de igual forma optimo como en la programación lineal, cabe destacar que en la programación entera se suele llegar a un resultado muy similar a la programación lineal por otros métodos (simplex, de penalización, dual, etc.), los problemas que se desean resolver por esta forma, suelen ser de carácter heurístico ósea, hacerlo de una forma más creativa y con otra forma de poder resolverlo.
3.1 Introducción y casos de aplicación de la programación entera.
Introducción a la programación entera
Es frecuente al tener que resolver problemas en los cuales las soluciones tienen que ser valores enteros como por ejemplo: números de unidades a producir por máquina, número de máquinas necesarias, etc. Parte del problema de la programación entera radica en la diferencia esencial que existe la programación lineal y la entera, en la programación lineal se maximiza o minimiza una función sobre una región de factibilidad convexa, mientras que al usar los métodos de programación entera se maximiza una función sobre una región de factibilidad que generalmente no es convexa.
De tal manera que la programación entera tiene más complicaciones que la programación lineal. En este tema se presenta un tipo de problemas formalmente similares a los problemas de Programación Lineal, ya que en su descripción solo se establecen expresiones lineales. Sin embargo no responden a problemas lineales ya que algunas (o todas) las variables del problema toman valores que no están en un conjunto continuo.
Por ejemplo, pueden ser variables que toman valores 0 o 1(binarias), o variables que toman valores enteros no negativos (0, 1,2,...), etc. Tras introducir el tipo de problemas se dedica un importante apartado para presentar las posibilidades de modelado que esta herramienta proporciona: problemas binarios, problemas de carga, problemas con restricciones condicionales o con dicotomías, etc. Tras dedicar una parte importante del tema a presentar estas herramientas de modelado y a plantear numerosos problemas con ellas se procede a mostrar dos métodos de resolución. Uno de ellos dedicado a problemas en los que todas las variables son binarias y otro para problemas generales. Ambos métodos tienen en común que desarrollan un proceso de enumeración que permite comprobar explícita o implícitamente todas las soluciones del problema hasta encontrar la óptima, y entran dentro del tipo de métodos de ramificación y acotación.
En algunos casos se requiere que la solución óptima se componga de valores enteros para algunas de las variables. La resolución de este problema se obtiene analizando las posibles alternativas de valores enteros de esas variables en un entorno alrededor de la solución obtenida considerando las variables reales. Muchas veces la solución del programa lineal truncado está lejos de ser el óptimo entero, por lo que se hace necesario usar algún algoritmo para hallar esta solución de forma exacta
Aplicaciones
Las aplicaciones de la programación entera son las siguientes:
Todos los problemas de programación lineal, donde las actividades, por su estructura deben ser no-divisibles, son programas enteros.
Todos los problemas de transporte, asignación y redes de optimización. Este tipo de problemas son enteros y dada la estructura tan especial de estos problemas, tienen métodos de solución propios.
Problemas de secuenciación. Este tipo de problemas aunque son fáciles de formular, resultan bastantes difíciles de resolver, los cuales llevan una secuencia.
El problema del agente viajero. Este problema concierne en un agente viajero que saliendo de una terminal de ciudad debe visitar una sola vez n-1 ciudades diferentes, y regresar al punto de partida.
Problema tipo mochila. Este tipo de problemas de optimización de carácter entero puede darse en dos versiones. En la primera se proporciona un cierto espacio con determinado volumen o capacidad, y este debe ser llenado con objetos de valor y volumen o capacidades especificados.
Problemas de inversión. Estos problemas pueden ser de distintos tipos de inversión, siempre y cuando se añada con el hecho de que la programación sea entera.
Problemas con costos fijos. Todos los problemas que en su función de costo influyen un costo fijo del siguiente tipo pertenecen al grupo de problemas enteros. Este tipo de costos aparecen frecuentemente en problemas de transportes, inventarios, localización de plantas, distribución geográfica de electores, etc.
Problemas de cubrimiento y partición de un conjunto. Este tipo de modelos de carácter entero se ha utilizado en problemas de acceso de información, programación de entrega de paquetería por transporte terrestre, distribución política electoral, problemas matemáticos de coloración y programación de horarios de tripulación aéreos, ferrocarrileros, terrestres y marítimos.
Dicotomías y problemas de aproximación. Una dicotomía ocurre en un programa matemático cuando se tienen condiciones de tipo esta restricción o la otra restricción, pero no ambas. Este tipo de condiciones se pueden representar por medio de una estructura entera.
j) Balance de líneas de producción. Este tipo de problemas consisten en decidir qué actividades deben se desempeñadas por cada trabajador, a medida que un producto se desplaza por una línea de producción. El objetivo consiste en 0, si = 0, 0 , j=1,2,…n +, si > 0 minimizar el número de trabajadores (o estaciones de trabajo o actividades) en función de una tasa de producción.
k) Asignación cuadrática. Estos aparecieron en problemas de localización, existe un conjunto de n posibles lugares en donde se piensa construir n plantas industriales m
3.2 Definición y modelos de programación entera.
Definición
Los modelos de Programación Entera son aquellos donde la totalidad o un subconjunto de las variables de decisión toman valores enteros. En este sentido la forma estándar de un modelo de Programación Entera queda definido de la siguiente forma:
Existen múltiples aplicaciones de modelos de Programación Entera como apoyo a la toma de decisiones. Algunas aplicaciones típicas son problemas de localización de instalaciones, inclusión de costos fijos, problemas de asignación, problemas de ruteo vehicular, etc.
Modelos de Programación Entera
Los modelos de Programación Entera se pueden clasificar en 3 grandes áreas: Programación Entera Mixta (PEM), Programación Entera Pura (PEP) y Programación Binaria.
Programación Entera Mixta (PEM)
A esta categoría pertenecen aquellos problemas de optimización que consideran variables de decisión enteras o binarias pero no de forma exclusiva. De esta forma un problema de PEM puede considerarse como un híbrido entre distintas categorías de modelamiento, siendo un caso típico aquel que considera la mezcla de variables enteras y variables continuas (estas últimas características de los modelos de Programación Lineal). A modo de ejemplo los siguientes artículos que hemos abordado en el Blog dan cuenta de modelos de Programación Entera Mixta:
Incorporación de Costos Fijos
Problemas de Localización y Transporte
Problema de Generación Eléctrica
Programación Entera Pura (PEP)
En esta categoría encontramos aquellos modelos de Programación Entera que consideran exclusivamente variables de decisión que adoptan valores enteros o binarios. Un ejemplo de ello son las siguientes aplicaciones:
Problema de Asignación
Problema de Corte de Rollos
Selección de Invitados a una Boda
Programación de la Explotación Forestal
Problema de la Mochila
Notar que en los problemas anteriores (PEP) el conjunto de las soluciones factibles (o dominio de soluciones factibles) es finito. Esto ocurrirá generalmente con los problemas de Programación Entera (puros).
Programación Binaria.
En Matemática Aplicada la programación binaría hace referencia a aquella cuyo conjunto de soluciones sólo puede tomar uno de dos posibles valores: 1 ó 0. Es un caso especial de la Programación Entera. Esta herramienta matemática es especialmente útil para enfrentar problemas de tipo de toma de decisiones Si o No. El Problema de la asignación, es un caso particular de esta metodología, dónde se debe asignar unos recursos limitados a unas tareas específicas de manera óptima.
3.3 Método gráfico en la programación entera.
El método gráfico se emplea para resolver problemas que presentan sólo 2 variables de decisión. El procedimiento consiste en trazar las ecuaciones de las restricciones en un eje de coordenadas X1, X2 para tratar de identificar el área de soluciones factibles (soluciones que cumplen con todas las restricciones).
La solución óptima del problema se encuentra en uno de los vértices de esta área de soluciones creada, por lo que se buscará en estos datos el valor mínimo o máximo del problema.
EJEMPLO:
Una compañía de auditores se especializa en preparar liquidaciones y auditorías de empresas pequeñas. Tienen interés en saber cuántas auditorías y liquidaciones pueden realizar mensualmente para maximizar sus ingresos. Se dispone de 800 horas de trabajo directo y 320 horas para revisión. Una auditoría en promedio requiere de 40 horas de trabajo directo y 10 horas de revisión, además aporta un ingreso de 300 dls. Una liquidación de impuesto requiere de 8 horas de trabajo directo y de 5 horas de revisión, produce un ingreso de 100 dls. El máximo de liquidaciones mensuales disponibles es de 60.
Maximizar
Sujeto a:
La solución óptima siempre se encuentra en uno de los vértices del conjunto de soluciones factibles. Se analizan estos valores en la función objetivo. El vértice que representa el mejor valor de la función objetivo será la solución óptima.
3.4 Método de ramificación y acotación
El método de ramificar y acotar ayuda a resolver problemas complejos de programación a través de subprogramas, con la que se puede llegar a una solución. Las "ramas" de este modelo irán "creciendo" o extendiéndose dependiendo de las variables a resolver. Este método generalmente es utilizado en la resolución de problemas de optimización, ya que resolver problemas NP-hard y obtener una solución óptima requiere de demasiado esfuerzo computacional, y esta herramienta ayuda a que el esfuerzo computacional no sea demasiado. También se utiliza para los problemas de juegos.
El método genera nodos las cuales son soluciones de cada variable, que se sigue extendiendo, estas ramificaciones de las soluciones dadas por el método continúan creciendo siempre y cuando la siguiente solución este dentro de lo óptimo. El algoritmo busca el espacio de soluciones dadas por la mejor solución.
El objetivo de este algoritmo será encontrar el valor mínimo de una función f(x) donde el rango de x está determinado sobre un conjunto S de posibles soluciones. La iteración tiene 3 componentes principales:
Selección del nodo para procesos
Calcular los límites
Ramificar
Para cada nodo que se genera en la ramificación tendremos:
Cota superior del beneficio óptimo que podemos alcanzar a partir del nodo i.
Cota inferior del beneficio óptimo que podemos alcanzar a partir del nodo i.
Beneficio estima óptima que se puede encontrar a partir del nodo i.
Las cotas deben ser fiables para poder determinar cuándo se hace una acota y el beneficio estimado ayuda a decidir que parte del árbol evaluar primero.
Diagrama de flujo del método de ramificación y acotación.
3.5 Método heurístico para problemas binarios
Heurístico del griego "heuriskin" (servir para descubrir), son procedimientos utilizados en lógica y filosofía para estudiar los métodos del razonamiento inductivo.
Polya (1957) en su "Tratado de solución de problemas", emplea el término para connotar el razonamiento inductivo y analógico que conduce a conclusiones verosímiles, en contraposición a los desarrollos deductivos de pruebas rigurosas.
Se emplean los métodos heurísticos en vez de los algoritmos cuando no se conoce una solución algorítmica al problema, o cuando esta está excluida por motivos prácticos.
A pesar de que las heurísticas son una alternativa excelente para resolver problemas de difícil solución, éstas también adolecen de ciertas propiedades deseables. Un inconveniente de la gran mayoría de los métodos heurísticos es su dependencia de la estructura del problema para el cual fue diseñado, y su falta de habilidad para adaptarse a nuevas situaciones o modificaciones del problema de partida. Así, usan propiedades de la región factible y/o de la función objetivo o información a priori que hacen que los procedimientos sean válidos sólo bajo esas condiciones a diferencia de los métodos exactos, no existe un procedimiento conciso y preestablecido,
Independiente del problema. En los métodos heurísticos las técnicas e ideas aplicadas a la resolución de un problema son específicas de éste y aunque, en general, pueden ser trasladadas a otros problemas, han de particularizarse en cada caso. Otro problema importante de los heurísticos es su incapacidad para escapar de óptimos locales. Una solución heurística para un problema podría corresponder o estar muy cercana a un óptimo local y no a un óptimo global, ya que estos algoritmos pueden quedarse atrapados en una zona del espacio de soluciones.
3.6 Uso del software.
WinQSB
WinQSB es un sistema interactivo de ayuda a la toma de decisiones que contiene herramientas muy útiles para resolver distintos tipos de problemas en el campo de la investigación operativa. El sistema está formado por distintos módulos, uno para cada tipo de modelo o problema.
TORA
El software TORA de optimización es un programa basado en Windows® que tiene por objeto usarse con muchas de las técnicas presentadas en el libro Investigación de Operaciones de TAHA . TORA es una aplicación muy simple, con una interfaz gráfica de baja calidad. Una de las ventajas de TORA es que puede utilizarse en procesadores de 32 y 64 bits, hoy por hoy su principal desventaja es que deberá ajustarse la configuración de pantalla para adecuarse a sus ajustes de presentación de 800 x 600 y 1024 x 768 pixeles.
DS for Windows
Software para la producción / gestión de operaciones, métodos cuantitativos, ciencias de la gestión y la investigación de operaciones.
LINGO
LINGO: (Linear Generalize Optimizer) es una herramienta simple para formular problemas lineales y no lineales, resolverlos y analizar su solución. El resultado que LINGO nos proporciona es la optimización que nos ayuda a encontrar el mejor resultado: la ganancia más alta, o el costo más bajo.
LINDO
LINDO es un intuitivo programa para resolver problemas de optimización matemática, en particular de programación lineal (continuos, enteros y binarios). El nombre de LINDO es un acrónimo de Linear, Interactive, and Discrete Optimizer.
CONCLUSIONES.
La programación entera tiene una diversidad de métodos para resolver distintos problemas de toma der decisiones, estos son un poco más complicado con la programación lineal, aunque a veces con la programación lineal no se puede resolver, con las programación entera pueden encontrarse una solución factible, aunque como ya se mencionó al inicio, estos métodos son de carácter heurísticos por lo que son algo nuevos y a su vez muy difíciles de dominar pero siempre en la búsqueda de una solución para tomar decisión al final de cuentas.
Aunque muchas veces en problemas de inversión, o de otras cosas similares es muy importante la programación entera para que la misma no tenga fallos a la hora de resolver el mismo, obviamente, estos métodos puede resultar también en decimales, a lo que también se le puede denominar a un método mixto o en su defecto también puede ser un método en donde la respuesta sea sí o no (binarios), hay muchísimas formas de resolver estos, y cada problema tiene su forma de resolución y aunque, estas sean similar a la lineal, estas tienen la misma utilidad, y de igual forma en la búsqueda de mejora continua como el simplex
Bibliografías.
Instituto Tecnológico La Laguna. (s.f.). Recuperado el 21/04/2017, de Solución de Problemas de programación matemática por el metódo gráfico: http://www.itlalaguna.edu.mx/academico/carreras/industrial/invoperaciones1/UIb.HTML
Lieberman, H. y. (2003). ULPGC. Recuperado el 21/04/2017, de Programación entera: http://www2.ulpgc.es/hege/almacen/download/14/14958/programacion_enter.pdf
Martos, J. R. (25/11/2009). Wordpress. Recuperado el 21/04/2017, de Procedimientos heurísticos para potenciar el aprendizaje: https://jacoboreyesmartos.wordpress.com/2009/11/25/algunos-procedimientos-heursticos-y-algoritmos-para-potenciar-el-aprendizaje/
Olivares, B. (05/06/2014). SlideShare. Recuperado el 21/04/2017, de Programación Entera U4: https://es.slideshare.net/betzaidaberenicelopezolivares5/programacion-entera-u4
Tutoriales, G. (11/02/2016). Gestión de Operaciones. Recuperado el 21/04/2017, de Qué es la programación entera: http://www.gestiondeoperaciones.net/programacion-entera/que-es-la-programacion-entera/
UV es. (s.f.). Recuperado el 21/04/2017, de Programacion Lineal Entera: http://www.uv.es/~sala/trentera.pdf
Wikipedia. (18/06/2013). Recuperado el 21/04/2017, de Programación binaria: https://es.wikipedia.org/wiki/Programaci%C3%B3n_binaria