本文へスキップ

WaSHI数理最適化と制約プログラミングのための代数モデラー

PythonのPuLPやJuliaのJuMPのように直感的な数式で定式化できるTypeScript向け代数モデラー。WebAssembly(HiGHS・Z3・GLPK)を搭載し、Pythonサーバーやネイティブビルド不要でLP・混合整数計画法(MIP)・凸QP・SMTをブラウザやNode.jsで高速に求解します。

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`, "木材上限");
m.constraint(expr`2 * ${desks} + ${chairs} <= 50`, "労働力上限");

// 5. WebAssembly (HiGHS) による求解
await m.solve();

console.log(`生産量: 机=${desks.value}台, 椅子=${chairs.value}台`);
console.log(`最大利益: $${m.objectiveValue}`);

ドキュメント一覧 ​

Released under the MIT License.