| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Resolución de problemas logísticos NP-hard usando heurísticas quantum-inspired
Simulated Annealing · Genetic Algorithm · Ant Colony Optimization
Demo en vivo · Instalación · API Docs · Algoritmos · Arquitectura
QuantRoute es un motor de optimización logística que aplica principios de computación cuántica —implementados como heurísticas clásicas avanzadas— para resolver problemas de enrutamiento y asignación de recursos de forma eficiente.
El sistema puede resolver en milisegundos problemas que los métodos tradicionales de fuerza bruta tardarían millones de años en calcular:
| Industria | Aplicación |
|---|---|
| Logística y courier | Optimización de rutas de entrega (VRP) |
| Manufactura | Secuenciación de tareas en planta |
| Transporte público | Diseño de rutas y frecuencias |
| Gestión de proyectos | Asignación óptima de recursos humanos |
| E-commerce | Fulfillment multi-depósito |
Cada algoritmo implementado tiene un análogo directo en computación cuántica:
El criterio de Metropolis permite que el sistema "atraviese" barreras de energía —soluciones peores— con probabilidad decreciente:
P(aceptar movimiento peor) = e^(-ΔE / T)
Esto simula el quantum tunneling: en mecánica cuántica, una partícula puede atravesar una barrera de potencial que clásicamente sería imposible. SA replica este comportamiento para escapar de óptimos locales.
# Criterio de aceptación — núcleo del algoritmo
delta = new_cost - current_cost
if delta < 0 or random() < exp(-delta / temperature):
current = neighbor
current_cost = new_costParámetros clave:
Mantiene una población de soluciones simultáneas —análogo a estados cuánticos superpuestos— que colapsan hacia el óptimo via presión selectiva:
# Crossover de orden (OX) — recombinación genética
def ox_crossover(parent1, parent2):
segment = parent1[a:b] # subsecuencia preservada
fill = [x for x in parent2 if x not in segment]
return fill[:a] + segment + fill[a:] # hijo resultanteOperadores genéticos:
Las hormigas refuerzan caminos probabilísticamente mediante feromonas, análogo a la amplificación de amplitudes en el algoritmo de Grover:
# Probabilidad de transición — quantum walk analog
score(i→j) = pheromone[i][j]^α × (1/distance[i][j])^βLa actualización de feromonas implementa evaporación + depósito:
τ(i,j) ← (1-ρ) × τ(i,j) + Σ Q/L_k para cada hormiga k que usó arista (i,j)
Resultados en instancias aleatorias uniformes (promedio de 50 ejecuciones):
| Nodos | Algoritmo | Mejora vs Greedy | Tiempo medio | Gap vs Óptimo* |
|---|---|---|---|---|
| 10 | SA | 22.4% | 18ms | ~2.1% |
| 15 | SA | 28.1% | 35ms | ~3.4% |
| 20 | GA | 31.6% | 180ms | ~4.2% |
| 25 | ACO | 26.8% | 290ms | ~5.8% |
| 30 | SA + ACO | 29.3% | 420ms | ~6.1% |
*Gap estimado usando lower bounds (Held-Karp relaxation)
# 1. Clonar el repositorio
git clone https://github.com/skila-academy/quantroute.git
cd quantroute
# 2. Instalar dependencias
pip install -r backend/requirements.txt
# 3. Iniciar servidor
uvicorn backend.main:app --reload --port 8000
# El servidor estará disponible en http://localhost:8000
# Documentación interactiva: http://localhost:8000/docs# Opción 1: Abrir directamente (sin dependencias)
open frontend/index.html
# Opción 2: Servidor local
cd frontend && python -m http.server 3000
# Navegar a http://localhost:3000Nota: El frontend funciona de forma completamente standalone con un motor JS integrado. El backend es opcional y mejora la precisión para instancias grandes (N > 20).
Endpoint principal. Recibe una instancia del problema y devuelve la solución optimizada.
Request body:
{
"nodes": [
{ "id": 0, "x": 120.5, "y": 340.2, "demand": 1.0, "label": "Depósito Central" },
{ "id": 1, "x": 280.0, "y": 150.8, "demand": 2.5, "label": "Cliente A" }
],
"depot_id": 0,
"mode": "tsp",
"algorithm": "sa",
"vehicles": 3,
"capacity": 10.0,
"temperature": 1000.0,
"cooling_rate": 0.97,
"iterations": 5000
}| Campo | Tipo | Valores | Descripción |
|---|---|---|---|
| mode | string | tsp, vrp, assignment | Tipo de problema |
| algorithm | string | sa, ga, aco | Algoritmo de optimización |
| temperature | float | 100–5000 | Temperatura inicial (SA) |
| cooling_rate | float | 0.80–0.999 | Factor de enfriamiento α (SA) |
| iterations | int | 500–20000 | Iteraciones máximas |
Response:
{
"routes": [
{ "tour": [0, 3, 7, 1, 4, 0], "cost": 284.5, "vehicle_id": 0 }
],
"total_cost": 284.5,
"initial_cost": 412.3,
"improvement_pct": 31.02,
"elapsed_ms": 143.7,
"algorithm": "SA",
"iterations_run": 5000,
"convergence": [412.3, 380.1, 340.8, 310.2, 295.6, 284.5],
"metadata": {
"nodes": 12,
"mode": "tsp",
"vehicles": 1,
"algorithm_detail": "Simulated Annealing — quantum tunneling analog"
}
}Lista todos los algoritmos disponibles con sus parámetros y analogías cuánticas.
Health check del servicio.
quantroute/ │ ├── backend/ │ ├── main.py # FastAPI app + todos los algoritmos │ └── requirements.txt # fastapi, uvicorn, numpy, pydantic │ ├── frontend/ │ └── index.html # SPA standalone (HTML + CSS + JS) │ # Motor de optimización JS integrado │ # Visualización Canvas 2D │ # Comunicación opcional con API │ └── README.md
Usuario (Frontend)
│
├─ [Sin backend] ──→ Motor JS local (SA/GA/ACO en browser)
│ └──→ Canvas 2D render
│
└─ [Con backend] ──→ POST /optimize ──→ FastAPI
└──→ Numpy + Python algorithms
└──→ JSON response
└──→ Canvas 2D render
| Escenario | T₀ | α | Iteraciones |
|---|---|---|---|
| Exploración rápida | 500 | 0.95 | 2000 |
| Balance | 1000 | 0.97 | 5000 |
| Alta precisión | 2000 | 0.990 | 15000 |
| Instancias grandes (N>25) | 5000 | 0.995 | 20000 |
El modo VRP implementa un split heurístico post-optimización. Para mejores resultados con restricciones de capacidad reales:
Las contribuciones son bienvenidas. Por favor:
MIT License — ver LICENSE para detalles.
Desarrollado con ⬡ por Skila
Strategic Knowledge & Learning Academy
Demostrando que los conceptos de computación cuántica son aplicables hoy,
en problemas reales de alta complejidad.
| Back | FazBrowse Home | New Git URL |