Un problema de programación de enteros es una optimización matemática o un programa de viabilidad en el que algunas o todas las variables están restringidas a números enteros . En muchos entornos, el término se refiere a la programación lineal de enteros (ILP), en la que la función objetivo y las restricciones (distintas de las restricciones de enteros) son lineales .
La programación de enteros es NP-completa . En particular, el caso especial de la programación lineal de enteros 0-1, en el que las incógnitas son binarias y solo deben satisfacerse las restricciones, es uno de los 21 problemas NP-completos de Karp .
Si algunas variables de decisión no son discretas, el problema se conoce como un problema de programación de enteros mixtos . [1]
En la programación lineal de enteros, la forma canónica es distinta de la forma estándar . Un programa lineal entero en forma canónica se expresa así (tenga en cuenta que es el vector el que debe decidirse): [2]
y un ILP en forma estándar se expresa como
donde son vectores y es una matriz, donde todas las entradas son números enteros. Al igual que con los programas lineales, los ILP que no están en forma estándar se pueden convertir a la forma estándar eliminando desigualdades, introduciendo variables de holgura ( ) y reemplazando las variables que no están restringidas por el signo con la diferencia de dos variables restringidas por el signo.
El gráfico de la derecha muestra el siguiente problema.
Los puntos enteros factibles se muestran en rojo, y las líneas punteadas rojas indican su casco convexo, 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 dada por las desigualdades sin la restricción de integralidad. El objetivo de la optimización es mover la línea punteada negra hacia arriba sin dejar de tocar el poliedro. Las soluciones óptimas del problema entero son los puntos y ambos tienen un valor objetivo de 2. El óptimo único de la relajación es con un valor objetivo de 2.8. Si la solución de la relajación se redondea a los números enteros más cercanos, no es factible para el ILP.
La siguiente es una reducción de la cobertura mínima de vértices a la programación entera que servirá como prueba de la dureza NP.
Sea un gráfico no dirigido. Defina un programa lineal de la siguiente manera:
Dado que las restricciones se limitan a 0 o 1, cualquier solución factible para el programa de números enteros es un subconjunto de vértices. La primera restricción implica que al menos un punto final de cada borde está incluido en este subconjunto. Por lo tanto, la solución describe una cobertura de vértice. Además, dada alguna cobertura de vértice C, se puede establecer en 1 para cualquiera y en 0 para cualquiera, lo que nos da una solución factible para el programa de números enteros. Así podemos concluir que si minimizamos la suma de también hemos encontrado la cobertura mínima de vértices. [3]
La programación lineal de enteros mixtos ( MILP ) implica problemas en los que solo algunas de las variables ,, están limitadas a ser enteros, mientras que otras variables pueden ser no enteros.
La programación lineal cero-uno (o programación de enteros binarios ) implica problemas en los que las variables están restringidas a 0 o 1. Cualquier variable de entero acotado se puede expresar como una combinación de variables binarias. [4] Por ejemplo, dada una variable entera , la variable se puede expresar usando variables binarias:
Hay dos razones principales para usar variables enteras al modelar problemas como un programa lineal:
Estas consideraciones ocurren con frecuencia en la práctica y, por lo tanto, la programación lineal entera se puede usar en muchas áreas de aplicaciones, algunas de las cuales se describen brevemente a continuación.
La programación de enteros mixtos tiene muchas aplicaciones en las producciones industriales, incluido el modelado de talleres. Un ejemplo importante que ocurre en la planificación de la producción agrícola implica determinar el rendimiento de la producción para varios cultivos que pueden compartir 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 se puede expresar en términos de un programa lineal, pero las variables deben restringirse para que sean enteras.
Estos problemas involucran la programación de servicios y vehículos en las redes de transporte. Por ejemplo, un problema puede implicar la asignación de autobuses o subterráneos a rutas individuales para que se pueda cumplir con un horario y también para equiparlos con conductores. Aquí, las variables de decisión binarias indican si un autobús o metro está asignado a una ruta y si un conductor está asignado a un tren o metro en particular. La técnica de programación cero-uno se ha aplicado con éxito para resolver un problema de selección de proyectos en el que los proyectos son mutuamente excluyentes y / o tecnológicamente interdependientes. Se utiliza en un caso especial de programación de enteros, en el que todas las variables de decisión son enteros. Puede asumir los valores como cero o uno.
El problema de la partición territorial o distrital consiste en dividir una región geográfica en distritos para planificar algunas operaciones considerando diferentes criterios o limitaciones. Algunos requisitos para este problema son: contigüidad, compacidad, equilibrio o equidad, respeto de los límites naturales y homogeneidad socioeconómica. Algunas aplicaciones para este tipo de problema incluyen: distritos políticos, distritos escolares, distritos de servicios de salud y distritos de gestión de residuos.
El objetivo de estos problemas es diseñar una red de líneas para instalar de modo que se cumpla un conjunto predefinido de requisitos de comunicación y el costo total de la red sea mínimo. [5] Esto requiere optimizar tanto la topología de la red como la configuración de las capacidades de las distintas líneas. En muchos casos, las capacidades están limitadas a cantidades enteras. Por lo general, existen, dependiendo de la tecnología utilizada, restricciones adicionales que pueden modelarse como desigualdades lineales con variables enteras o binarias.
La tarea de la planificación de frecuencias en las redes móviles GSM implica distribuir las frecuencias disponibles a través de las antenas para que los usuarios puedan ser atendidos y se minimice la interferencia entre las antenas. [6] Este problema se puede formular como un programa lineal entero en el que las variables binarias indican si una frecuencia está asignada a una antena.
La forma ingenua de resolver un ILP es simplemente eliminar la restricción de que x es un número entero, resolver el LP correspondiente (llamado relajación LP del ILP) y luego redondear las entradas de la solución a la relajación LP. Pero, no solo esta solución puede no ser óptima, puede que ni siquiera sea factible; es decir, puede violar alguna restricción.
Si bien, en general, no se garantiza que la solución para la relajación LP sea integral, si el ILP tiene una forma tal que where y tienen todas las entradas enteras y es totalmente unimodular , entonces cada solución básica factible es integral. En consecuencia, se garantiza que la solución devuelta por el algoritmo simplex es integral. Para mostrar que toda solución factible básica es integral, sea una solución factible básica arbitraria. Como es factible, lo sabemos . Sean los elementos correspondientes a las columnas base para la solución básica . Por definición de una base, hay alguna submatriz cuadrada decon columnas linealmente independientes tales que .
Dado que las columnas de son linealmente independientes y es cuadrada, no es singular y, por lo tanto, por supuesto, es unimodular y así . Además, dado que no es singular, es invertible y por tanto . Por definición, . Aquí denota el adjugado de y es integral porque es integral. Por lo tanto,
Por lo tanto, si la matriz de un ILP es totalmente unimodular, en lugar de utilizar un algoritmo de ILP, se puede utilizar el método simplex para resolver la relajación de LP y la solución será un número entero.
Cuando la matriz no es totalmente unimodular, existe una variedad de algoritmos que se pueden usar para resolver programas lineales enteros de manera exacta. Una clase de algoritmos son los métodos de plano de corte que funcionan resolviendo la relajación LP y luego agregando restricciones lineales que impulsan la solución hacia un número entero sin excluir ningún punto factible entero.
Otra clase de algoritmos son las variantes del método de bifurcación y vinculación . Por ejemplo, el método de ramificación y corte que combina los métodos de ramificación y enlazado y plano de corte. Los algoritmos de bifurcación y límite tienen una serie de ventajas sobre los algoritmos que solo utilizan planos de corte. Una ventaja es que los algoritmos se pueden terminar antes y siempre que se haya encontrado al menos una solución integral, se puede devolver una solución factible, aunque no necesariamente óptima. Además, las soluciones de las relajaciones LP se pueden utilizar para proporcionar una estimación del peor de los casos de qué tan lejos de la optimización se encuentra la solución devuelta. Por último, los métodos de bifurcación y vinculación se pueden utilizar para devolver múltiples soluciones óptimas.
Suponga que es una matriz entera m- por- n y es un vector entero m -por-1. Nos centramos en el problema de viabilidad, que consiste en decidir si existe un vector n -por-1 satisfactorio .
Sea V el valor absoluto máximo de los coeficientes en y . Si n (el número de variables) es una constante fija, entonces el problema de viabilidad se puede resolver de polinomio vez en m y log V . Esto es trivial para el caso n = 1. El caso n = 2 fue resuelto en 1981 por Herbert Scarf . [11] El caso general fue resuelto en 1983 por Hendrik Lenstra , combinando ideas de Laszlo Lovasz y Peter van Emde Boas . [12]
En el caso especial de 0-1 ILP, el algoritmo de Lenstra es equivalente a una enumeración completa: el número de todas las soluciones posibles es fijo (2 n ), y la verificación de la viabilidad de cada solución se puede hacer en el tiempo poly ( 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 geometría de números . Transforma el problema original en uno equivalente con la siguiente propiedad: o la existencia de una solución es obvia, o el valor de (la n -ésima variable) pertenece a un intervalo cuya longitud está limitada por una función de n. En el último caso, el problema se reduce a un número limitado de problemas de dimensiones inferiores.
El algoritmo de Lenstra implica que ILP se puede resolver en tiempo polinómico también en el caso dual, en el que n es variable pero m (el número de restricciones) es constante.
El algoritmo de Lenstra fue posteriormente mejorado por Kannan [13] y Frank y Tardos. [14] El tiempo de ejecución mejorado es , donde es el número de bits de entrada, [15] que está en . [16] : Prop.8
Dado que la programación lineal de enteros es NP-hard , muchas instancias de problemas son intratables y, por lo tanto, deben usarse métodos heurísticos en su lugar. Por ejemplo, la búsqueda tabú se puede utilizar para buscar soluciones a los ILP. [17] Para usar la búsqueda tabú para resolver ILP, los movimientos se pueden definir como incrementar o disminuir una variable con restricción de enteros de una solución factible mientras se mantienen constantes todas las demás variables con restricciones de enteros. 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 mediano plazo puede consistir en valores para las variables con restricciones enteras que han resultado en valores objetivos altos (asumiendo que el ILP es un problema de maximización). Finalmente, la memoria a largo plazo puede orientar la búsqueda hacia valores enteros que no se han probado previamente.
Otros métodos heurísticos que se pueden aplicar a los ILP incluyen
También hay una variedad de otras heurísticas específicas de problemas, como la heurística k-opt para el problema del vendedor ambulante. Una desventaja de los métodos heurísticos es que si no encuentran una solución, no se puede determinar si es porque no hay una solución factible o si el algoritmo simplemente no pudo encontrar una. Además, generalmente es imposible cuantificar qué tan cerca de la solución óptima devuelta por estos métodos está.
A menudo ocurre que la matriz que define el programa de números enteros es escasa . En particular, esto ocurre cuando la matriz tiene una estructura de bloques, que es el caso en muchas aplicaciones. La escasez de la matriz se puede medir de la siguiente manera. La gráfica de tiene vértices correspondientes a las columnas de , y dos columnas forman un borde si tiene una fila en la que ambas columnas tienen entradas distintas de cero. De manera equivalente, los vértices corresponden a variables y dos variables forman una arista si comparten una desigualdad. La medida de dispersión de es el mínimo entre la profundidad del árbol del gráfico de y la profundidad del árbol del gráfico de la transposición de . Sea la medida numérica de definida como el valor absoluto máximo de cualquier entrada de . Sea el número de variables del programa entero. Luego se demostró en 2018 [18] que la programación de enteros se puede resolver en un tiempo manejable fuertemente polinomial y de parámetro fijo parametrizado por y . Es decir, para alguna función computable y alguna constante , la programación de enteros se puede resolver a tiempo . En particular, el tiempo es independiente del lado derecho y de la función objetivo . Además, en contraste con el resultado clásico de Lenstra, donde el númerode variables es un parámetro, aquí el número de variables es una parte variable de la entrada.
|journal=
( ayuda )