跳转到正文

WaSHI适用于数理优化与约束编程的代数建模器

Python PuLP 与 Julia JuMP 的 TypeScript 替代方案。使用直观的中缀数学表达式构建 LP、MIP、凸 QP 与 SMT 模型,基于 WebAssembly(HiGHS、Z3、GLPK)在客户端高效求解,无需 Python 服务或本地 C++ 依赖。

WaSHI Emblem

快速示例 ​

typescript
import { Model, expr, maximize } from "@ohtaman/washi";

// 1. 创建模型
const m = new Model("木工产品利润最大化");

// 2. 定义整数决策变量
const desks = m.integer("桌子", { lb: 0 });
const chairs = m.integer("椅子", { lb: 0 });

// 3. 设置目标函数(桌子利润 $30,椅子利润 $50)
m.objective(maximize(expr`30 * ${desks} + 50 * ${chairs}`));

// 4. 添加约束条件(木材与工时上限)
m.constraint(expr`${desks} + 2 * ${chairs} <= 40`, "wood_limit");
m.constraint(expr`2 * ${desks} + ${chairs} <= 50`, "labor_limit");

// 5. 调用 WebAssembly (HiGHS) 求解
await m.solve();

console.log(`生产方案: 桌子=${desks.value}, 椅子=${chairs.value}`);
console.log(`最大利润: $${m.objectiveValue}`);

文档导航 ​

Released under the MIT License.