跳转到正文

实际案例与 API 功能索引 ​

本页汇总了使用 WaSHI 构建的可运行数理优化与逻辑建模示例。每个案例均可直接在其文档页面内执行,也可以在 Playground 中在线编辑和运行。

案例一览 ​

案例问题类型求解器核心 WaSHI API演示内容代码编辑
生产计划问题LP / MIPHiGHSm.integer(), m.constraint(), expr决策变量定义、标签模板字面量方程,以及在资源约束下最大化总利润。Playground
0-1 背包问题Binary MIPHiGHSm.binary(keys), sum(), m.constraint()一维 Binary 变量字典及物品数组上的线性聚合。Playground
运输与分配网络LPHiGHSm.continuous(rows, cols), dot(), m.constraint()二维矩阵索引(ship[factory][store])与行/列供需流量平衡约束。Playground
营养问题与灵敏度分析LPHiGHSconstr.dual, constr.slack, var.reducedCost求解后读取影子价格(瓶颈识别)、约束松弛量(盈余)与变量缩减成本。Playground
员工排班与冲突诊断Binary MIP + Unsat CoreHiGHS + Z3m.binary(staff, days), check(), unsatCore5×7 周排班规划(每日人数覆盖、资深员工值班、排班上限与休假申请),以及使用 Z3 unsatCore 诊断冲突的休假申请。Playground
购物车优惠券最优组合Indicator MIPHiGHSm.indicator(), sum(), m.constraint()使用 m.indicator() 对最低消费门槛、互斥与可叠加规则建模,并提供智能凑单加购建议。Playground
投资组合优化Convex QPHiGHSm.continuous(), m.constraint(), dot(), QuadExpr在目标收益率约束下,使用 QuadExpr 最小化马科维茨均值-方差风险(wTΣww^T \Sigma w)。Playground
安全策略验证SMT LogicZ3m.bool(), m.constraint(), m.check()命题布尔变量(BoolVar)与逻辑连接词(implies, and, not, xor)及整数边界的混合建模。Playground
不可行冲突诊断 (unsatCore)Unsat CoreZ3m.constraint(), m.check(), m.unsatCore当人员配备要求与预算规则互相矛盾时,自动提取冲突约束子集(unsatCore)。Playground

按 WaSHI API 查找(反向索引) ​

想查找某个特定建模方法或求解器功能的用法?可直接跳转到演示该功能的示例页面:

功能 / API用途说明示例页面Node.js 源码
m.constraint(expr`...`)标签模板字面量直观定义约束生产计划问题01-production-planning.ts
m.binary(keys) / m.continuous(keys)一维键值字典形式的索引变量0-1 背包问题02-knapsack-problem.ts
m.continuous(rows, cols) / m.binary(rows, cols)二维矩阵形式的索引变量运输与分配网络, 员工排班与冲突诊断09-transportation-problem.ts
dot(matrix, vars2d) / dot(vector, vars)高效向量/矩阵点积与线性组合运输与分配网络, 投资组合优化09-transportation-problem.ts
constr.dual & constr.slack影子价格(对偶值)与约束松弛量营养问题与灵敏度分析10-diet-sensitivity.ts
var.reducedCostLP 中变量的缩减成本营养问题与灵敏度分析10-diet-sensitivity.ts
m.indicator()Big-M 条件指示约束(binVar => constr)购物车优惠券最优组合12-ecommerce-coupon-optimizer.ts
new QuadExpr()凸二次目标函数(xTQxx^T Q x)投资组合优化03-portfolio-qp.ts
m.bool() & .implies()命题逻辑与 SMT 蕴含规则安全策略验证04-smt-security-rules.ts
m.check() & m.unsatCore可满足性检查与冲突约束诊断不可行冲突诊断, 员工排班与冲突诊断05-unsat-core-diagnosis.ts
solver: "glpk"使用 GLPK 插件求解 LP/MIPGLPK 求解器指南08-glpk-solver-plugin.ts

在本地(Node.js)运行示例 ​

所有独立脚本均位于仓库的 examples/node/ 目录下,克隆仓库并安装依赖后可通过 npx tsx 直接运行:

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

Released under the MIT License.