El método central para problemas enteros (MILP): relajación lineal como cota, envoltura convexa, incumbente, los tres tipos de poda, GAP de optimalidad, orden de exploración y matriz totalmente unimodular. Cae siempre en el Examen y también en la I2.
Cuando un modelo exige variables enteras (ILP) o binarias (MILP), el conjunto factible deja de ser un poliedro continuo y pasa a ser un conjunto de puntos discretos. El Simplex recorre vértices de un poliedro continuo, así que no aplica directo: su óptimo suele caer en un punto con coordenadas fraccionarias que no es una solución entera válida.
La estrategia de Branch & Bound (ramificar y acotar) es el método central para MILP. Se apoya en tres movimientos: relajar la integralidad, ramificar sobre una variable fraccionaria y acotar/podar ramas que no pueden mejorar lo que ya tenemos.
Si borramos la exigencia de integralidad (dejamos x∈R en vez de x∈Z), obtenemos la relajación lineal, un LP que el Simplex sí resuelve. Su óptimo es una cota del óptimo entero: superior en un problema de maximización, inferior en uno de minimización (porque relajar amplía el factible, nunca puede dar algo peor que el entero).
La relajación ideal sería la envoltura convexa de los puntos enteros factibles: el menor conjunto convexo que los contiene. Si pudiéramos describirla con desigualdades lineales, el Simplex daría directo el óptimo entero (sus vértices ya serían enteros). No la conocemos explícitamente, pero tanto B&B como los planos cortantes buscan acercarse a ella.
El esqueleto mental de B&B: resolver el LP relajado (da una cota) → si sale entero, listo → si sale fraccionario, partir en dos por una variable decimal y repetir en cada rama, podando lo que no promete.
Si la relajación de un nodo da, por ejemplo, xj=4,5, ese valor es imposible en el entero. Ramificamos creando dos subproblemas excluyentes que juntos cubren todos los enteros pero descartan el intervalo fraccionario:
Cada rama es un nuevo LP (el mismo problema más esa cota extra). El proceso genera un árbol de subproblemas.
La incumbente es la mejor solución entera factible encontrada hasta el momento. Empieza vacía (o en ±∞) y se actualiza cada vez que un nodo entrega una solución entera mejor. Es la cota del óptimo por el lado opuesto a la relajación.
Una rama se poda —se cierra sin seguir ramificando— por una de tres razones:
La poda por cota es la que hace eficiente a B&B: descarta ramas enteras sin resolverlas. Pero solo funciona si ya tienes una incumbente con la cual comparar; por eso conviene encontrar pronto una buena solución entera.
En un problema de max, el z de un nodo padre es cota superior del z de sus hijos (agregar restricciones solo puede empeorar la relajación).
El GAP de optimalidad mide la distancia entre lo que ya tenemos y lo mejor que aún es posible, usando dos cotas:
Solvers como Gurobi usan el GAP relativo para detenerse antes (parámetro MIPGap): cuando el gap ya es tolerable, cortan sin cerrar todo el árbol. GAP =0 certifica optimalidad.
En un min: la incumbente es cota superior (una solución factible real) y la mejor cota es el mínimo z relajado entre los nodos vivos (cota inferior). El gap se cierra desde ambos lados.
En un árbol de minimización con raíz z∗=−56,4, la rama P1 (z∗=−55,5) se abre en P11 (z∗=−54, entero x∗=(6,0,0)) y P12 (z∗=−52,6); la rama P2 da la primera incumbente (z=−48).
Tras recorrer PR→P2→P1→P11: P2 fija la incumbente en −48, y P11 la mejora a −54. El único nodo vivo es P12, que aún no se evalúa y hereda la cota de su padre P1 (−55,5). Entonces:
El orden de exploración no cambia el óptimo, pero sí cuánto trabajo cuesta. Si un nodo con solución entera se resuelve antes que un hermano de peor cota, ese hermano se poda por cota de inmediato. Resuelto al revés, el hermano se ramifica innecesariamente. (Truco de examen: si en el árbol un nodo sí fue ramificado pese a tener peor cota que una hoja entera, es que se exploró antes que ella.)
A veces la relajación lineal ya entrega una solución entera sin ramificar nada. Eso ocurre cuando la matriz de restricciones A es totalmente unimodular (TU).
Si A es TU y el vector b es entero, entonces todos los vértices del poliedro son enteros, así que la relajación lineal ya da una solución entera — no hace falta B&B. Muchas matrices de redes (incidencia nodo-arco, transporte, asignación) son TU, y por eso esos modelos se resuelven con Simplex puro.
Si un enunciado te pide justificar por qué un modelo de redes entero se puede resolver con Simplex sin ramificar, la respuesta es matriz TU + b entero. Si A no es TU, la relajación puede ser fraccionaria y ahí sí recurres a B&B o planos cortantes.
Cuando no quedan nodos activos (todo está podado por alguna de las tres razones), la incumbente es óptima. Ese agotamiento del árbol es la demostración formal de optimalidad.
Cómo saber si un árbol es de max o min sin que te lo digan: mira si el z∗ de las relajaciones baja al descender (max, la cota superior se aprieta hacia abajo) o sube (min). Restringir siempre empeora la relajación.