or-tools-wasm es una biblioteca de TypeScript que lleva las capacidades de optimización de Google OR-Tools al navegador mediante WebAssembly multihilo. Permite resolver modelos complejos —programación lineal, entera mixta, por restricciones y de rutas— directamente desde el cliente web, sin servidor de cálculo dedicado.
Qué ofrece
El paquete expone las principales APIs de OR-Tools bajo subrutas independientes: CP-SAT para satisfacción de restricciones y optimización entera, Routing para problemas de rutas de vehículos, MPSolver y MathOpt como APIs unificadas de modelado con múltiples backends (GLOP, CLP, GLPK, SCIP/GSCIP, CBC, BOP, Knapsack y SAT), PDLP para programación lineal de gran escala, y módulos específicos para mochila, flujo en redes, set cover y planificación de proyectos con recursos limitados (RCPSP). Los solucionadores comerciales como Gurobi, CPLEX, XPRESS, HiGHS, OSQP, ECOS y SCS quedan fuera del alcance del proyecto.
Cómo funciona
La biblioteca compila OR-Tools a WebAssembly con soporte de hilos, SIMD y SharedArrayBuffer. Para activar estas funciones, la página debe servirse con los encabezados de aislamiento entre orígenes Cross-Origin-Opener-Policy: same-origin y Cross-Origin-Embedder-Policy: require-corp. Un worker bridge oculto mantiene libre el hilo principal para la interfaz, la entrada de datos, la visualización de progreso y la cancelación. El paralelismo del solucionador y el worker bridge son independientes: GLPK y BOP, por ejemplo, son monohilo pero pueden ejecutarse a través del worker bridge, mientras que CP-SAT, SAT, SCIP/GSCIP, CBC y RCPSP admiten además configuración de número de hilos. En tiempo de ejecución, el paquete elige automáticamente entre los modos JSPI y Asyncify.
Casos de uso
Está pensado para desarrolladores web y profesionales de investigación operativa que necesiten incrustar optimización en aplicaciones de navegador: planificadores de rutas, herramientas de scheduling, demostraciones interactivas o productos SaaS. El proyecto se utiliza, por ejemplo, en PragmaPlanner.
Puesta en marcha
La instalación se realiza con npm install or-tools-wasm. La suite de pruebas cubre Vite, Webpack, Rollup, Deno, Node y Bun. La documentación del repositorio (docs/api.md, docs/bundlers.md) recoge la configuración detallada de cada bundler y el contrato de la API en TypeScript.
