Visa Predict AI

Optimización triobjetivo de Green Cards con MOHHO

¿Qué es Visa Predict AI?

Visa Predict AI es un proyecto de investigación que aplica inteligencia artificial para repensar cómo se reparten las 140,000 Green Cards de empleo que Estados Unidos otorga cada año.

El problema: El sistema actual (FIFO) atiende por orden de llegada, pero no considera la demanda real. Un ingeniero de India puede esperar más de una década, mientras países con poca demanda reciben visas en meses. Además, el FIFO desperdicia 17,540 visas que quedan sin asignar porque ningún país elegible tiene solicitantes suficientes en esa categoría.

Nuestra propuesta: Usamos un algoritmo bio-inspirado llamado MOHHO (Multi-Objective Harris Hawks Optimization) que busca optimizar tres objetivos simultáneamente:
▸ f₁ Reducir la espera promedio ponderada    ▸ f₂ Tratar a todos los países con equidad    ▸ f₃ Maximizar la utilización (cero visas desperdiciadas)

El resultado: 406 escenarios alternativos de reparto, cada uno con un balance diferente entre estos tres objetivos. Ninguno es "el mejor" en todo — el tomador de decisiones elige según sus prioridades.

¿Cómo Funciona MOHHO?

Los halcones de Harris son las únicas aves rapaces que cazan en grupo de forma cooperativa. Rodean a su presa, la acorralan y atacan desde múltiples ángulos.

El algoritmo HHO imita esta estrategia: un grupo de "halcones virtuales" explora el espacio de posibles repartos de visas. Cada halcón representa una forma diferente de distribuir las 140,000 visas. Comparten información y convergen hacia las mejores soluciones.

La Caza Multiobjetivo

En la naturaleza, los halcones de Harris tienen un solo objetivo: atrapar a la presa. En nuestro problema, la "presa" tiene tres dimensiones — hay que perseguirla en tres direcciones a la vez.
f₁ Reducir espera
Un grupo de halcones persigue soluciones que minimicen la espera promedio. Priorizan a India y China, que llevan más años en la fila.
f₂ Igualar países
Otro flanco ataca la disparidad: buscan repartos donde ningún país espere mucho más que otro. Sacrifican velocidad por justicia.
f₃ Cero desperdicio
El tercer ángulo busca usar todas las visas. Reasignan visas que el FIFO dejaría vacantes por topes de país o categoría.
El dilema: Ningún halcón puede "atrapar" los tres objetivos a la vez. Reducir la espera (f₁) puede aumentar la disparidad (f₂) o desperdiciar visas (f₃). Por eso el algoritmo no busca una solución perfecta, sino un frente de Pareto — 406 compromisos diferentes donde mejorar un objetivo inevitablemente empeora otro.

Pipeline del Algoritmo

Halcón
50 halcones con vectores de 105 números entre 0 y 1
Cada halcón es una propuesta de reparto
SPV
Convertir números decimales a un orden de prioridad
Quién va primero en la fila de visas
Decoder
Repartir visas respetando las 6 reglas legales
Asignación factible garantizada
Evaluar
Calcular f₁ (espera), f₂ (brecha) y f₃ (desperdicio)
Qué tan buena es esta solución
Pareto
Guardar las soluciones que nadie puede superar
406 compromisos óptimos
Este ciclo se repite 500 veces por corrida, y se ejecuta 30 corridas con semillas diferentes para verificar consistencia.

Las 6 Estrategias de los Halcones

Exploración
|E| ≥ 1
Buscar en zonas nuevas del espacio. Los halcones vuelan lejos del grupo, como scouts que exploran territorio desconocido.
Asedio suave
|E| < 1, |E| ≥ 0.5, r ≥ 0.5
Rodear la presa desde lejos. Los halcones ajustan su posición gradualmente hacia la mejor solución conocida.
Asedio duro
|E| < 1, |E| < 0.5, r ≥ 0.5
Acercarse rápidamente a la presa. Movimientos más agresivos hacia la solución líder.
Picada suave con Lévy
|E| < 1, |E| ≥ 0.5, r < 0.5
Simular que la presa escapa y recalcular. Incluye vuelos de Lévy para dar saltos largos y evitar quedarse atrapado.
Picada dura con Lévy
|E| < 1, |E| < 0.5, r < 0.5
Ataque final: movimiento preciso con vuelo de Lévy hacia la posición óptima.
Vuelo de Lévy
Componente especial
Patrón de movimiento con pasos largos ocasionales — como un halcón que de repente vuela lejos del grupo para cubrir más terreno.
La Energía de Escape (E) controla la transición. E = 2·E₀·(1 − t/T), donde E₀ ∈ [−1, 1] es aleatorio. Al inicio, |E| puede alcanzar hasta 2 (exploración amplia); conforme avanzan las iteraciones, la amplitud decrece hasta 0 (explotación pura). Esto permite al algoritmo primero explorar ampliamente y luego refinar las mejores soluciones.

Parámetros del Experimento

Población
50
Cuántos halcones buscan simultáneamente.
¿Por qué este valor? Heidari et al. (2019) recomiendan N=30-50 para problemas de dimensión media. Con dim=105 (nuestros 105 grupos), 50 halcones dan suficiente diversidad sin desperdicio computacional. Regla empírica: N ≈ 0.5×dim.
Iteraciones
500
Rondas de caza que completa cada corrida.
¿Por qué este valor? 500 iteraciones garantizan convergencia: nuestras curvas de hipervolumen se estabilizan al 95% del valor final antes de la iteración 100. Las 400 restantes permiten explotación fina (Ops 3-6 de HHO). En metaheurísticas, T=500 es estándar para asegurar que el resultado no dependa de parar demasiado pronto.
Archivo Pareto
100
Capacidad máxima de soluciones no dominadas.
¿Por qué este valor? 100 es el valor canónico en MOEA/D y NSGA-II (Deb et al., 2002). Suficiente para representar un frente triobjetivo con buena diversidad. Si se llena, se poda por crowding distance — se eliminan las soluciones más apretadas, conservando los extremos y el knee (punto de equilibrio).
Corridas independientes
30
Repeticiones con diferentes semillas aleatorias.
¿Por qué este valor? 30 corridas es el mínimo recomendado por Derrac et al. (2011) para aplicar pruebas estadísticas no paramétricas (Wilcoxon, Mann-Whitney). Con 30 muestras el Teorema Central del Límite justifica intervalos de confianza sobre la media del hipervolumen. Semillas consecutivas: 42, 43, ..., 71.
Visas disponibles (V)
140,000
Total de visas EB por año fiscal.
¿Por qué este valor? Establecido por la Ley de Inmigración y Nacionalidad (INA) §201(d). No es un parámetro libre — es un dato fijo del gobierno de EE.UU. Se mantiene en 140,000 desde 1990. Es la restricción R1 del modelo.
Grupos (G)
105
21 países × 5 categorías EB.
¿Por qué este valor? Cada combinación país-categoría es una variable de decisión (x₁ a x₁₀₅). El halcón genera un vector de 105 valores continuos en [0,1], que el SPV convierte en permutación y el decoder traduce a asignación factible. dim=105 define el tamaño del espacio de búsqueda.
Países analizados
21
20 países con mayor demanda + 'Resto del Mundo'.
¿Por qué este valor? Se seleccionaron los 20 países con mayor backlog documentado por USCIS (Visa Bulletin). El bloque 'Resto del Mundo' agrupa ~175 países con demanda individual pequeña. Estos 21 bloques representan >99% de la demanda total de visas EB.
Límite por país
25,620
7% del total de visas de inmigración (366,000).
¿Por qué este valor? INA §202(a)(2): ningún país puede recibir más del 7% del total de visas de inmigración (familiares + empleo = 366,000). 366,000 × 0.07 = 25,620. Es la causa estructural del problema: India genera más de la mitad de la demanda EB pero recibe máximo 7%. Esto crea colas de décadas.

Equipo y Créditos

Investigadores
Yazmín Flores
Javier Rebull
Maestría en Inteligencia Artificial
Aplicada a Datos (MIAAD)
Dirección académica
Mtro. Raúl Gibrán Porras Alaniz
Optimización Inteligente
Universidad Autónoma de
Ciudad Juárez (UACJ)
Stack tecnológico
Python + NumPy
Streamlit + Plotly
MOHHO (implementación propia)
Código fuente: Python 3.12 | Visualización 100% Plotly (zero matplotlib) | Dark-first UI

El Problema en Palabras Simples

Imagina un hospital con 140,000 camas y 868,098 pacientes de 21 ciudades esperando ingresar. Algunos llevan 13 años en lista de espera.

Regla actual (FIFO): se atiende por orden de llegada. Suena justo, pero hay una restricción: ningún barrio puede ocupar más del 7% de las camas. El resultado: los pacientes de las dos ciudades más grandes (India y China, que suman más del 60% de la demanda) llenan su cuota en minutos, y sus miles de pacientes restantes siguen esperando. Mientras tanto, camas asignadas a ciudades pequeñas quedan vacías — 17,540 camas desperdiciadas.

El dilema tiene tres dimensiones:
  • Urgencia (f₁): ¿Damos camas a los que más tiempo llevan esperando? Eso favorece a India y China, pero concentra todos los recursos en dos ciudades.
  • Equidad (f₂): ¿Repartimos para que todas las ciudades esperen lo mismo? Eso reduce la brecha, pero deja sin atender a los más urgentes.
  • Eficiencia (f₃): ¿Llenamos todas las camas? El orden de procesamiento importa: si llenas la cuota de India primero, quedan camas de EB-1 vacías que nadie puede usar.

No existe una solución perfecta que gane en las tres dimensiones a la vez. Lo que sí existe es un mapa de 406 compromisos óptimos: cada uno prioriza de forma diferente, y ninguno puede mejorar una dimensión sin empeorar otra. Eso es el frente de Pareto — y es lo que el algoritmo calcula.

¿Qué Decidimos? (Variable de Decisión)

En lenguaje cotidiano

Para cada combinación de país + categoría (ej. "India EB-2"), decidimos cuántas visas le damos este año.

Hay 21 países y 5 categorías = 105 grupos. Cada grupo tiene un número diferente: India EB-2 podría recibir 5,000 visas, Canadá EB-1 podría recibir 200, etc.

En lenguaje matemático
xg ∈ ℤ⁺₀  :  visas asignadas al grupo g

El vector x = (x1, x2, ..., x105) tiene 105 números enteros no negativos.
Cada xg dice cuántas visas recibe el grupo g.

Los Tres Objetivos (¿Qué Queremos Lograr?)

Queremos tres cosas a la vez, pero están en conflicto: si priorizas a India (que espera más), otros países se quedan sin visas y la desigualdad crece. Si repartes equitativamente, India sigue esperando décadas y se desperdician visas al chocar con límites por país. No hay solución perfecta — hay 406 compromisos.
Objetivo 1 (f₁): Reducir la Espera

En simple: darle visas a la gente que lleva más años esperando. Si India lleva 13 años y Canadá 4, priorizamos a India.

f₁(x) = Σg (ng − xg) · wg  /  Σg ng
ng = cuántas personas esperan en el grupo g
xg = cuántas visas le damos al grupo g
wg = años que llevan esperando
(ng − xg) = personas que se quedan sin visa

La fórmula dice: de los que no recibieron visa, ¿cuántos años de espera acumulan? Dividimos entre el total para normalizar. Queremos que sea lo más bajo posible.
Objetivo 2 (f₂): Reducir la Desigualdad

En simple: que la espera sea parecida entre países. Si India espera 13 años y Canadá 1, la brecha es 12 — queremos reducirla.

c = Σ xg·wg  /  Σ xg    (por país c)
f₂(x) = max |W̄c1 − W̄c2|
c = espera promedio de las visas que le dimos al país c
Si un país no recibe visas: W̄c = su espera máxima (castigo)

La fórmula busca el par de países con la mayor diferencia de espera. Esa brecha máxima es f₂. Queremos que sea lo más baja posible.
Objetivo 3 (f₃): Minimizar el Desperdicio de Visas

En simple: usar la mayor cantidad posible de las 140,000 visas disponibles. Cada visa no asignada es una oportunidad perdida.

f₃(x) = V − Σg xg
V = 140,000 visas disponibles por año
Σ xg = total de visas efectivamente asignadas

FIFO desperdicia 17,540 visas porque choca con límites por país antes de agotar el presupuesto. Queremos que f₃ sea lo más bajo posible.

¿Por qué No se Puede Ganar en los Tres?

Estrategia A: "Ayudar a los que más esperan"

Damos todas las visas posibles a India y China primero. Se reduce mucho la espera global, pero Canadá, Alemania y otros con poca espera se quedan sin nada.

f₁ espera
Baja
f₂ brecha
Alta
Estrategia B: "Tratar a todos igual"

Repartimos visas para que todos los países tengan esperas similares. Muy equitativo, pero India sigue con colas de décadas porque no recibe suficientes.

f₁ espera
Alta
f₂ brecha
Baja
Ninguna estrategia gana en los tres: A es mejor en f₁ pero peor en f₂; B es mejor en f₂ pero peor en f₁; y las soluciones que maximizan utilización (f₃ bajo) no siempre minimizan espera o disparidad. Esto se llama conflicto estructural y es la razón por la que no hay UNA solución óptima, sino un frente de 406 compromisos.

¿Por qué 3 Objetivos?

El tercer objetivo f₃ = V − Σxg mide las visas desperdiciadas. Los datos empíricos muestran que f₃ varía significativamente entre soluciones:
FIFO (sistema actual)
f₃ = 17,540
Desperdicia 17,540 visas por chocar con límites por país
MOHHO (406 soluciones Pareto)
f₃: 0 a 23,048
Visas usadas: 116,952 a 140,000
Promedio: 133,036 visas (95%)
Mejor utilización (f₃ mínimo)
f₃ = 0
140,000 visas asignadas
(100% utilización)
¿Por qué restaurar f₃ como objetivo?

f₃ (visas no usadas) varía significativamente entre soluciones — de 0 a 23,048. Las soluciones que priorizan equidad (f₂ bajo) tienden a usar menos visas porque reparten entre más países y chocan con más límites. Esto convierte a f₃ en un objetivo genuinamente en conflicto con f₂.

Decisión: se modela como triobjetivo min{f₁, f₂, f₃}. El frente de Pareto pasa de ser una curva 2D a una superficie 3D con 406 soluciones no dominadas. El presupuesto total de 140,000 visas se sigue respetando como restricción R1 (Σxg ≤ V), mientras que f₃ mide cuánto de ese presupuesto se logra asignar efectivamente.

Las 6 Reglas del Juego (Restricciones)

No podemos repartir visas como se nos antoje. La ley de inmigración de EE.UU. impone reglas estrictas. El decoder garantiza R1–R5 por construcción; R6 es una regla operativa post-optimización.

R1
Presupuesto anual: No puedes dar más visas de las que existen.
Solo hay 140,000 visas EB por año. Ni una más.
Σ xg ≤ 140,000
R2
Límite por país (7%): Ningún país puede acaparar todo.
Cada país recibe máximo 7% del total (25,620). Excepción: "Resto del Mundo" (bloque agregado) puede recibir más si las visas no se agotan en los 20 países individuales. India, con más de la mitad de la demanda, tiene colas de décadas.
Σ xg ≤ 25,620 por país (excepto RdM)
R3
Límite por categoría: Cada tipo de visa tiene su tope.
EB-1 (extraordinarios), EB-2 (profesionales), etc. tienen cupos propios, ajustados por spillover.
Σ xg ≤ Kjeff por categoría
R4
No dar de más: No puedes dar más visas de las que piden.
Si Canadá EB-5 pide 100, no puedes darle 200.
xg ≤ ng
R5
Enteros: No hay media visa.
Cada visa es un permiso real — no se puede fraccionar.
xg ∈ enteros ≥ 0
R6
FIFO interno: Dentro de cada grupo, los más antiguos primero.
Aunque reordenamos ENTRE grupos, DENTRO de cada grupo se respeta el orden de llegada. Esta regla es operativa — no la impone el optimizador sino la implementación posterior.
Orden por fecha de prioridad

Spillover: Las Visas que Sobran se Pasan

Ejemplo: EB-4 (visas especiales) y EB-5 (inversores) tienen poca demanda. Sus visas sobrantes suben a EB-1. Si a EB-1 le sobran, bajan a EB-2, y de EB-2 a EB-3. Así las visas no se desperdician.
EB-4, EB-5
Sobran visas
EB-1
Recibe excedente
EB-2
Recibe sobrante de EB-1
EB-3
Recibe sobrante de EB-2
Ver fórmulas de spillover
S₄ = max(0, K₄ − D₄),   S₅ = max(0, K₅ − D₅)
K₁eff = K₁ + S₄ + S₅
S₁ = max(0, K₁eff − D₁)
K₂eff = K₂ + S₁,   S₂ = max(0, K₂eff − D₂)
K₃eff = K₃ + S₂

¿Cómo Encuentra las Soluciones? (Codificación en 3 Capas)

El algoritmo HHO está inspirado en halcones de Harris que cazan en grupo. Cada halcón representa una posible forma de repartir visas. Pero los halcones "piensan" en números decimales, y nosotros necesitamos decisiones enteras. Aquí está el truco en 3 pasos:
Paso 1: El Halcón Vuela
H = (0.72, 0.15, 0.91, ...)
El halcón tiene 105 números entre 0 y 1. Los mueve usando 6 estrategias de caza (exploración, asedio, picada, vuelo de Lévy...).
Paso 2: Convertir a Orden (SPV)
π = argsort(H) → (2, 1, 3, ...)
Ordenamos los grupos de menor a mayor valor. El grupo con el número más chico va primero en la fila de las visas.
Paso 3: Repartir (Decoder Greedy)
xg = min(ng, Vrest, cappaís, capcat)
Recorremos la fila y damos visas hasta agotar. Cada grupo recibe el mínimo entre su demanda, visas restantes, cupo de país y cupo de categoría.

Conexión: Modelo Matemático ↔ Metaheurística HHO

En la naturaleza, los halcones de Harris cazan conejos en equipo usando distintas estrategias. El algoritmo traduce cada elemento de la caza a un componente del modelo matemático:
Halcón (posición H)
→ Vector continuo
Cada halcón es un vector H ∈ ℝ¹⁰⁵ (un número real por cada uno de los 105 grupos país-categoría). No es una solución directamente — es un código que el decodificador SPV+Greedy traduce a una asignación factible.
Presa (líder)
→ Solución no dominada
En HHO mono-objetivo, la presa es el mejor individuo. En MOHHO, la presa se elige aleatoriamente del archivo de Pareto, con preferencia por soluciones en zonas poco densas (crowding distance). Así los halcones exploran todo el frente, no solo un extremo.
Energía de escape (E)
→ Balance exploración/explotación
E = 2·E₀·(1 − t/T), con E₀ aleatorio en [−1, 1]. Al inicio |E| puede alcanzar hasta 2: los halcones exploran posiciones lejanas (búsqueda global). Conforme avanzan las iteraciones, la amplitud de |E| decrece: los halcones explotan la vecindad de la presa (refinamiento local). Esto es lo que hace que HHO converja.
Vuelo de Lévy
→ Saltos largos ocasionales
Cuando |E| < 1 y r < 0.5, el halcón puede hacer una “picada rápida” con salto de Lévy: pasos cortos frecuentes + saltos largos raros. Esto evita que el algoritmo se quede atrapado en óptimos locales, crucial para encontrar las 406 soluciones diversas del frente.
Archivo externo
→ Frente de Pareto
Las mejores soluciones no dominadas se guardan en un archivo de tamaño 100. Cuando se llena, se eliminan las soluciones en zonas densas (menor crowding distance). Esto garantiza diversidad en el frente final.
Decodificador SPV+Greedy
→ Factibilidad garantizada
El halcón vuela libremente en ℝ¹⁰⁵ sin preocuparse por restricciones. La regla SPV (Smallest Position Value) convierte esos números en un orden de prioridad, y el decoder greedy reparte visas respetando R1–R5 por construcción. No hay soluciones inválidas.

Ejemplo Paso a Paso

Paso 1: El halcón genera: H = (0.72, 0.15, 0.91, 0.03, 0.58)
Paso 2 (SPV): Ordenamos de menor a mayor → π = (4, 2, 5, 1, 3)
El grupo 4 (valor 0.03) va primero, luego el 2 (0.15), etc.
Paso 3 (Decoder): Recorremos π y repartimos:
  • Grupo 4: pide 8,000 → le damos min(8000, Vrest, cupo_país, cupo_cat)
  • Grupo 2: pide 15,000 → le damos lo que se pueda sin violar R1-R5
  • ... y así hasta agotar las 140,000 visas.


Propiedad clave: cualquier orden que genere el halcón produce una asignación factible (satisface R1-R5). No se necesitan penalizaciones — la factibilidad está garantizada por diseño.

Paso 4 (Evaluar): Calculamos los tres objetivos sobre la asignación resultante x:
  • f₁ = Σ(ng − xg) · wg / Σ ng
  • f₂ = max|W̄c1 − W̄c2| entre todos los pares de países
  • f₃ = V − Σ xg (visas sin asignar)
Ejemplo con Números Reales
El algoritmo evaluó las tres funciones objetivo para cada solución. Estos son los resultados de cuatro soluciones reales del experimento:

Comparación de soluciones extremas del frente de Pareto vs. FIFO
Solución f₁ (espera) f₂ (disparidad) f₃ (desperdicio)
Mejor f₁ 7.186 años 10.744 años 16,280
Mejor f₂ 7.507 años 2.379 años 8,664
Mejor f₃ 7.257 años 9.361 años 0
FIFO (actual) 7.214 años 12.638 años 17,540

¿Por qué ninguna es la “mejor”? Mejor-f₁ tiene la menor espera (7.186) pero desperdicia 16,280 visas. Mejor-f₃ no desperdicia ninguna visa pero su espera es 7.257. Mejor-f₂ tiene la menor brecha (2.379) pero la peor espera (7.507). Las tres son óptimas — cada una gana en un objetivo y pierde en otro. Eso es el frente de Pareto.

¿Qué es el Frente de Pareto?

Imagina que comparas dos repartos de visas, A y B:

• Si A tiene menor espera, menor brecha Y menos desperdicio que B → A es claramente mejor. Decimos que A domina a B.
• Si A tiene menor espera PERO mayor brecha o más desperdicio → ninguno domina al otro. Ambos son válidos, solo son compromisos diferentes.

El frente de Pareto es el grupo de soluciones que nadie puede superar en los tres objetivos a la vez. Son las "mejores opciones disponibles" — 406 en nuestro caso.
Ver definición formal de dominancia
a ≻ b  ⟺  ∀m ∈ {1,2,3}: fm(a) ≤ fm(b)  ∧  ∃m: fm(a) < fm(b)

a domina a b si es al menos igual en los tres objetivos y estrictamente mejor en al menos uno.

Frente de Pareto = { x | no existe x' que domine a x }

¿Cómo Sabemos si las Soluciones son Buenas? (Hipervolumen)

El hipervolumen (HV) es como medir el "volumen" que cubre el frente de Pareto en el espacio tridimensional de f₁ × f₂ × f₃. Si el frente se expande (mejores soluciones), el volumen crece.

Mayor HV = mejor: las soluciones cubren más espacio de opciones.
• Lo calculamos para cada una de las 30 corridas del algoritmo para verificar que es consistente (no fue suerte de una sola vez).
• HV medio de nuestro modelo: 1,785,802.75 con desviación estándar de solo 27,830.57 — muy estable.

Glosario

Inmigración

Green Card (Tarjeta de Residencia)

Permiso de residencia permanente en EE.UU. Se emiten 140,000 visas de empleo al año en 5 categorías (EB-1 a EB-5). Es lo que reparte nuestro modelo.

Sistema actual

FIFO (First In, First Out)

El sistema vigente: quien llegó primero se atiende primero. Simple pero injusto — ignora cuánto llevas esperando y genera colas de décadas para India y China.

Nuestro algoritmo

MOHHO

Multi-Objective Harris Hawks Optimization. Algoritmo de IA inspirado en la caza cooperativa de halcones de Harris. Encuentra 406 formas alternativas de repartir visas, cada una con un balance diferente entre espera (f₁), equidad (f₂) y utilización (f₃).

Objetivo 1

f₁ — Carga de espera

Mide cuántos años de espera quedan sin resolver. Minimizarlo prioriza dar visas a la gente que lleva más tiempo en la fila (India, China).

Objetivo 2

f₂ — Brecha entre países

Mide la mayor diferencia de espera entre cualquier par de países. Minimizarlo busca que todos los países esperen tiempos similares — equidad pura.

Objetivo 3

f₃ — Desperdicio de visas

Mide cuántas de las 140,000 visas quedan sin asignar (f₃ = V − Σx). Minimizarlo maximiza la utilización del presupuesto anual. FIFO desperdicia 17,540 visas; MOHHO puede llegar hasta f₃ = 0.

Concepto clave

Frente de Pareto

El grupo de soluciones que nadie puede superar en los tres objetivos a la vez. Si una solución tiene menos espera, otra tendrá menos brecha o menos desperdicio — no se puede ganar en todo. Nuestro frente tiene 406 puntos.

Punto especial

Knee Point (Equilibrio)

El punto del frente de Pareto donde un poquito más de espera produce mucha más equidad (o viceversa). Es el compromiso más eficiente entre los tres objetivos.

Inmigración

Categorías EB

EB-1: personas extraordinarias (premios Nobel, etc). EB-2: profesionales con maestría. EB-3: trabajadores calificados. EB-4: inmigrantes especiales (religiosos, traductores militares). EB-5: inversores ($800k+).

Ley migratoria

Spillover

Si una categoría no usa todas sus visas, el sobrante pasa a otra. EB-4/5 tienen poca demanda, así que sus visas extras suben a EB-1, luego bajan a EB-2 y EB-3.

Ley migratoria

Límite del 7%

Ningún país puede recibir más del 7% del total (25,620 visas/año). India tiene más de la mitad de la demanda pero recibe máximo 7%. Esta es la causa principal del problema.

Métrica

Hipervolumen (HV)

Mide qué tan buenas son las soluciones: el 'volumen' del espacio triobjetivo cubierto por el frente de Pareto. Mayor volumen = mejores soluciones. Lo usamos para comparar las 30 corridas del algoritmo.

Técnica

SPV

Smallest Position Value (Bean, 1994). Truco matemático para convertir números decimales (que maneja el halcón) en un orden de prioridad (que necesita el decoder).

Componente

Decodificador Greedy

Recibe un orden de prioridad y reparte visas uno por uno, tomando el mínimo entre demanda, visas restantes, cupo de país y cupo de categoría. Cualquier orden produce un reparto válido (R1-R5).

Técnica HHO

Vuelo de Lévy

Patrón de movimiento con pasos cortos frecuentes y saltos largos ocasionales. Evita que los halcones se queden atrapados en soluciones mediocres.

Experimento

Convergencia

Cómo mejora el algoritmo con el tiempo. Al inicio explora mucho (HV sube rápido), luego se estabiliza (encontró las mejores soluciones). Nuestro MOHHO converge al 95% en las primeras ~100 iteraciones.