Optimization suite

Local WebAssembly optimization with industrial-grade solvers

Five production optimization solvers compiled to WebAssembly. Linear, mixed-integer, quadratic, conic, and nonlinear programs execute locally in the current tab with MATLAB®-compatible syntax. Loading, analytics, and other connected SimLab features follow the published execution boundary.

Offline use is not guaranteed. Already-loaded cached local features may continue without a connection, but opening or reloading SimLab, uncached assets, server computation, sharing, feedback, and analytics can require the network.

The five-solver stack

Each solver below is a production library in its own right. We compile them to WebAssembly without touching the solver internals, then expose MATLAB-compatible entry points on top.

LP
FUSE LP
linprog
Linear programs

Rust dual-simplex and barrier IPM, compiled to a 1.3 MB WASM module with SIMD128. Our own solver; powers the hot path for continuous LPs.

License: AGPL-3.0+ / commercial
MIP
HiGHS
intlinprog
Mixed-integer LPs

Open-source LP/MIP workhorse used in research pipelines worldwide. Branch-and-cut with presolve, cuts, and heuristics.

License: MIT
QP
Clarabel
quadprog / coneprog
QP, SOCP, SDP

Stanford interior-point conic solver (Rust). One unified method for QPs, second-order cone, and semidefinite programs.

License: Apache-2.0
QP+
PIQP
quadprog_piqp
Convex QPs with warm start

ETH Zurich proximal interior-point QP solver. Designed for MPC loops and sequential QP problems where warm-starting matters.

License: BSD-2
NLP
NLopt
fmincon / fminunc / ga
Nonlinear optimization

30 nonlinear algorithms: L-BFGS, SLSQP, COBYLA, MMA, Nelder-Mead, BOBYQA, DIRECT, CRS, ISRES, StoGO, and more.

License: LGPL-2.1+

LP benchmark numbers

Median solver-internal time for FUSE LP compiled to WebAssembly, run in Node 20+ on Apple M-series hardware, on 30% dense random feasible LPs (0 ≤ x ≤ 10). Dated 2026-04-12.

Size (m × n)NonzerosFUSE WASM (ms)WASM overheadObjective gap
50 × 507800.493.66×3.5e-10
100 × 1003,0051.652.39×2.3e-10
250 × 25018,81824.661.63×2.7e-07
500 × 50074,928230.11.85×2.9e-08
750 × 750168,809958.42.11×8.5e-08
1000 × 1000299,4382,682.02.42×2.6e-08
1500 × 1500673,93412,979.82.89×6.6e-07
2000 × 20001,200,39741,867.93.54×4.4e-07

How to read this. WASM overhead is the ratio vs the same Rust code built natively, and sits in the 1.6×–3.5× band — the expected cost of a WebAssembly runtime. The algorithm, pivoting rules, and sparse LU factorization are identical across compile targets.

To our knowledge, FUSE WASM is the fastest in-browser Rust-authored LP solver we are aware of. If you have seen a faster one, we would love to know about it. Run the numbers yourself →

Correctness before speed

A fast wrong answer is not useful. Across every LP instance above, the FUSE WASM optimal value matches the reference solver’s objective to within 1e-7 relative tolerance on small and medium problems, and within 1e-4 on the very largest cells where floating-point accumulation dominates. The same holds across fat, thin, and square problem shapes.

Objective agreement is the claim that matters more than raw wall-clock speed: it demonstrates that the solver is converging to the same optimum a reference commercial solver finds. Performance without correctness is marketing; performance with correctness is a tool.

Frequently asked questions

›Is the SimLab optimization suite free?
The browser workspace requires no MATLAB® license or installation. Connected features require network access and may have account, tier, availability, or usage limits. SimLab is dual-licensed under AGPL-3.0+ and a commercial license; each bundled solver retains its own license.
›Does it really work offline?
Offline use is not guaranteed. Already-loaded cached local features may continue without a connection, but opening or reloading SimLab, uncached assets, server computation, sharing, feedback, and analytics can require the network.
›How does the WebAssembly build compare to a native install?
The WASM overhead vs our native Rust build sits in the 1.6x to 3.5x band on typical dense LPs. This is the expected cost of running dense numerical code through a WebAssembly runtime instead of a native CPU build. The solver algorithms, pivoting rules, and sparse LU factorizations are identical; only the compile target differs.
›Will my existing .m files work?
For the optimization toolbox functions covered here (linprog, intlinprog, quadprog, fmincon, fminunc, fminsearch, ga, fzero, fsolve, lsqcurvefit), the argument order and return shape match. Paste your .m file into SimLab and press Run. We track compatibility gaps in a public issue tracker.
›What license is SimLab under?
SimLab itself is dual-licensed AGPL-3.0+ / commercial. The bundled solvers carry their own licenses: FUSE LP (AGPL-3.0+ / commercial), HiGHS (MIT), Clarabel (Apache-2.0), SCS (MIT), PIQP (BSD-2), and NLopt (LGPL-2.1+). If you are shipping a closed-source product built on SimLab, contact us for a commercial license.
›Is my data sent to a server?
The optimization solvers listed on this page execute their displayed models locally via WebAssembly. That scoped statement does not cover server-only or accelerated functions, sharing, feedback, or analytics. Opening the workspace creates a server session. Unless event analytics is opted out, SimLab may send function names, durations, interaction metadata, sizes, and bounded error metadata. Scripts are not intentionally included in analytics events; compute, sharing, and feedback have separate payloads.
›Can I re-run these benchmark numbers myself?
Yes. The interactive runner at /simlab/benchmark executes the same problem generator in your own browser. Numbers vary with your CPU; the ratios between sizes are stable.
›What is the largest LP SimLab can solve in-browser?
We have measured up to 2000x2000 dense LPs (1.2 million nonzeros) on Apple M-series hardware. Memory, not CPU, is the practical ceiling in browsers; very large sparse problems with millions of variables are better handled by the native commercial build.

Try SimLab now

Paste a .m file that calls linprog, quadprog, or fmincon. Press Run. That’s the whole onboarding.

MATLAB® is a registered trademark of The MathWorks, Inc. SimLab is an independent project by Simulations4All and is not affiliated with, endorsed by, or sponsored by The MathWorks, Inc.