Solvers
The five families
Solvers
A solver is the math engine Jax invokes when a question crosses out of "look it up" into "compute the answer." Nexma ships five solver families covering most spatial optimization work. Jax dispatches automatically based on the problem shape; no manual selection is needed.
The five families
- Graph. Shortest-path, max-flow, minimum spanning tree, betweenness, community
detection. Used for routing, hierarchy layout, and reachability analysis.
- Mixed-integer programming (MIP). Discrete decisions under linear constraints.
Used for facility location, assignment, and cabinet placement.
- Constraint programming (CP). Combinatorial scheduling with rich constraint
semantics. Used for crew scheduling, deadline rollups, and resource leveling.
- Vehicle routing (VRP). Capacitated routing with time windows, pickups,
deliveries, and driver-hour rules. Used for logistics, field-crew routing, and account visit planning.
- Simulation. Time-stepped or event-driven simulation. Used for pressure-drop
validation, agent-based pedestrian flow, and prediction tasks.
Where they run
Solvers run in two places:
- In the browser. Sub-second latency for problems that fit a single tab. The
user feels Jax responding instantly.
- In the cloud. A managed solver service handles larger problems and any
family that does not fit comfortably in the browser.
The dispatcher chooses location automatically. Both paths return identical result shapes; the calling code does not branch on location.
Self-correction
If a solver returns a result that violates a domain constraint — a closure that exceeds the optical budget, a route that misses a time window, a transformer that exceeds thermal capacity — Jax detects the violation, reformulates the problem, and re-runs. The loop is bounded; after a small number of attempts Jax surfaces the problem to the user with a plain-language explanation.
This is the difference between "the solver returned a number" and "the design is correct." Nexma optimizes for the latter.
When Jax does not call a solver
Many questions do not need optimization. "How many homes are in this polygon?" is a read. "What is the cable length between these two closures?" is geometry. "What's the splitter ratio at this cabinet?" is a property lookup. Jax uses the right tool for each — Read, Run (for deterministic geometry), or Solve (for optimization).
Extending
New constraints and objective functions are added through the agent skill — a new constraint becomes a new term in the solver formulation. The dispatcher and solver service do not need to change.