Introducción

[Restauración de volumen] [Restauración de volumen] [Restauración de datos] [Restaurante de trabajo] [Restaurante de trabajo] [Restaurante de trabajo] [Restaurante de trabajo] [Restaurante de trabajo] [Restaurante de trabajo]

¿Qué es la descomposición de Benders?

La descomposición de los benefactores es un método de generación de filas diseñado para resolver problemas de optimización con una estructura que puede dividirse en dos etapas: una primera etapa implica variables "complicantes" (a menudo enteros o binarios), y una segunda etapa implica variables que, cuando las variables de primer nivel se fijan, producen un subproblema lineal o convexo continuo.

Históricamente, la descomposición de Benders se desarrolló para la programación lineal de entero mixto (MILP). Con el tiempo, se ha extendido a problemas de optimización no lineales, estocásticos y robustos. En la programación estocástica, por ejemplo, el problema maestro captura decisiones de primera etapa, mientras que cada escenario forma un subproblema; Los recortes de Benders luego vinculan los escenarios.

Los pasos básicos de la descomposición de los Benders

Aplicando la descomposición de Benders a un problema de programación entero sigue un procedimiento iterativo bien definido. Se supone que el problema original tiene la estructura:

  • ]Master problem (MP): Contiene las variables enteros x ANTE Zn y una variable auxiliar θ que representa el costo o valor esperado del subproblema, pocos pueden reducirse inicialmente.
  • [LT] [FLT] [FLT]] [Subproblema (SP):[FLT: 1] Para una asignación fija x k del MP, el SP resuelve un programa lineal continuo (o programa convexo) sobre las variables continuas restantes y[LT] [LT] [LT]]

El algoritmo iterativo procede de la siguiente manera:

  1. ]Initializar:] Establecer el contador de iteración k] = 1. Elija un factible inicial x 1 [a menudo de la resolución del MP sin cortes, si es posible].
  2. [LT:0] [FLT] [FLT] [24] [FLT] [FLT] [22] [FLT] [4] [FLT] [4]] [FLT] [4] [4] [FLT] [4] [FLT] [4]] [FLT] [4]]
  3. Añadir corte al problema maestro: Apéndice el corte recién generado al MP.
  4. ]Solver el problema maestro: Resolver el MP (que ahora incluye todos los cortes generados hasta ahora) para obtener un nuevo candidato x k+1] y un límite inferior actualizado (el objetivo óptimo del MP). El valor superior se puede obtener del valor SP.
  5. Ver convergencia: Si el límite superior y el límite inferior están suficientemente cerca (dentro de una tolerancia), deténgase. De lo contrario, el incremento k] y el regreso al paso 2.

Este proceso está garantizado para converger a una solución óptima en un número finito de iteraciones para problemas MILP, porque el número de posibles cortes es finito (aunque potencialmente grande). En la práctica, técnicas avanzadas como Cortes de par a optimal y ]] Fortalecimiento de corte basado en la densidad] se utilizan para acelerar la convergencia.

Formulación matemática y un ejemplo simple

Para recortar la discusión, considere un problema de ubicación de instalaciones clásicas. Las decisiones de primera etapa son binarias: instalaciones abiertas o no abiertas. Las decisiones de segunda etapa asignan a los clientes a abrir instalaciones para minimizar el costo del transporte. El MILP monolítico puede ser descompuesto en un problema maestro que decide qué instalaciones para abrir y un subproblema que computa la asignación óptima para ese conjunto fijo.

Más generalmente, supongamos que el problema original es:

min cTx + f(y)
]s.t. A x + B y ≥ b
x ANTE {0,1}n], y ≥ 0

Después de fijar x, el subproblema sobre y es un programa lineal (LP). Su dual produce un rayo de puntos extremos. El corte de la óptimaidad se deriva del punto extremo dual, mientras que los rayos extremos producen cortes de viabilidad.

min cTx + θ
s.t. (cortamientos de viabilidad), (cortamientos de optimización)
x ANTE {0,1}n, θ free

Esta separación a menudo produce enormes ahorros computacionales porque el LP subproblema puede ser resuelto de manera muy eficiente incluso para un gran número de variables continuas.

Ventajas de la descomposición de los Benders

La descomposición de los benefactores trae varios beneficios concretos a los practicantes:

  • Complejidad computacional reducida: Al aislar las variables enteros, la explosión combinatoria se limita a un problema maestro más pequeño. El subproblema continuo, que puede implicar decenas de miles de variables, se resuelve rápidamente mediante programación lineal.
  • ]Scalability: Los problemas con millones de variables continuas y sólo unas pocas variables de entero se vuelven trajibles. Esta estructura es común en el diseño de red, optimización de cadenas de suministro y expansión de la capacidad.
  • Flexibilidad: El método puede manejar extensiones estocásticas (subproblemas basados en escenarios) y optimización robusta (subproblemas convexas o incluso no convexas, siempre y cuando se aplique la dualidad). También puede combinarse con preprocesos acelerados mediante cortes de piscina.
  • Oportunidades de paralización: Las subproblemas en diferentes iteraciones (o en escenarios) pueden ser resueltas independientemente, permitiendo la computación paralela para reducir el tiempo de pared.
  • Warm-starting: Si se conoce una buena solución inicial de enteros, el problema maestro puede ser sembrado con un pequeño conjunto de cortes prometedores, acelerando la convergencia.

Estas ventajas hacen que la descomposición de Benders sea un método preferido en muchos entornos industriales donde el tiempo de solución es crítico.

Desafíos y estrategias de mitigación

A pesar de su poder, la descomposición de Benders no es una panacea. Los practicantes deben estar conscientes de varios obstáculos comunes y adoptar estrategias para mitigarlos:

Convergencia lenta

[LT] El problema de la adiestramiento de los bendedores suele requerir muchas iteraciones, porque cada corte sólo proporciona una aproximación local. El límite inferior puede mejorar muy lentamente. Para acelerar la convergencia, los investigadores han desarrollado Pareto-optimal cut [también llamado

Problema maestro deficiente

Comenzar con un problema maestro vacío (sin cortes) puede llevar a un punto inicial infeasible o una convergencia extremadamente lenta. Un arreglo común es generar recortes de viabilidad de una heurística o de la relajación del LP. Algunos solvers generan automáticamente una pequeña piscina de cortes iniciales mediante la resolución del subproblema con unos pocos candidatos x[FLT]

Problema maestro grande IP

Si las variables del entero son numerosas, el problema maestro todavía puede ser difícil de resolver. En tales casos, Benders (también llamado descomposición multietapa) se puede utilizar, donde el maestro está más descompuesto. Alternativamente, ]branch y Benders cut[] integra el marco de búsqueda cortado directamente

Estabilidad numérica

Las soluciones duales del subproblema pueden ser degeneradas, produciendo cortes con grandes coeficientes que causan problemas numéricos. Escalar el problema y utilizar un sólido solucionador de LP (por ejemplo, método de barrera con cruce) puede ayudar. Además, técnicas cortadas de elevación pueden derivar desigualdades más fuertes y numéricamente estables.

Infeasibilidad

Cuando el subproblema es infesible para un determinado x]k, se debe generar un corte de viabilidad. Este corte se deriva del doble rayo extremo del LP infesible. En algunas formulaciones (por ejemplo, sin limitaciones de “grande M”), la combinación de la subproblema puede ser muy útil

Aplicaciones en la industria

La descomposición de los benefactores se ha aplicado con éxito en numerosos contextos del mundo real:

  • Diseño de Red de Cadenas Supply: Las decisiones estratégicas (ubicación de la familia, selección de tecnología) son variables más complejas, mientras que las decisiones de flujo operativo son continuas. La descomposición de Benders maneja problemas con cientos de posibles instalaciones y millones de asignaciones de clientes.
  • Planificación del sistema energético: En expansión de la generación de energía, el maestro decide qué generadores construir (integer) y el subproblema envía generadores existentes para satisfacer la demanda durante muchos períodos de tiempo (continua). Las versiones estocásticas incorporan una demanda incierta y una producción renovable.
  • Diseño de red de telecomunicaciones: Instalar enlaces y equipos (integer) contra el tráfico de enrutamiento (continua) encaja perfectamente en el marco de Benders.
  • Logistics and Transportation: Los problemas de talla y de enrutamiento de vehículos suelen utilizar Benders para separar la composición de la flota de las decisiones de enrutamiento.
  • Planificación de la producción y programación: Los problemas de tamaño y asignación de máquinas se benefician de la descomposición de variables de configuración (binarias) de las cantidades de producción (continua).

Cada aplicación aprovecha la ventaja principal: al ocultar la estructura continua dentro de un LP, la dificultad combinatoria se localiza en el programa maestro entero.

Comparación con otros métodos de descomposición

La descomposición de los benefactores se compara con otros enfoques de descomposición:

  • Descomposición de Dantzig-Wolfe: Este método funciona por generación de columnas, dividiendo el problema en un maestro que coordina combinaciones convexas de soluciones de subproblema. Mientras Dantzig-Wolfe es poderoso para problemas con estructura de bloque-angular, normalmente requiere resolver un maestro no lineal (a través de limitaciones de convexidad).
  • Relajación lagrangia: En la relajación lagrangiana, las limitaciones complicantes se dualizan, y el problema resultante es a menudo más fácil de resolver. Sin embargo, proporciona sólo un límite inferior para problemas de minimización; encontrar el entero óptimo, heurístico o un esquema de rama y límite debe ser añadido.
  • Branch and Cut: Los solvers modernos MILP dependen de rama y corte, lo que añade dinámicamente desigualdades válidas (cortes) durante un árbol ramificado y con límites. Los recortes de los benders pueden considerarse una clase especial de desigualdades válidas. De hecho, branch y los benders cut combinan ambos:

Cada método tiene sus fortalezas, pero la descomposición de Benders sigue siendo el método de elección cuando el problema exhibe una estructura natural de dos etapas con variables de primera etapa entero y una gran segunda etapa continua.

Consideraciones de la aplicación

La implementación de la descomposición de Benders requiere de la atención a varios detalles prácticos:

  • Solver choice: El problema maestro (integer) se puede resolver con un solucionador MILP como Gurobi, CPLEX o SCIP. El subproblema (LP) se beneficia de un rápido solucionador de LP; muchos modernos solucionadores MILP también permiten soluciones de LP eficientes sin cargar el modelo completo cada vez.
  • Estrategia de generación de corte: En lugar de añadir un corte por iteración, a menudo es beneficioso añadir múltiples cortes (por ejemplo, uno de cada punto extremo de la dual). Además, Los cortes de rotación ] deben implementarse para acelerar la convergencia.
  • Formulación de problemas másteres: La variable auxiliar ] θ debe tener un límite inferior obvio (por ejemplo, el valor de relajación del LP) para evitar las iteraciones maestras sin límites. Añadiendo una solución de arranque caliente puede reducir considerablemente el recuento de iteración.
  • Criterios de selección: Usar una brecha relativa o absoluta (por ejemplo, 0,1%). Pero en algunas aplicaciones, una solución casi óptima es aceptable, por lo que la tolerancia puede ser relajada.
  • Debugging:] Un error común está generando cortes incorrectos debido a la doble degeneración o malinterpretación. Siempre verificar que el corte es válido probando el problema original. Logging iteration cuenta y mejoras enlazadas ayuda a diagnosticar una lenta convergencia.

Para una guía de implementación completa con ejemplos de código en Python, el Gurobi Benders Ejemplo es un recurso valioso. Adicionalmente, la documentación IBM ILOG CPLEX sobre el algoritmo Benders proporciona información sobre la descomposición manual de vs.

Conclusión

La descomposición de los benders es una técnica de prueba de tiempo para resolver problemas de programación de enteros a gran escala que muestran una separación entre decisiones discretas y continuas. Al romper el problema en un programa de entero maestro y combinar uno o más subproblemas continuos, reduce la complejidad computacional, mejora la escalabilidad y se puede adaptar a las variantes estocásticas y robustas.