Un problema de programación entera , también conocido como optimización entera , [ 1 ] es un programa de optimización matemática o de factibilidad en el que algunas o todas las variables están restringidas a ser números enteros . En muchos contextos, el término se refiere a la programación lineal entera (PLI), en la que la función objetivo y las restricciones (aparte de las restricciones enteras) son lineales .
La programación entera es NP-completa [ 2 ] (la parte difícil es demostrar la pertenencia a NP [ 3 ] ). En particular, el caso especial de la programación lineal entera 0-1, en la que las incógnitas son binarias y solo deben cumplirse las restricciones, es uno de los 21 problemas NP-completos de Karp [ 4 ] .
Si algunas variables de decisión no son discretas, el problema se conoce como un problema de programación entera mixta . [ 5 ]
Formato canónico y estándar para ILP
Los programas lineales enteros pueden expresarse en forma canónica o en forma estándar (ambas definidas a continuación), las cuales son diferentes entre sí. Un programa lineal entero en forma canónica se expresa así (nótese que es elvector que debe decidirse): [ 6 ]
y un ILP en forma estándar se expresa como
dónde son vectores yes una matriz. Al igual que con los programas lineales, los PLI que no están en forma estándar se pueden convertir a forma estándar eliminando desigualdades e introduciendo variables de holgura () y reemplazando las variables que no tienen restricción de signo con la diferencia de dos variables con restricción de signo.
Ejemplo

El gráfico de la derecha muestra el siguiente problema.
Los puntos enteros factibles se muestran en rojo, y las líneas discontinuas rojas indican su envolvente convexa , que es el poliedro convexo más pequeño que contiene todos estos puntos. Las líneas azules junto con los ejes de coordenadas definen el poliedro de la relajación LP, que viene dado por las desigualdades sin la restricción de integralidad. El objetivo de la optimización es mover la línea discontinua negra lo más arriba posible sin que deje de tocar el poliedro. Las soluciones óptimas del problema entero son los puntosyque ambos tienen un valor objetivo de 2. El óptimo único de la relajación escon un valor objetivo de 2.8. Si la solución de la relajación se redondea a los enteros más cercanos, no es factible para el ILP. Véase la proyección en el simplex.
Prueba de la dureza NP
A continuación se presenta una reducción del problema de cobertura mínima de vértices a programación entera que servirá como prueba de la NP-dificultad.
DejarSea un grafo no dirigido. Defina un programa lineal de la siguiente manera:
Cualquier solución factible al programa entero será distinta de cero en un subconjunto de vértices. La primera restricción implica que al menos un extremo de cada arista está incluido en este subconjunto. Por lo tanto, la solución describe una cobertura de vértices. Además, dada alguna cobertura de vértices C,se puede establecer en 1 para cualquiery a 0 para cualquierde esta manera obtenemos una solución factible para el programa entero. Por lo tanto, podemos concluir que si minimizamos la suma deTambién hemos encontrado la cobertura mínima de vértices. [ 7 ]
Variantes
La programación lineal entera mixta ( MILP ) implica problemas en los que solo algunas de las variables,, están restringidas a ser números enteros, mientras que a otras variables se les permite ser números no enteros.
La programación lineal binaria (o programación entera binaria ) involucra problemas en los que las variables están restringidas a ser 0 o 1. Cualquier variable entera acotada puede expresarse como una combinación de variables binarias . [ 8 ] Por ejemplo, dada una variable entera,, la variable se puede expresar usandovariables binarias:
Aplicaciones
Existen dos razones principales para utilizar variables enteras al modelar problemas como un programa lineal:
- Algunas variables enteras representan cantidades que solo pueden ser enteras. Por ejemplo, no es posible construir 3,7 coches.
- Otras variables enteras representan decisiones (por ejemplo, si incluir o no una arista en un grafo ) y, por lo tanto, solo deben tomar el valor 0 o 1.
Estas consideraciones se presentan con frecuencia en la práctica, por lo que la programación lineal entera puede utilizarse en muchas áreas de aplicación, algunas de las cuales se describen brevemente a continuación.
Planificación de la producción
La programación lineal entera mixta tiene numerosas aplicaciones en la producción industrial, incluyendo la modelización de talleres de producción. Un ejemplo importante se da en la planificación de la producción agrícola , donde se determina el rendimiento de varios cultivos que comparten recursos (por ejemplo, tierra, mano de obra, capital, semillas, fertilizantes, etc.). Un posible objetivo es maximizar la producción total sin exceder los recursos disponibles. En algunos casos, esto puede expresarse mediante un programa lineal, pero las variables deben ser enteras.
Programación
Estos problemas involucran la programación de servicios y vehículos en redes de transporte. Por ejemplo, un problema puede consistir en asignar autobuses o metros a rutas específicas para cumplir con un horario, así como en dotarlos de conductores. En este caso, las variables de decisión binarias indican si un autobús o metro se asigna a una ruta y si un conductor se asigna a un tren o metro en particular. La técnica de programación binaria se ha aplicado con éxito para resolver un problema de selección de proyectos en el que estos son mutuamente excluyentes y/o tecnológicamente interdependientes.
partición territorial
Los problemas de división territorial o de distritos consisten en dividir una región geográfica en distritos para planificar operaciones, considerando diferentes criterios o restricciones. Algunos requisitos para este problema son: contigüidad, compacidad, equilibrio o equidad, respeto de los límites naturales y homogeneidad socioeconómica. Algunas aplicaciones de este tipo de problema incluyen: la división política, la división escolar, la división de servicios de salud y la división de la gestión de residuos.
redes de telecomunicaciones
El objetivo de estos problemas es diseñar una red de líneas para su instalación de manera que se cumplan un conjunto predefinido de requisitos de comunicación y el costo total de la red sea mínimo. [ 9 ] Esto requiere optimizar tanto la topología de la red como la capacidad de las distintas líneas. En muchos casos, las capacidades están restringidas a valores enteros. Generalmente, según la tecnología utilizada, existen restricciones adicionales que pueden modelarse como desigualdades lineales con variables enteras o binarias.
Redes celulares
La tarea de planificación de frecuencias en redes móviles GSM implica distribuir las frecuencias disponibles entre las antenas para que los usuarios puedan recibir servicio y se minimice la interferencia entre ellas. [ 10 ] Este problema puede formularse como un programa lineal entero en el que variables binarias indican si una frecuencia se asigna a una antena.
Otras aplicaciones
Algoritmos
La forma más sencilla de resolver un problema de programación lineal entera (PLI) consiste en eliminar la restricción de que x sea un número entero, resolver el problema de programación lineal (PL) correspondiente (denominado relajación PL del PLI) y, a continuación, redondear los valores de la solución a la relajación PL. Sin embargo, esta solución no solo puede no ser óptima, sino que incluso puede no ser factible; es decir, puede violar alguna restricción.
Utilizando la unimodularidad total
Si bien en general no se garantiza que la solución a la relajación LP sea integral, si el ILP tiene la formade tal manera quedóndeytener todas las entradas enteras ySi es totalmente unimodular , entonces toda solución factible básica es entera. En consecuencia, se garantiza que la solución devuelta por el algoritmo simplex es entera. Para demostrar que toda solución factible básica es entera, seasea una solución básica factible arbitraria. Dado quees factible, sabemos que. Dejarsean los elementos correspondientes a las columnas base para la solución básica.. Por definición de una base, existe alguna submatriz cuadradade con columnas linealmente independientes tales que.
Dado que las columnas deson linealmente independientes yes cuadrado,es no singular y, por lo tanto, por suposición,es unimodular y por lo tanto. Además, dado quees no singular, es invertible y por lo tanto. Por definición,. Aquídenota el adjugado dey es integral porquees integral. Por lo tanto, Por lo tanto, si la matrizSi un problema de programación lineal entera (PLI) es totalmente unimodular, en lugar de utilizar un algoritmo de PLI, se puede utilizar el método simplex para resolver la relajación de PL y la solución será entera.
Algoritmos exactos
Cuando la matrizAunque no es totalmente unimodular, existen diversos algoritmos que permiten resolver programas lineales enteros de forma exacta. Una clase de algoritmos son los métodos de planos de corte , que funcionan resolviendo la relajación del programa lineal y añadiendo restricciones lineales que conducen a que la solución sea entera sin excluir ningún punto factible entero.
Otro tipo de algoritmos son las variantes del método de ramificación y acotación . Por ejemplo, el método de ramificación y corte , que combina ambos métodos. Los algoritmos de ramificación y acotación presentan varias ventajas sobre los que solo utilizan planos de corte. Una de ellas es que pueden finalizarse prematuramente y, siempre que se haya encontrado al menos una solución integral, se puede obtener una solución factible, aunque no necesariamente óptima. Además, las soluciones de las relajaciones de programación lineal pueden utilizarse para estimar el peor caso posible de la distancia a la solución óptima. Por último, los métodos de ramificación y acotación pueden generar múltiples soluciones óptimas.
Algoritmos exactos para un número reducido de variables
Suponeres una matriz entera de m por n yes un vector entero de m por 1. Nos centramos en el problema de viabilidad, que consiste en decidir si existe un vector de n por 1.satisfactorio.
Sea V el valor absoluto máximo de los coeficientes en ySi n (el número de variables) es una constante fija, entonces el problema de factibilidad se puede resolver en tiempo polinomial en m y log V. Esto es trivial para el caso n = 1. El caso n = 2 fue resuelto en 1981 por Herbert Scarf . [ 16 ] El caso general fue resuelto en 1983 por Hendrik Lenstra , combinando ideas de László Lovász y Peter van Emde Boas . [ 17 ] El teorema de Doignon afirma que un programa entero es factible siempre que cada subconjunto dees factible la aplicación de restricciones; se puede utilizar un método que combine este resultado con algoritmos para problemas de tipo LP para resolver programas enteros en un tiempo lineal.y tratable con parámetros fijos (FPT) en, pero posiblemente doblemente exponencial en, sin dependencia de. [ 18 ]
En el caso especial de ILP 0-1, el algoritmo de Lenstra es equivalente a la enumeración completa: el número de todas las soluciones posibles es fijo (2 n ), y la comprobación de la viabilidad de cada solución se puede realizar en tiempo polinomial( m , log V ). En el caso general, donde cada variable puede ser un entero arbitrario, la enumeración completa es imposible. Aquí, el algoritmo de Lenstra utiliza ideas de la Geometría de los números . Transforma el problema original en uno equivalente con la siguiente propiedad: o bien la existencia de una soluciónes obvio, o el valor de(la n -ésima variable) pertenece a un intervalo cuya longitud está acotada por una función de n . En este último caso, el problema se reduce a un número acotado de problemas de menor dimensión. La complejidad temporal del algoritmo se ha mejorado en varios pasos:
- El algoritmo original de Lenstra [ 17 ] tenía tiempo de ejecución.
- Kannan [ 19 ] presentó un algoritmo mejorado con tiempo de ejecución. [ 20 ]
- Frank y Tardos [ 21 ] presentaron un algoritmo mejorado con tiempo de ejecución . [ 22 ] [ 23 ] : Prop.8
- Dadush [ 24 ] presentó un algoritmo mejorado con tiempo de ejecución.
- Reis y Rothvoss [ 25 ] presentaron un algoritmo mejorado con tiempo de ejecución.
Estos algoritmos también se pueden utilizar para programas lineales de enteros mixtos (MILP), programas en los que algunas variables son enteras y otras son reales. [ 26 ] El algoritmo original de Lenstra [ 17 ] : Sec.5 tiene tiempo de ejecucióndonde n es el número de variables enteras, d es el número de variables continuas y L es el tamaño de la codificación binaria del problema. Utilizando técnicas de algoritmos posteriores, el factorpuede mejorarse ao para. [ 26 ]
Métodos heurísticos
Dado que la programación lineal entera es NP-difícil , muchas instancias del problema son intratables y, por lo tanto, deben utilizarse métodos heurísticos. Por ejemplo, la búsqueda tabú puede utilizarse para buscar soluciones a problemas de programación lineal entera (PLI). [ 27 ] Para utilizar la búsqueda tabú en la resolución de PLI, los movimientos pueden definirse como incrementar o decrementar una variable entera restringida de una solución factible, manteniendo constantes todas las demás variables enteras restringidas. A continuación, se resuelven las variables no restringidas. La memoria a corto plazo puede consistir en soluciones previamente probadas, mientras que la memoria a medio plazo puede consistir en valores para las variables enteras restringidas que han dado como resultado valores objetivo altos (suponiendo que el PLI sea un problema de maximización). Finalmente, la memoria a largo plazo puede guiar la búsqueda hacia valores enteros que no se hayan probado previamente.
Otros métodos heurísticos que se pueden aplicar a los ILP incluyen:
- Subir colinas
- Recocido simulado
- Optimización de búsqueda reactiva
- optimización de colonias de hormigas
- Redes neuronales de Hopfield
También existen diversas heurísticas específicas para cada problema, como la heurística k-opt para el problema del viajante. Una desventaja de los métodos heurísticos es que, si no encuentran una solución, no se puede determinar si se debe a que no existe una solución factible o a que el algoritmo simplemente no pudo encontrarla. Además, suele ser imposible cuantificar cuán cerca de la solución óptima se encuentra la que arrojan estos métodos.
Programación entera dispersa
A menudo ocurre que la matrizque define el programa entero es disperso . En particular, esto ocurre cuando la matriz tiene una estructura de bloques , lo cual sucede en muchas aplicaciones. La dispersión de la matriz se puede medir de la siguiente manera. El gráfico detiene vértices que corresponden a columnas dey dos columnas forman una arista sitiene una fila donde ambas columnas tienen entradas distintas de cero. De forma equivalente, los vértices corresponden a variables, y dos variables forman una arista si comparten una desigualdad. La medida de escasezdees el mínimo de la profundidad del árbol del grafo dey la profundidad de árbol del grafo de la transpuesta de. Dejarser la medida numérica dedefinido como el valor absoluto máximo de cualquier entrada de. Dejarsea el número de variables del programa entero. Luego se demostró en 2018 [ 28 ] que la programación entera se puede resolver en tiempo fuertemente polinomial y de parámetros fijos tratables parametrizado pory. Es decir, para alguna función computabley alguna constanteLa programación entera se puede resolver en tiempoEn particular, el tiempo es independiente del lado derecho.y función objetivo. Además, a diferencia del resultado clásico de Lenstra, donde el númerode variables es un parámetro, aquí el númerode variables es una parte variable de la entrada.
Véase también
- mínimos cuadrados restringidos
- Ecuación diofántica : ecuación polinómica cuyas soluciones enteras se buscan.
Referencias
- ↑
- ↑ Papadimitriou, Christos H. (1981-10-01). "Sobre la complejidad de la programación entera" . J. ACM . 28 (4): 765– 768. doi : 10.1145/322276.322287 . hdl : 1721.1/148979 . ISSN 0004-5411 .
- ↑ "Complejidad computacional. | BibSonomy" . www.bibsonomy.org . Consultado el 5 de octubre de 2025 .
- ↑ Karp, Richard M. (1972). "Reducibilidad entre problemas combinatorios" (PDF) . En RE Miller; JW Thatcher; JD Bohlinger (eds.). Complejidad de los cálculos informáticos . Nueva York: Plenum. pp. 85–103 . doi : 10.1007/978-1-4684-2001-2_9 . ISBN 978-1-4684-2003-6.
{{cite book}}: CS1 mantenimiento: ubicación del editor ( enlace ) - ↑ "Programación lineal entera mixta (MILP): formulación del modelo" (PDF) . Consultado el 16 de abril de 2018 .
- ↑ Papadimitriou, CH ; Steiglitz, K. (1998). Optimización combinatoria: algoritmos y complejidad . Mineola, NY: Dover. ISBN 0486402584.
- ↑ Erickson, J. (2015). "Reducción de programación entera" (PDF) . Archivado del original (PDF) el 18 de mayo de 2015.
- ↑ Williams, HP (2009). Lógica y programación entera . Serie internacional en investigación operativa y ciencias de la gestión. Vol. 130. ISBN 978-0-387-92280-5.
- ↑ Borndörfer, R.; Grötschel, M. (2012). "Diseño de redes de telecomunicaciones mediante programación entera" (PDF) .
- ↑ Sharma, Deepak (2010). "Planificación de frecuencias" .
- ^ Morais, Hugo; Kádár, Péter; Faria, Pedro; Vale, Zita A.; Khodr, HM (1 de enero de 2010). "Programación óptima de una microrred renovable en un área de carga aislada mediante programación lineal entera mixta" . Energías Renovables . 35 (1): 151– 156. Bibcode : 2010REne...35..151M . doi : 10.1016/j.renene.2009.02.031 . hdl : 10400.22/1585 . ISSN 0960-1481 .
- ↑ Omu, Akomeno; Choudhary, Ruchi; Boies, Adam (2013-10-01). "Optimización de sistemas de recursos energéticos distribuidos mediante programación lineal entera mixta" . Energy Policy . 61 : 249–266 . Bibcode : 2013EnPol..61..249O . doi : 10.1016/j.enpol.2013.05.009 . ISSN 0301-4215 . S2CID 29369795 .
- ↑ Schouwenaars, T.; Valenti, M.; Feron, E.; How, J. (2005). "Implementación y resultados de pruebas de vuelo de un sistema de guiado de UAV basado en MILP". Conferencia Aeroespacial IEEE de 2005. págs. 1–13 . doi : 10.1109/AERO.2005.1559600 . ISBN 0-7803-8870-4. S2CID 13447718 .
- ↑ Radmanesh, Mohammadreza; Kumar, Manish (2016-03-01). "Formación de vuelo de UAVs en presencia de obstáculos en movimiento mediante programación lineal entera mixta dinámica rápida" . Aerospace Science and Technology . 50 : 149–160 . Bibcode : 2016AeST...50..149R . doi : 10.1016/j.ast.2015.12.021 . ISSN 1270-9638 .
- ↑ Bast, Hannah; Brosi, Patrick; Storandt, Sabine (2017-10-05). "Generación eficiente de mapas de tránsito geográficamente precisos". arXiv : 1710.02226 [ cs.CG ].
- ↑ Scarf, Herbert E. (1981). "Conjuntos de producción con indivisibilidades, parte I: generalidades" . Econometrica . 49 (1): 1– 32. doi : 10.2307/1911124 . ISSN 0012-9682 . JSTOR 1911124 .
- 1 2 3 Lenstra, HW (1983-11-01). "Programación entera con un número fijo de variables" . Matemáticas de la investigación operativa . 8 (4): 538– 548. CiteSeerX 10.1.1.431.5444 . doi : 10.1287/moor.8.4.538 . ISSN 0364-765X .
- ↑ Amenta, Nina ; De Loera, Jesús A.; Soberón, Pablo (2017). "El teorema de Helly: nuevas variaciones y aplicaciones". En Harrington, Heather A .; Omar, Mohamed; Wright, Matthew (eds.). Actas de la Sesión Especial de la AMS sobre Métodos Algebraicos y Geométricos en Matemáticas Discretas Aplicadas, celebrada en San Antonio, TX, el 11 de enero de 2015. Contemporary Mathematics. Vol. 685. Providence, Rhode Island: American Mathematical Society. pp. 55–95 . arXiv : 1508.07606 . doi : 10.1090/conm/685 . ISBN 9781470423216MR 3625571 .
- ↑ Kannan, Ravi (1987-08-01). "El teorema del cuerpo convexo de Minkowski y la programación entera" . Matemáticas de la investigación operativa . 12 (3): 415– 440. doi : 10.1287/moor.12.3.415 . ISSN 0364-765X . S2CID 495512 .
- ↑ Goemans, Michel X. ; Rothvoss, Thomas (2020-11-07). "Polinomialidad para el empaquetamiento de contenedores con un número constante de tipos de artículos" . Journal of the ACM . 67 (6): 38:1–38:21. arXiv : 1307.5108 . doi : 10.1145/3421750 . hdl : 1721.1/92865 . ISSN 0004-5411 . S2CID 227154747 .
- ↑ Frank, András; Tardos, Éva (1987-03-01). "Una aplicación de la aproximación diofántica simultánea en la optimización combinatoria" . Combinatorica . 7 (1): 49– 65. doi : 10.1007/BF02579200 . ISSN 1439-6912 . S2CID 45585308 .
- ↑ Bliem, Bernhard; Bredereck, Robert; Niedermeier, Rolf (09/07/2016). «Complejidad de la asignación eficiente y libre de envidia de recursos: pocos agentes, recursos o niveles de utilidad» . Actas de la Vigésimo Quinta Conferencia Internacional Conjunta sobre Inteligencia Artificial . IJCAI'16. Nueva York, Nueva York, EE. UU.: AAAI Press: 102–108 . ISBN 978-1-57735-770-4.
- ↑ Bredereck, Robert; Kaczmarczyk, Andrzej; Knop, Dušan; Niedermeier, Rolf (17 de junio de 2019). «Asignación justa de alta multiplicidad: Lenstra potenciada por programación entera N-fold» . Actas de la Conferencia ACM de 2019 sobre Economía y Computación . EC '19. Phoenix, AZ, EE. UU.: Association for Computing Machinery. págs. 505–523 . doi : 10.1145/3328526.3329649 . ISBN 978-1-4503-6792-9. S2CID 195298520 .
- ↑ Dadush, Daniel (2012-06-14). "Programación entera, algoritmos reticulares y estimación de volumen determinista .
- ↑ Reis, Victor; Rothvoss, Thomas (26 de marzo de 2023). "La conjetura de la planitud del subespacio y la programación entera más rápida" .
- 1 2 Hildebrand, Robert (2016-10-07). "Algoritmo FPT para programa de enteros mixtos" . Theoretical Computer Science Stack Exchange . Recuperado el 2024-05-21 .
- ↑ Glover, F. (1989). "Búsqueda tabú - Parte II". ORSA Journal on Computing . 1 (3): 4– 32. doi : 10.1287/ijoc.2.1.4 . S2CID 207225435 .
- ↑ Koutecký, Martin; Levin, Asaf; Onn, Shmuel (2018). "Un algoritmo fuertemente polinomial parametrizado para programas enteros estructurados en bloques". En Chatzigiannakis, Ioannis; Kaklamanis, Christos; Marx, Dániel; Sannella, Donald (eds.). 45.º Coloquio Internacional sobre Autómatas, Lenguajes y Programación, ICALP 2018, 9-13 de julio de 2018, Praga, República Checa . LIPIcs. Vol. 107. Schloss Dagstuhl – Leibniz-Zentrum für Informatik. pp. 85:1–85:14. arXiv : 1802.05859 . doi : 10.4230/LIPICS.ICALP.2018.85 .
Lecturas adicionales
- George L. Nemhauser ; Laurence A. Wolsey (1988). Optimización entera y combinatoria . Wiley. ISBN 978-0-471-82819-8.
- Alexander Schrijver (1998). Teoría de la programación lineal y entera . John Wiley and Sons. ISBN 978-0-471-98232-6.
- Laurence A. Wolsey (1998). Programación entera . Wiley. ISBN 978-0-471-28366-9.
- Dimitris Bertsimas; Robert Weismantel (2005). Optimización sobre enteros . Ideas dinámicas. ISBN 978-0-9759146-2-5.
- John K. Karlof (2006). Programación entera: teoría y práctica . CRC Press. ISBN 978-0-8493-1914-3.
- H. Paul Williams (2009). Lógica y programación entera . Springer. ISBN 978-0-387-92279-9.
- Michael Jünger; Thomas M. Liebling; Denis Naddef; George Nemhauser ; William R. Pulleyblank ; Gerhard Reinelt; Giovanni Rinaldi; Laurence A. Wolsey, eds. (2009). 50 años de programación entera 1958-2008: desde los primeros años hasta el estado del arte . Springer. ISBN 978-3-540-68274-5.
- Der-San Chen; Robert G. Batson; Yu Dang (2010). Programación entera aplicada: modelado y solución . John Wiley and Sons. ISBN 978-0-470-37306-4.
- Gerard Sierksma; Yori Zwols (2015). Optimización lineal y entera: teoría y práctica . Prensa CRC. ISBN 978-1-498-71016-9.
- François Clautiaux; Ivana Ljubić (2024). "Los últimos cincuenta años de programación lineal entera: un enfoque en los avances prácticos recientes" . European Journal of Operational Research . 324 (3). INRIA : 707–731 . doi : 10.1016/j.ejor.2024.11.018 .Artículo de introducción.
Enlaces externos
- Un tutorial sobre programación entera
- Conferencia sobre Programación Entera y Optimización Combinatoria, IPCO
- Taller de Optimización Combinatoria de Aussois
- Optimización combinatoria
- problemas NP-completos