Metodologías visualizadas

Cómo resuelve el problemacada uno de los 4 enfoques

Simulaciones interactivas: aprieta play y observa cómo cada algoritmo construye su solución paso a paso. Mismo problema (8 ejecutivos · 3 gerentes), distintas estrategias, distintos resultados según el régimen.

⚠ Nota didáctica

Este mini-problema está deliberadamente saturado (demanda 455 min en zona 1 vs 430 disponibles · 330 min en zona 2 vs 220) para que las diferencias entre métodos se hagan visibles. En el problema real del informe (370 × 49 con sobre-oferta de capacidad) los 4 enfoques convergen al mismo óptimo. El régimen del problema (saturado vs holgado) define qué método aporta valor.

Glosario rápido: qué significa cada métrica

Las cuatro simulaciones reportan los mismos KPIs. Si vienes directo aquí (sin haber leído el informe principal), esto es lo que significa cada uno:

V

Valor agregado de la solución

Suma del valor $v_e$ de cada ejecutivo asignado. Es lo que el modelo busca maximizar.

$v_e = 1000 \cdot \#A_e + 100 \cdot \#B_e + 1 \cdot \#C_e$

Pesos elegidos para que 1 cliente A > 9 clientes B > 99 clientes C, alineado con la prioridad oficial.

te

Tiempo demandado por ejecutivo

Minutos al año que el ejecutivo $e$ requiere de su gerente para atender a todos sus clientes (suma de tiempos de venta + instrumentación + post-venta de cada producto).

En el mini-problema: entre 60 y 160 min.

ρ

Densidad valor/tiempo

$\rho_e = v_e / t_e$ — el valor por minuto que aporta el ejecutivo. La metodología Greedy ordena por esta cantidad.

A más densidad, más rentable es asignarlo cuando hay competencia por la capacidad.

Tg

Capacidad anual del gerente

Minutos disponibles del gerente $g$ para atender ejecutivos durante el año. Restricción dura: la suma de $t_e$ asignada nunca puede exceder $T_g$.

En el mini-problema: 180–250 min por gerente.

A · B · C

Categorías de cliente

Prioridad comercial. A = más rentable, C = menos. La métrica oficial $x/y$ del problema cuenta solo A+B asignados.

Los pills ABC en los simuladores indican el mix de cada ejecutivo.

H · T

Energía y Temperatura (solo SA)

$H = -V + \lambda \cdot \text{exceso}^2$ es la energía del Hamiltoniano (negativo de V más penalización por sobrecapacidad). $T$ es la temperatura que controla la exploración.

Minimizar $H$ ≡ maximizar $V$ con factibilidad.

📐 El problema de las simulaciones

8 ejecutivos · 3 gerentes · 2 zonas · capacidades saturadas para que las diferencias entre métodos se hagan visibles.

  • Zona 1: 5 ejecutivos demandan 455 min · 2 gerentes ofrecen 430 min → falta capacidad de 25 min.
  • Zona 2: 3 ejecutivos demandan 330 min · 1 gerente ofrece 220 min → falta capacidad de 110 min.
  • Óptimo factible: $V \approx 15{.}110$ (no es alcanzable asignar todos los ejecutivos).
🟢

Analítico (regla determinista)

Sin búsqueda · sin retroceso · una sola pasada

La estrategia más simple: ordena ejecutivos por prioridad de cliente (A→B→C→score) y los recorre en orden, asignando cada uno al primer gerente compatible que aún tenga capacidad libre.

Velocidad:
Paso 0 / 8
0
Asignados
0
Sin gerente

Lista ordenada por #A → #B → #C → score

Capacidad de los gerentes

Ventajas

  • Tiempo $O(n \log n)$, corre en milisegundos
  • Garantiza solución factible (cumple zona y capacidad)
  • Fácil de explicar a un comité no técnico
  • Reproducible: misma entrada → misma salida

Desventajas

  • No considera valor por minuto: gasta capacidad en ejecutivos costosos
  • Sin backtracking: si bloquea un gerente, no puede deshacer
  • Puede dejar capacidad ociosa cuando hay muchos ejecutivos pequeños
  • No es óptimo en problemas saturados
🔬 Preguntas analíticas que esta simulación responde
  • ¿Qué % de A logra asignar? Cuenta cuántos A entran de los 14 totales del mini-problema.
  • ¿Qué ejecutivos quedan sin gerente y por qué? Mira la zona y el tiempo demandado de los marcados en rojo.
  • ¿Cuánta capacidad queda ociosa al final? Suma de huecos en las barras de los gerentes.
  • ¿Cómo cambiaría el resultado si invierto el orden (score primero)? Test mental: ¿qué A se perderían?
🟡

Greedy densidad v/t

Prioriza ejecutivos por valor por minuto + best-fit

En vez de ordenar por #A, calcula la densidad ρ = v_e / t_e (valor por minuto) y la usa como prioridad. Para cada ejecutivo, en lugar del primer gerente compatible, elige el de menor capacidad libre suficiente (best-fit) — esto reduce fragmentación.

Velocidad:
Paso 0 / 8
0
Asignados
0
Frag. residual

Lista ordenada por ρ = v/t descendente

Capacidad de los gerentes (best-fit)

Ventajas

  • Mismo tiempo $O(n \log n)$ pero mejor uso de capacidad
  • Best-fit reduce fragmentación: deja huecos compactos
  • Cota teórica de aproximación factor 2 al óptimo
  • Excelente warm-start para el MILP

Desventajas

  • Sigue siendo miope: no anticipa decisiones futuras
  • Best-fit puede bloquear ejecutivos grandes que vienen después
  • No óptimo: en problemas frustrados deja métrica sobre la mesa
  • Sensible al criterio de densidad (cambiar ρ cambia el resultado)
🔬 Preguntas analíticas que esta simulación responde
  • ¿La densidad ρ = v/t ordena distinto que A→B→C? Compara las dos listas y nota qué ejecutivos suben/bajan.
  • ¿Best-fit deja huecos más pequeños que first-fit? El KPI de fragmentación mide los minutos residuales.
  • ¿Qué tan sensible es el resultado a los pesos $w_A, w_B, w_C$? Modificándolos cambia ρ y el orden.
  • ¿Cuál es el gap vs el óptimo del MILP? En este mini-problema los dos coinciden; en problemas más grandes el gap aparece.
🟠

MILP exacto (PuLP + CBC)

Programación entera mixta · garantía de óptimo global

Resuelve el problema exactamente: explora un árbol de configuraciones binarias con branch & bound. Cada nodo es una decisión (asignar o no un par ejecutivo–gerente). Las ramas se podan cuando su cota superior ya está por debajo de la mejor solución encontrada — eso evita explorar trillones de combinaciones.

⓵ Aviso didáctico: Las cotas numéricas de los nodos en este árbol son ilustrativas del concepto de poda, no provienen de resolver el mini-problema con un solver real. El propósito es visualizar cómo branch & bound recorre y descarta ramas. Para el problema real, ver el código en src/modelo_capacidad/models/milp.py.
Velocidad:
Nodo 0 / 14
0
Nodos explorados
0
Ramas podadas

Ventajas

  • Garantía formal de óptimo global (dentro del gap)
  • Modelado declarativo: agregar restricciones es trivial
  • CBC sólido en open source, no requiere licencia
  • Acepta warm-start del greedy para acelerar

Desventajas

  • NP-hard: tiempo crece exponencialmente con el tamaño
  • Difícil de explicar a no-técnicos (caja negra)
  • Sin diagnóstico físico (no hay calor específico ni susceptibilidad)
  • Sensible a la formulación: malos pesos → mala solución
🔬 Preguntas analíticas que esta simulación responde
  • ¿Cuántos nodos exploré vs el total posible $2^N$? En el ejemplo 4 explorados de 14 → poda del 71%.
  • ¿Qué porcentaje de poda logra el bound? Un bound apretado poda más temprano.
  • ¿Cómo escala el árbol al duplicar N? Mide crecimiento empírico vs el peor caso teórico.
  • ¿Vale la pena un warm-start con greedy? Si la solución inicial está cerca del óptimo, se podan más ramas.
🔴

Simulated Annealing (MCMC)

Cadena de Markov · regla de Metropolis · Hamiltoniano de Ising

Mapea el problema a un Ising spin glass con campo externo y minimiza la energía $H(\sigma)$ con una cadena MCMC. En cada paso propone un movimiento aleatorio (flip o swap), acepta con probabilidad $\min(1, e^{-\Delta H / T})$ y reduce $T$ progresivamente. Empieza caótico (acepta casi todo), termina determinista (acepta solo mejoras).

Velocidad:
Paso 0 / 200
5000
Temperatura T
0
Energía H
0%
Tasa aceptación
0
Mejor V

Termómetro · enfriamiento

T = 5000
$\alpha = 0.99$ · cooling geométrico

Energía vs paso (en vivo)

Movimientos de la cadena MCMC

Ventajas

  • Siempre devuelve solución factible, incluso si lo cortas
  • Escala lineal con tiempo asignado (no exponencial)
  • Diagnósticos físicos únicos: calor específico, susceptibilidad
  • Acepta restricciones blandas (penalización cuadrática)
  • Mapeable a hardware quantum annealer (D-Wave)

Desventajas

  • Estocástico: dos corridas pueden dar resultados distintos
  • Sensible a parámetros: $T_{\max}$, $\alpha$, vecindario
  • No hay garantía formal de óptimo (solo asintótica)
  • Cooling lento puede tardar más que MILP en problemas pequeños
🔬 Preguntas analíticas que esta simulación responde
  • ¿La tasa de aceptación cae de ~80% a ~5%? Es la firma de un cooling correcto.
  • ¿La energía $H$ se aplana al final? Plateau = convergencia; oscilación = enfriamiento insuficiente.
  • ¿Cuántas réplicas necesito para acotar la varianza? Repite con seeds distintos y mide $\sigma(V_{\text{best}})$.
  • ¿El sistema muestra transición de fase? Pico en calor específico $C(T)$ marca $T_c$; aquí no aparece (problema sin frustración fuerte).
  • ¿Qué tan robusta es la solución a cambios de $w_A, w_B$? La susceptibilidad $\chi$ lo cuantifica.

Comparativa de las 4 metodologías

Para nuestro problema concreto (370 ejecutivos × 49 gerentes con sobre-oferta de capacidad), los cuatro convergen al mismo óptimo $x/y = 0.4076$. La elección depende del contexto operativo, no de la métrica.

Aspecto 🟢 Analítico 🟡 Greedy 🟠 MILP 🔴 SA / MCMC
Tiempo0.06 s0.06 s0.49 s~3 s
Garantía de óptimoNoNoSí (formal)Asintótica
DeterminismoNo (estocástico)
Escalabilidad$O(n \log n)$$O(n \log n)$ExponencialLineal
ExplicabilidadTrivialAltaMediaBaja
Diagnósticos físicosNoNoNo$C(T)$, $\chi(T)$
Restricciones blandasNoNoDifícilNatural
Cuándo elegirloDemos a comitéProducción diariaCierre regulatorioAuditoría / análisis sensibilidad
Insight

Para este problema, el modelo más simple basta para producción. Los enfoques sofisticados (MILP, SA) son seguros conceptuales y diagnósticos: validan que la solución simple es óptima y revelan cuándo el problema cambia de naturaleza.

Lecciones de jugar con las simulaciones

Más allá de los algoritmos en sí, las simulaciones permiten extraer insights estructurales sobre el problema de asignación con capacidad. Tres aprendizajes principales:

El régimen del problema importa más que el algoritmo

En este mini-problema saturado (demanda 1.6× la oferta), los métodos divergen. En el problema real (oferta 1.4× demanda), convergen. Antes de elegir algoritmo, mide el ratio demanda/oferta.

La heterogeneidad de ejecutivos define el aporte de Greedy

Si todos los ejecutivos tuvieran la misma densidad $v/t$, Greedy = Analítico. La varianza de $\rho_e$ mide cuánto valor agrega ordenar por densidad. Un coeficiente de variación < 0.1 dice "no vale la pena".

SA aporta diagnóstico, no solo solución

La curva de enfriamiento $\langle H\rangle(T)$ y la tasa de aceptación revelan la topología del paisaje energético. Si hay plateau largo + caída brusca → transición de fase. Si la aceptación cae monótonamente → no hay frustración. Esto no lo da MILP.

Tabla de preguntas analíticas por nivel

Nivel de pregunta Ejemplo Mejor método
Descriptiva¿Cuántos clientes A logro asignar?Cualquiera
Comparativa¿Hay gap entre lo simple y lo óptimo?Greedy + MILP
Sensibilidad¿Qué pasa si subo $w_A$ a 1500?SA (susceptibilidad $\chi$)
Robustez¿La solución es estable entre runs?SA (replicas)
Estructural¿El problema tiene frustración intrínseca?SA (calor específico $C$)
Existencial¿Existe una asignación mejor?MILP (única respuesta formal)
Operativa¿Puedo correr esto cada día?Greedy
🎯 Cierre analítico

Las simulaciones no se eligen por su métrica final, se eligen por la pregunta que necesitas responder. En el problema real (informe principal) los 4 métodos producen el mismo $x/y = 0.4076$ — pero solo el SA te dice si esa solución es robusta a cambios de pesos, y solo el MILP te certifica que no hay otra asignación mejor.