Saltar al contenido
INVESTIGACIÓN DE OPERACIONES · UNAB 2026 · CAPÍTULO 01

Cubrir 500 clientescon el costo mínimo posible.

Un problema NP-difícil del paper de Karp resuelto con dos métodos opuestos: Branch & Bound exacto y un Algoritmo Genético. La diferencia: 83 veces más rápido por solo 1.61% de gap.

$49,988
PLE Branch & Bound · 600.96 s
22 / 23
antenas activadas · exacto / GA
7.23 s
Algoritmo Genético
Ver el paper completo
NICOLÁS MORENO · JULIAN ARTEAGA · MAYO 2026
CAPÍTULO 02 · EL PROBLEMA

500 antenas. 500 clientes. 250,000 decisiones binarias.

Cada cliente debe ser cubierto por al menos una antena. Cada antena tiene un costo. El objetivo: activar el subconjunto más barato que cubra a todos.

Es una instancia clásica del Set Cover Problem, uno de los 21 problemas NP-difíciles de Karp. El espacio de búsqueda es de 2^500 ≈ 3.27 × 10^150 subconjuntos posibles; más combinaciones que átomos en el universo observable.

La matriz de cobertura A ∈ {0,1}500×500 tiene una densidad del 9.99%: cada cliente queda en el radio de cobertura de entre 32 y 70 antenas. Los costos oscilan entre $ 2.000 y $ 3.998.

j = 1j = 500
Matriz de cobertura · sub-muestra 60×609.99% densidad · 24.971 unos
CubreNo cubre
sub-muestra 60×60 · proyección 8.33× del original
Total unos0celdas con cobertura
Cobertura promedio0,00rango: 32–70 antenas
Costo medio$ 0σ $ 593
Espacio de búsqueda··≈ 3.27 × 10¹⁵⁰
CAPÍTULO 03 · MODELO MATEMÁTICO

Una sola desigualdad, repetida 500 veces.

El modelo es de los más limpios de la literatura. Una función objetivo lineal, quinientas restricciones de cobertura, y la condición de binariedad sobre las variables de decisión.

Lo simple del enunciado contrasta con su dureza computacional: la integralidad es la que rompe la convexidad y dispara el costo del Branch & Bound.

Variables

500 binarias xj

Una por cada antena candidata. Vale 1 si la antena se activa, 0 en caso contrario. El cromosoma del algoritmo genético es exactamente este vector.

Restricciones

500 de cobertura · 500 de binariedad

Cada cliente queda forzado a recibir al menos una antena que lo cubra. La binariedad es la fuente del salto NP-difícil sobre la versión relajada.

LP relajada (cota inferior): $ 27.860 · Gap de integralidad: 79.43%

CAPÍTULO 04 · MÉTODO EXACTO · PROGRAMACIÓN LINEAL ENTERA

Diez minutos. Veintidós mil nodos. La mejor solución entera que MATLAB pudo certificar.

MATLAB intlinprog ataca el problema con Branch and Bound. Relaja la integralidad, resuelve el LP, ramifica sobre la variable fraccional más prometedora y poda toda rama cuya cota supere la mejor entera conocida.

Con un presupuesto de 600s el solver exploró 22,632 nodos. No probó optimalidad. Devolvió la mejor solución entera vista.

Lectura matemática

min cᵀx · s.a. Ax ≥ 1 · x ∈ {0,1}⁵⁰⁰

Exploración B&B22,632 nodos · 600.96s · gap 0.385%
Esquemático · top 25 nodos
ramas que pueden mejorarramas descartadasmejor entera encontrada
Árbol Branch and Bound · 22,632 nodos explorados en 600.96sx₂₈₃ = 1fix x₁₉₆x₄₄ = 1x₄₄ = 0LP relajada · cota inicial$27,859.93$31,402$32,210$33,118$38,710$41,025$44,902$40,108$43,544$42,887$45,201$46,330$47,902$50,440$48,118$49,605$48,544$49,210$51,002$52,418$50,772$49,988mejor entera · IntegerFeasible$51,114$50,181$53,420peor explorada · podada
Status
IntegerFeasible
no certificado óptimo
Costo
$ 49.988
mejor entera
|S| Antenas
22
activadas
Tiempo
600,96s
límite 600s
Nodos B&B
22.632
explorados
Gap residual
0,386%
brecha con la cota dual
CAPÍTULO 05 · ALGORITMO GENÉTICO

Una población. Cien y media de soluciones tentativas. Evolución hacia el mínimo.

El método metaheurístico no certifica optimalidad. A cambio explora el espacio combinatorio en segundos, no en minutos. La pregunta no es si llega al óptimo: es qué tan cerca llega y a qué costo.

Flujo del algoritmo · 7 etapas

Cada generación: evaluar fitness, seleccionar padres, cruzar, mutar, reparar, conservar élite, parar si estancamos.

  1. 01
  2. 02
  3. 03
  4. 04
  5. 05
  6. 06
  7. 07
ETAPA 1 DE 7

Inicialización

Población de 150 cromosomas binarios. Cada cromosoma es un subconjunto S de antenas candidatas. Semilla controlada para reproducibilidad.

Esquema
Parámetro
pop = 150
ETAPA 2 DE 7

Evaluación

Función de fitness penalizada. Costo total de S más penalización por clientes no cubiertos. Empuja hacia soluciones factibles.

Esquema
Parámetro
fitness = Σc + λ · faltantes
ETAPA 3 DE 7

Selección

Torneo binario. Dos cromosomas al azar, gana el de menor fitness. Mantiene presión selectiva sin colapsar diversidad temprana.

Esquema
Parámetro
torneo k = 2
ETAPA 4 DE 7

Cruce

Recombinación uniforme con probabilidad alta. Cada gen se hereda del padre A o B con probabilidad equitativa cuando hay cruce.

Esquema
Parámetro
p_c = 0.9
ETAPA 5 DE 7

Mutación

Bit-flip adaptativo. Empieza agresiva para explorar, decae para explotar. Cuida no perturbar al élite cuando el frente ya está pulido.

Esquema
Parámetro
p_m: 3% → 0.5%
ETAPA 6 DE 7

Elitismo

Las tres mejores soluciones pasan intactas a la siguiente generación. Garantiza monotonía: la mejor fitness nunca empeora generación a generación.

Esquema
Parámetro
elite = 3
ETAPA 7 DE 7

Estancamiento

Si la mejor solución no mejora durante 80 generaciones seguidas, el bucle termina. Ahorra evaluaciones cuando el frente ya está estable.

Esquema
Parámetro
paciencia = 80 gens
Paciencia
00 / 80
generaciones sin mejora
Hiperparámetros
Población
150
Generaciones (máx.)
500
Prob. cruce p_c
0.9
Prob. mutación p_m
3% → 0.5%
Elitismo
3
Criterio de parada
estancamiento 80 gens
Convergencia (gen)
95
Semilla
13
Resultado · seed 13
Costo
$ 50.795
mejor encontrada
|S| Antenas
23
activadas
Tiempo
7,23s
speedup ×83
Gap vs ILP
+1,61%
distancia al mejor entero

“Mejor semilla. seed 13. Convergió en gen 95.”

Bitácora de corridas · 5 semillas
CAPÍTULO 06 · CONVERGENCIA

La curva cae rápido. Después se queda quieta.

El GA hace la mayor parte del trabajo en las primeras 95 generaciones. Después solo pule. A los 175 estanca y devuelve.

Mejor fitness vs generaciónseed 13
Costo del GA por generación · convergencia en gen 95$52k$55k$60k$70kgen 0gen 50gen 95convergenciagen 175estancamientoCosto · COPGeneración$ 50.795mínimo del GAdescenso rápidomeseta · sin mejora↑ generación 0 · pob. aleatoria · costo ≈ $78.4k↘ ~70% del trabajo en las primeras 50 gens→ después del gen 95 nada cambia
Convergencia
95
Semilla
13
Tiempo
7,23s
Población
150

CAPÍTULO 07 · COMPARACIÓN

Dos métodos. Una respuesta práctica.

La diferencia se ve mejor con baseline-zoom. En escala completa, ambos costos parecen idénticos. La verdad está en el delta.

Costo
PLE · ILP$ 49.988
GA$ 50.795
|S|
PLE · ILP22 antenas
GA23 antenas
Tiempo
PLE · ILP600,96 s (10 min)
GA7,23 s
Gap
PLE · ILPref (0,386 % residual)
GA+1,61 %
Garantía
PLE · ILPIntegerFeasible
GAsin garantía

Costo · baseline-zoom desde $ 49.000

Comparación de costo PLE vs GA · baseline-zoom desde $49,000$49,5k$50,0k$50,5k$51,0k$49,988PLE · ILP$50,795GA+$807 · +1.61 %delta de costo
$ 49.000baseline$ 51.500

Eje Y truncado para revelar el delta real. No empieza en cero.

Speedup

83×

más rápido

El GA termina en 7,23 s. El PLE necesita 10 minutos completos y aún así no certifica el óptimo.

  • CardinalidadPLE 22·GA 23

    el GA usa 1 antena extra

  • Tiempo600 s·7.23 s

    GA es 83× más rápido

  • GarantíaIntegerFeasible·sin certificación formal

    el PLE acota residual a 0.386 %

Delta de costo

+$807

+1,61 %

Para producción a escala, la elección es obvia. El PLE fija el techo de calidad; el GA decide en segundos.

CAPÍTULO 08 · ROBUSTEZ

Cinco semillas. CV de 0.46%. El GA es estable.

Ejecutamos el mismo GA cinco veces, cambiando solo la semilla aleatoria. Mismo instance, mismos hiperparámetros, distintos puntos de partida en la búsqueda.

Cada corrida es una muestra independiente. El coeficiente de variación mide cuánto varía el resultado frente a la media. Por debajo del 1% se considera muy estable.

Distribución · 5 semillas · gap vs PLE-ILP

Δ best ($50.253) ↔ worst ($50.795) = $542 · 0,55 pp

Dot plot · gap del GA por semilla vs PLE-ILPPLE · ILP $49,988S1 · seed 7$50.253 · +0,53%S2 · seed 13$50.795 · +1,61%S3 · seed 42$50.253 · +0,53%S4 · seed 100$50.366 · +0,76%S5 · seed 999$50.546 · +1,12%
0.0 %1.0 %2.0 %

Media μ

$ 50.443

costo promedio de las 5 corridas

Desviación σ

$230,6

dispersión absoluta

CV

0,46 %

dispersión relativa · σ / μ

vs PLE · 0,386% residual

El coeficiente de variación es 0,46 %. En lenguaje plano: si volvés a correr el GA, la respuesta apenas se mueve.

CAPÍTULO 09 · CIERRE

Honestidad metodológica:

el exacto no es óptimo,

el genético no es perfecto.

Cada uno sirve para algo distinto.

Cuándo usar el PLE · ILP

Cuando puedes esperar y necesitas saber el mejor resultado posible.

  • Benchmark de calidad. Fija el techo de lo posible.
  • Certificación: el residual del 0.386% mide qué tan cerca estás del óptimo verdadero.
  • Validación de heurísticas nuevas antes de pasarlas a producción.

No en producción si hay timeout.

Cuándo usar el GA

Cuando el tiempo manda y un gap del 1 a 2 % es aceptable.

  • Producción a escala. Cuando el problema crece y el tiempo de respuesta es la restricción.
  • Decisiones rápidas: 7.23 s vs 10 min cambia el flujo operativo.
  • Sensibilidad alta a tiempo. Acepta el 1 a 2 % de gap como costo del realismo.

83× más rápido · CV 0.46 %

El mejor algoritmo no existe; existe el algoritmo que resuelve tu restricción más cara.
Nicolás Moreno + Julian ArteagaUNAB 2026
Ver el código en MATLAB