TECNOLÓGICO NACIONAL DE MÉXICO
INSTITUTO TECNOLÓGICO DE TIJUANA
INGENIERÍA INDUSTRIAL
Investigación de Operaciones I
Unidad III
Ago-Dic
Tarea II
Docente:
Eduardo Manuel Morales
Alumno:
Rodríguez Quezada Alexa Valeria
06 de Noviembre de 2024
Un modelo de programación entera es aquel cuya solución óptima tiene sentido
solamente si una parte o todas las variables de decisión toman valores restringidos a números
enteros, permitiendo incorporar en el modelamiento matemático algunos aspectos que quedan
fuera del alcance de los modelos de programación lineal.
En este documento se mostrarán y explicarán tres tipos de métodos de solución dentro
de la programación lineal entera para conocer la solución más factible de algún problema que
se presente y poder optimizar de la mejor manera, el método gráfico de programación entera,
el método de ramificación y acotación y el método heurístico para problemas binarios.
Aunque se utilicen para la programación lineal cada método tiene un enfoque
diferente:
● Método gráfico: Ideal para entender problemas simples.
● Ramificación y Acotación: Método exacto, adecuado para problemas
medianos.
● Heurísticas: Aproximaciones efectivas para problemas grandes y complejos,
especialmente binarios.
Continuando con la información se presentará el primer método que es el método
gráfico de programación entera.
Programación entera
Este método nos permite graficar las rectas correspondientes a las restricciones de tal
modo que delimita la región factible de solución. Posteriormente se identifican los puntos
enteros más próximos al límite de la zona de solución y se unen por medio de una línea de
modo que se habrá generado una nueva zona de solución formada por esta y los ejes, estando
la solución del problema de programación entera en uno de los vértices, que será aquel que
optimice la función objetivo.
En resumen es una herramienta visual para resolver problemas de programación
entera y programación lineal cuando solo hay dos variables de decisión. Este método
consiste en graficar la región factible de las restricciones del problema en un plano cartesiano
y encontrar la solución óptima que maximiza o minimiza la función objetivo.
1
Pasos básicos
1. Dibujar las restricciones en un plano con las dos variables de decisión.
2. Determinar la región factible de acuerdo con las restricciones.
3. Identificar los puntos enteros dentro de la región factible (si el problema es de
Programación Entera, deben ser enteros; si es binario, deben ser 0 o 1).
4. Evaluar la función objetivo en estos puntos enteros para identificar el que
ofrece el valor óptimo.
Este tipo de método al resolverse solo utilizando enteros es una herramienta muy
sencilla de usar y desarrollar, facilitando la toma de decisiones, aunque sea muy fácil de
utilizar tiene una desventaja ya que solo se aplica cuando hay dos variables de decisión; no es
práctico para problemas grandes o con muchas variables, es decir solo para problemas de
menor magnitud.
Casos de programación entera
● Solución única en un punto entero: Un único punto entero es óptimo.
● Múltiples soluciones óptimas enteras: Varios puntos enteros cumplen el valor
óptimo.
● Solución óptima en un punto no entero: La solución óptima relajada no es
entera, y se exploran puntos cercanos.
● Región factible sin puntos enteros: La región no tiene puntos enteros
factibles.
● Región factible no acotada: La región se extiende indefinidamente, y puede
no tener un máximo.
● Región factible vacía: No hay puntos que cumplan con todas las restricciones.
Ejemplo
2
Método de ramificación y acotación
El método de Ramificación y Acotación es un enfoque de búsqueda sistemática para
resolver problemas de programación entera, especialmente útil para problemas binarios o
enteros de mayor tamaño. Consiste en dividir el problema en subproblemas (ramificación) y
calcular acotaciones (o límites) para decidir si una rama debe explorarse o no (acotación).El
algoritmo genera en forma recursiva cotas (o restricciones adicionales) que favorecen la
obtención de valores enteros para las variables de decisión, genera en forma recursiva cotas
(o restricciones adicionales) que favorecen la obtención de valores enteros para las variables
de decisión.
Pasos básicos
1. Resolver el problema relajado (sin la restricción de enteros) para encontrar
una solución óptima inicial.
2. Si la solución no es entera, dividir el problema en dos subproblemas al
imponer una restricción adicional en una variable que no sea entera.
3. Calcular los límites de cada subproblema para identificar ramas con
soluciones potencialmente óptimas.
4. Poda: Si un subproblema no puede producir una solución mejor que la mejor
solución entera actual, se descarta.
5. Continuar ramificando y podando hasta que se exploren todas las ramas o
hasta que se encuentre la mejor solución entera posible.
Este método permite resolver problemas complejos al evitar evaluar todas las combinaciones
posibles, pero su uso o desarrollo a largo plazo podría llegar a ser costoso en caso de usarse
3
en proyectos o problemas muy grandes por lo cuál este método por lo general se usan para
situaciones de una magnitud media.
Casos
Algunos de los casos más comunes de este método son los siguientes:
● Solución Óptima en la Raíz: Se encuentra la solución entera óptima sin necesidad de
ramificar.
● Nodo con Solución Entera pero No Óptima: Soluciones enteras que no mejoran el
óptimo actual, por lo que se podan.
● Nodo con Solución Fraccionaria: Requiere dividir en subnodos hasta encontrar una
solución entera.
● Nodo con Solución Inferior a la Actual Óptima: No se explora más, pues no puede
mejorar la solución óptima actual.
● Nodo sin Solución Factible: No cumple con las restricciones, se descarta
inmediatamente.
● Nodo con Región No Acotada: Puede no contribuir a una solución finita o acotada,
por lo que también se puede descartar.
Ejemplo
4
La solución óptima del problema lineal asociado (que llamaremos P0) es
X1=2,8 y X2=1,6 con valor óptimo V(P0)=20,8. Claramente esta solución no cumple
las condiciones de integralidad para las variables de decisión por tanto es necesario
generar cotas o restricciones adicionales de modo de poder obtener soluciones enteras.
La resolución gráfica del
problema 1 (P1) nos da como
solución óptima X1=2 y X2=2
que es una solución entera. El
valor óptimo del problema 1
es V(P1)=20. Notar que
V(P1)<V(P0) lo cual es
natural dado que el dominio de
soluciones factibles del P1 es
menor (subconjunto) al dominio de soluciones factibles de P0.
Método heurístico para problemas binarios
Los métodos heurísticos son técnicas de solución aproximada que buscan soluciones
“buenas” pero no garantiza que sean óptimas. Son útiles cuando los problemas son muy
grandes y los métodos exactos (como Ramificación y Acotación) se vuelven imprácticos
debido a su complejidad. En problemas binarios, las variables de decisión sólo pueden tomar
valores de 0 o 1, lo que permite emplear heurísticas para obtener soluciones cercanas al
óptimo rápidamente.
Tipos comunes de heurísticas:
● Algoritmos Voraces (Greedy): Seleccionan decisiones que parezcan “mejores” en el
momento, basándose en una evaluación local. Pueden ser efectivos para algunos
problemas binarios si las decisiones locales llevan a buenos resultados globales.
● Algoritmos Genéticos: Utilizan mecanismos inspirados en la biología, como la
selección y recombinación de soluciones, para iterativamente mejorar una población
de soluciones. Es útil en problemas binarios donde hay muchas combinaciones
posibles.
5
● Recocido Simulado (Simulated Annealing): Basado en el proceso de enfriamiento
de metales, permite explorar soluciones subóptimas al principio, con el fin de evitar
caer en mínimos locales y buscar una solución globalmente óptima.
● Búsqueda Tabú: Impone restricciones en ciertas soluciones ya exploradas (tabús)
para no repetir rutas y fomentar la búsqueda de soluciones nuevas
Pasos básicos
1. Definir el Problema y la Función Objetivo
● El primer paso es entender el problema e identificar la función objetivo (la que
queremos maximizar o minimizar) y todas las restricciones.
Ejemplo: Supongamos que queremos maximizar una función de beneficios, donde
cada variable binaria xi indica si se selecciona un objeto (1) o no (0).
2. Generar una Solución Inicial
● Crear una solución inicial que cumpla, al menos parcialmente, con las restricciones
del problema. Esto se puede hacer de manera aleatoria o usando un enfoque simple,
como una estrategia voraz (greedy) que selecciona primero las variables que aportan
mayor beneficio.
Ejemplo: Si queremos maximizar el beneficio, elegimos las variables xi=1 que
tengan el mayor coeficiente en la función objetivo hasta que ya no sea posible por las
restricciones.
3. Evaluar la Solución Inicial
● Calcular el valor de la función objetivo para la solución inicial y verificar qué tan bien
cumple con las restricciones.
Ejemplo: Si la solución inicial no cumple alguna restricción, se anotan las
restricciones incumplidas y su severidad.
4. Realizar Mejoras Graduales (Búsqueda Local)
● A partir de la solución inicial, se realizan pequeños cambios en las variables (por
ejemplo, cambiar algunos 0 a 1 o viceversa) para intentar mejorar el valor de la
función objetivo y acercarse a una solución factible si es necesario.
● Métodos Comunes:
○ Cambio de bits: Cambiar el valor de una variable xi de 0 a 1 o de 1 a 0.
6
○ Intercambio de bits: Si existe una restricción de límite (por ejemplo,
presupuesto), se puede desactivar una variable (cambiar de 1 a 0) y activar otra
(de 0 a 1) para mejorar el valor de la función objetivo sin violar la restricción.
5. Aplicar Criterios de Parada
● Establecer criterios para detener la búsqueda. Los criterios más comunes son:
○ Alcanzar un número máximo de iteraciones.
○ Lograr una mejora mínima en la función objetivo en las últimas iteraciones.
○ Encontrar una solución que cumpla todas las restricciones.
Ejemplo: Terminar cuando no se obtengan mejoras significativas en 10 iteraciones
consecutivas.
6. Seleccionar la Mejor Solución Encontrada
● Al finalizar las iteraciones, se elige la mejor solución generada (la que tenga el mejor
valor de la función objetivo y que cumpla con todas las restricciones o la mayoría de
ellas).
Casos
● Solución Factible y Óptima o Muy Cercana al Óptimo: Caso ideal, se encuentra una
buena solución.
● Solución Factible pero No Óptima: Solución válida, pero no necesariamente la mejor.
● Solución Aproximadamente Factible: Casi cumple restricciones, pero necesita ajustes.
● Solución Inviable: Incumple una o varias restricciones importantes.
● Óptimo Local: La búsqueda se estanca en un valor que no es el óptimo global.
● Estancamiento del Proceso: Mejoras muy pequeñas o inexistentes en la función
objetivo.
● Convergencia Prematura: El método se detiene sin explorar más posibles mejoras.
Aplicaciones prácticas:
1. Evaluación de la usabilidad: Las guías heurísticas proporcionan una lista de criterios
que se pueden utilizar para evaluar la usabilidad de un producto o servicio. Los
evaluadores aplican estas guías a través de inspecciones de usabilidad para identificar
problemas y áreas de mejora en la experiencia del usuario.
2. Diseño de interfaces: Las guías heurísticas también se utilizan durante el proceso de
diseño para ayudar a los diseñadores a crear interfaces más intuitivas y fáciles de usar.
7
Al seguir estas guías, los diseñadores pueden anticipar posibles problemas y diseñar
soluciones que mejoren la experiencia del usuario.
3. Benchmarking: Las guías heurísticas también se utilizan como referencia en el
análisis comparativo de productos o servicios similares. Al utilizar las mismas guías
para evaluar diferentes productos, es posible realizar comparaciones y establecer
estándares de usabilidad.
Ejemplo
Suponiendo que se tiene un camión con un espacio limitado (capacidad en kg) y
quieres maximizar el valor de los productos que pueden cargar. Cada producto tiene un peso
y un valor, y puedes decidir si lo incluyes o no en el camión.
8
Resultado Final
● Productos Seleccionados: P1, P2, y P4.
● Peso total: 9 kg (no excede el límite de 10 kg).
● Valor total: 26.
● Solución Binaria: x=[1,1,0,1]
9
Conclusión
Es importante conocer los tipos de métodos de solución para los problemas enteros,
como lo es el método gráfico de programación entera, ramificación y acotación y el
heurístico binario, el identificar sus características y en qué situaciones se pueden utilizar
para sacar su máximo provecho, por ejemplo en el gráfico entero se utilizan para proyectos
pequeños, para el de ramificación y acotación son proyectos de una magnitud media el último
que es binario son para proyecto de gran magnitud, no vamos a usar el método gráfico entero
para un proyecto donde contamos con más de cinco variables, ya que por lo general para ese
método solo se usan dos variables.
Gracias a estos métodos se nos proporciona una solución que sería factible y óptima o
la que se le acerque más a ese resultado que esperamos llegar, además de que nos ayuda a
tener un resultado más realista para poder implementarlo en nuestra vida cotidiana o laboral.
10
Referencias Bibliográficas
3.3. Método Gráfico de Programación Entera. (n.d.). Scribd. Retrieved November 7, 2024, from
https://es.scribd.com/document/543604536/345677673-3
ChatGPT. (n.d.). Chatgpt.com. Retrieved November 7, 2024, from
https://chatgpt.com/c/672b8c04-c8ec-8009-a5c6-497fbe39982c
ND marketing digital. (2024, January 31). El enfoque heurístico y ejemplos: una guía completa para
entender su aplicación. Nativos Digitales; Nativos Digitales - Agencia de marketing digital.
https://ndmarketingdigital.com/que-es-el-metodo-heuristico-y-ejemplos/
Tutoriales, G. E. O. (2011, August 5). Ejemplo del Algoritmo de Branch and Bound (Ramificación y
Acotamiento). Gestión de Operaciones.
https://www.gestiondeoperaciones.net/programacion-entera/ejemplo-del-algoritmo-de-branc
h-and-bound-ramificacion-y-acotamiento/
Tutoriales, G. E. O. (2016, February 11). Qué es la Programación Entera. Gestión de Operaciones.
https://www.gestiondeoperaciones.net/programacion-entera/que-es-la-programacion-entera/
(N.d.). Ehu.Eus. Retrieved November 7, 2024, from https://ocw.ehu.eus/file.php/19/5._entera.pdf
11