Universitario → Programación lineal y optimización ↓
Programación entera
La programación entera es una rama de la optimización o programación matemática. Significa encontrar la mejor solución de un conjunto de soluciones posibles. Mientras que la programación lineal trata con ecuaciones lineales y algunas restricciones, la programación entera es un tipo especial donde las variables de solución deben ser enteros. Esta restricción hace que la programación entera sea más compleja y desafiante, pero también más aplicable en escenarios reales donde algunos recursos pueden ser solo unidades enteras.
¿Qué es la programación entera?
La programación entera involucra problemas matemáticos que tienen como objetivo optimizar una función objetivo dada. A primera vista puede parecer programación lineal, pero hay una diferencia importante: en la programación entera, la probabilidad de que se optimice una función es constante a menos que algunas o todas las variables sean enteros. están limitados solamente.
La programación entera puede ser utilizada para resolver una variedad de problemas de optimización. Algunos ejemplos incluyen planificación y programación, asignación de recursos y toma de decisiones en industrias como la logística, manufactura, telecomunicaciones y finanzas.
Formulación matemática
La forma general de un problema de programación lineal puede expresarse de la siguiente manera:
Max o Min: c1*x1 + c2*x2 + ... + cn*xn Sujeto a: a11*x1 + a12*x2 + ... + a1n*xn (<=, =, o >=) b1 a21*x1 + a22*x2 + ... + a2n*xn (<=, =, o >=) b2 , am1*x1 + am2*x2 + ... + amn*xn (<=, =, o >=) bm x1, x2, ..., xn >= 0
Aquí, c
denota los coeficientes de la función objetivo, a
denota los coeficientes de las restricciones y b
denota las constantes del lado derecho. El objetivo es encontrar los valores de x1, x2, ..., xn
que maximicen o minimicen la función objetivo. Hacer el mínimo.
En la programación entera, una o más de las variables x1, x2, ..., xn
están restringidas a tomar solo valores enteros. Cuando todas las variables están restringidas a ser enteros, el problema se denomina un problema de programación entera pura. Cuando solo algunas de las variables son enteros, se trata de un problema de programación mixta entera.
Ejemplo
Problema simple de programación entera
Veamos un ejemplo simple de programación entera para entender estos conceptos. Supongamos que una empresa quiere decidir cuál es la cantidad óptima de productos A y B a producir. La ganancia de una unidad de producto A es de $3, y es de $5 del producto B. La empresa no puede producir más de 7 unidades de A y 4 unidades de producto B conjuntamente.
El modelo de programación entera se puede configurar de la siguiente manera:
Max: 3A+5B Sujeto a: a + b <= 7 b <= 4 A, B >= 0 y enteros
Aquí, tanto A como B deben ser enteros porque la empresa no puede fabricar una fracción de un producto. Este requisito es donde la programación entera se vuelve más compleja que la programación lineal simple.
Visualización de soluciones enteras
Para nuestro ejemplo, visualicemos la región factible y la solución. Considere las restricciones trazadas en el gráfico marcando especialmente los enteros:
En el ejemplo SVG, la línea A + B = 7
y la línea B = 4
están dibujadas con puntos íntegros. Estos puntos tienen (2,4), (3,4) y (4,3) incluidos.
Puesto que nuestro objetivo es maximizar nuestra función objetivo 3A + 5B
para los puntos de solución (3,4) y (4,3), los valores objetivos son:
- Para el punto (3,4):
3 * 3 + 5 * 4 = 9 + 20 = 29
- Para el punto (4,3):
3 * 4 + 5 * 3 = 12 + 15 = 27
Por lo tanto, la máxima ganancia se obtiene en (3,4), produciendo 3 unidades de A y 4 unidades de B.
Desafíos en la programación entera
La programación entera tiene dificultades inherentes que la programación lineal general no tiene. Los problemas de programación lineal pueden resolverse utilizando métodos como el algoritmo símplex, que navega eficientemente a través de las regiones factibles.
Sin embargo, agregar restricciones de enteros complica la búsqueda de una solución. Dado que los espacios matemáticos involucrados en la programación entera no son agradables formas convexas, se necesitan algoritmos especiales para la visualización y el cálculo como:
- Rama y acotar: divide repetidamente el problema en subproblemas ("ramas"), encuentra regiones factibles y resuelve programas lineales más fáciles.
- Plano de corte: Esto es una adición a la relajación estándar de programación lineal. Agrega restricciones para crear una región factible que muestre solo soluciones enteras.
- Rama y corte: Combina los métodos anteriores, proporcionando eficiencia y mayor practicidad en la resolución de programas mixtos e enteros.
Aplicaciones de la programación entera
Debido a su naturaleza, la programación entera encuentra amplias aplicaciones en diversos campos. Estas funciones resuelven problemas en lugar de explorar partes teóricas.
A continuación se presentan algunas de las principales áreas de aplicación:
- Manufactura: contratación, utilización de máquinas, mezcla y distribución.
- Telecomunicaciones: asignación de ancho de banda, diseño de red y enrutamiento.
- Logística: gestión de inventario, enrutamiento de vehículos y programación de personal.
- Finanzas: selección de cartera y presupuesto de capital.
Cada área hace uso de factores que favorecen la programación entera, como la naturaleza discreta y la optimización de elección explícita entre posibilidades finitas.
Conclusión
La programación entera sirve como un activo clave en el campo de la optimización. Su funcionalidad agrega a la practicidad, ya que las restricciones que se ven a menudo en la realidad son naturalmente abordadas por sus soluciones discretas. Siendo de naturaleza compleja y de cálculo, la programación entera es un proceso muy simple y costoso. No obstante, los métodos existentes la hacen factible y ampliamente aplicable. El potencial de la optimización continúa creciendo en adopción a medida que las industrias avanzan, impulsadas en parte por los avances y el entendimiento de la programación entera.