Examples & API Finder
Explore runnable optimization and logic formulations built with WaSHI. Every example can be executed directly inside its documentation page, or edited in the Playground.
Examples
| Example | Problem Class | Solver | Key WaSHI APIs | Description | Code Editor |
|---|---|---|---|---|---|
| Production Planning | LP / MIP | HiGHS | m.integer(), m.constraint(), c | Basic variables, tagged template literal equations, and maximizing profit under resource limits. | Playground |
| 0-1 Knapsack | Binary MIP | HiGHS | m.binary(keys), sum(), m.constraint() | 1D dictionary of Binary variables and linear aggregation over item arrays. | Playground |
| Transportation Network | LP | HiGHS | m.continuous(rows, cols), dot(), m.constraint() | 2D matrix indexing (ship[factory][store]) and row/column flow balance constraints. | Playground |
| Diet & Sensitivity Analysis | LP | HiGHS | constr.dual, constr.slack, var.reducedCost | Reading shadow prices (bottlenecks), constraint surpluses, and reduced costs after solving. | Playground |
| Staff Shift Scheduling | Binary MIP + Unsat Core | HiGHS + Z3 | m.binary(staff, days), check(), unsatCore | 8×7 weekly roster planner (coverage, senior duty, max shifts, day-off requests) and diagnosing conflicting vacation requests with Z3 unsatCore. | Playground |
| E-Commerce Coupon Optimizer | Indicator MIP | HiGHS | m.indicator(), sum(), m.constraint() | Checkout optimizer using m.indicator() for minimum spend thresholds, exclusive vs. stackable rules, and smart filler add-on suggestions. | Playground |
| Portfolio Optimization | Convex QP | HiGHS | m.continuous(), m.constraint(), dot(), QuadExpr | Markowitz mean-variance risk minimization () using QuadExpr subject to return targets. | Playground |
| SMT Security Policies | SMT Logic | Z3 | m.bool(), m.constraint(), m.check() | Propositional variables (BoolVar) and logical connectives (implies, and, not, xor) mixed with integer bounds. | Playground |
Conflict Diagnosis (unsatCore) | Unsat Core | Z3 | m.constraint(), m.check(), m.unsatCore | Extracting a conflicting constraint subset (unsatCore) when staffing and budget rules contradict each other. | Playground |
Find by WaSHI API (Reverse Index)
Looking for a specific modeling method or solver capability? Jump straight to the example that demonstrates it:
| Feature / API | Description | Example Page | Node.js Source |
|---|---|---|---|
m.constraint(c`...`) | Tagged template literal constraints | Production Planning | 01-production-planning.ts |
m.binary(keys) / m.continuous(keys) | 1D dictionary of indexed variables | 0-1 Knapsack | 02-knapsack-problem.ts |
m.continuous(rows, cols) / m.binary(rows, cols) | 2D matrix of indexed variables | Transportation Network, Shift Scheduling | 09-transportation-problem.ts |
dot(matrix, vars2d) / dot(vector, vars) | Fast vector/matrix dot product | Transportation Network, Portfolio Optimization | 09-transportation-problem.ts |
constr.dual & constr.slack | Shadow prices & constraint surpluses | Diet & Sensitivity Analysis | 10-diet-sensitivity.ts |
var.reducedCost | Variable reduced costs in LP | Diet & Sensitivity Analysis | 10-diet-sensitivity.ts |
m.indicator() | Big-M conditional constraints (binVar => constr) | E-Commerce Coupon Optimizer | 12-ecommerce-coupon-optimizer.ts |
new QuadExpr() | Convex quadratic objectives () | Portfolio Optimization | 03-portfolio-qp.ts |
m.bool() & .implies() | Propositional logic & SMT rules | SMT Security Policies | 04-smt-security-rules.ts |
m.check() & m.unsatCore | Feasibility check & conflict diagnosis | Conflict Diagnosis, Shift Scheduling | 05-unsat-core-diagnosis.ts |
solver: "glpk" | Solving LP/MIP with GLPK plugin | GLPK Solver Guide | 08-glpk-solver-plugin.ts |
Running Examples Locally in Node.js
All standalone scripts are located in examples/node/:
bash
npx tsx examples/node/01-production-planning.ts
npx tsx examples/node/02-knapsack-problem.ts
npx tsx examples/node/03-portfolio-qp.ts
npx tsx examples/node/04-smt-security-rules.ts
npx tsx examples/node/05-unsat-core-diagnosis.ts
npx tsx examples/node/07-hybrid-smt-mip.ts
npx tsx examples/node/08-glpk-solver-plugin.ts
npx tsx examples/node/09-transportation-problem.ts
npx tsx examples/node/10-diet-sensitivity.ts
npx tsx examples/node/11-shift-scheduling.ts
npx tsx examples/node/12-ecommerce-coupon-optimizer.ts