@ohtaman/washi 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.ja.md +55 -20
- package/README.md +55 -20
- package/README.zh-CN.md +55 -20
- package/THIRD_PARTY_LICENSES.md +3 -4
- package/dist/browser/_washi-node-only-BvRk9kiK.js +0 -0
- package/dist/browser/browser-runtime-TLCY0hkc.js +1793 -0
- package/dist/browser/highs-worker.js +1 -1
- package/dist/browser/highs.wasm +0 -0
- package/dist/browser/highs.wasm.LICENSE +1 -2
- package/dist/browser/loader-DewlSho8.js +643 -0
- package/dist/browser/solvers/glpk.js +1 -1
- package/dist/browser/solvers/glpk.min.js +1 -1
- package/dist/browser/solvers/z3.js +7 -1
- package/dist/browser/solvers/z3.min.js +1 -1
- package/dist/browser/washi.js +1096 -444
- package/dist/browser/washi.min.js +3 -4
- package/dist/lib/_washi-node-only-BvRk9kiK.js +0 -0
- package/dist/lib/highs-browser-runtime.js +2120 -4124
- package/dist/lib/highs-node-runtime.js +24 -1
- package/dist/lib/highs-runtime.js +2 -0
- package/dist/lib/highs-worker.js +1 -1
- package/dist/lib/highs.wasm +0 -0
- package/dist/lib/highs.wasm.LICENSE +1 -2
- package/dist/lib/loader-BZUQNvh4.js +649 -0
- package/dist/lib/{registry-BEfvpZW3.js → registry-C20sxTwm.js} +54 -41
- package/dist/lib/solvers/glpk.js +2 -2
- package/dist/lib/solvers/z3.js +1 -1
- package/dist/lib/washi.js +973 -305
- package/dist/types/decomposition/benders.d.ts +32 -0
- package/dist/types/decomposition/benders.d.ts.map +1 -0
- package/dist/types/decomposition/column-generation.d.ts +34 -0
- package/dist/types/decomposition/column-generation.d.ts.map +1 -0
- package/dist/types/decomposition/index.d.ts +4 -0
- package/dist/types/decomposition/index.d.ts.map +1 -0
- package/dist/types/decomposition/types.d.ts +230 -0
- package/dist/types/decomposition/types.d.ts.map +1 -0
- package/dist/types/index.d.ts +4 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modeler/boolean-expr.d.ts.map +1 -1
- package/dist/types/modeler/constraint.d.ts +11 -0
- package/dist/types/modeler/constraint.d.ts.map +1 -1
- package/dist/types/modeler/expression.d.ts +10 -0
- package/dist/types/modeler/expression.d.ts.map +1 -1
- package/dist/types/modeler/index.d.ts +2 -1
- package/dist/types/modeler/index.d.ts.map +1 -1
- package/dist/types/modeler/linearizer.d.ts +15 -0
- package/dist/types/modeler/linearizer.d.ts.map +1 -0
- package/dist/types/modeler/lp-writer.d.ts +3 -1
- package/dist/types/modeler/lp-writer.d.ts.map +1 -1
- package/dist/types/modeler/model.d.ts +147 -2
- package/dist/types/modeler/model.d.ts.map +1 -1
- package/dist/types/modeler/solvers/highs/browser-runtime.d.ts +2 -1
- package/dist/types/modeler/solvers/highs/browser-runtime.d.ts.map +1 -1
- package/dist/types/modeler/solvers/highs/driver.d.ts +232 -0
- package/dist/types/modeler/solvers/highs/driver.d.ts.map +1 -0
- package/dist/types/modeler/solvers/highs/index.d.ts +1 -0
- package/dist/types/modeler/solvers/highs/index.d.ts.map +1 -1
- package/dist/types/modeler/solvers/highs/loader.d.ts +4 -4
- package/dist/types/modeler/solvers/highs/loader.d.ts.map +1 -1
- package/dist/types/modeler/solvers/highs/node-runtime.d.ts +2 -1
- package/dist/types/modeler/solvers/highs/node-runtime.d.ts.map +1 -1
- package/dist/types/modeler/solvers/highs/solver.d.ts +1 -1
- package/dist/types/modeler/solvers/highs/solver.d.ts.map +1 -1
- package/dist/types/modeler/solvers/types.d.ts +2 -0
- package/dist/types/modeler/solvers/types.d.ts.map +1 -1
- package/dist/types/modeler/types.d.ts +27 -0
- package/dist/types/modeler/types.d.ts.map +1 -1
- package/docs/examples/index.md +4 -0
- package/docs/examples/traveling-salesperson.md +173 -0
- package/docs/examples/vehicle-routing.md +206 -0
- package/docs/getting-started/ai-agents.md +8 -4
- package/docs/guide/constraints.md +1 -1
- package/docs/guide/decomposition.md +399 -0
- package/docs/guide/unsat-core.md +10 -3
- package/docs/ja/getting-started/ai-agents.md +8 -4
- package/docs/solvers/custom-solver.md +1 -1
- package/docs/solvers/highs.md +25 -3
- package/docs/solvers/index.md +3 -3
- package/docs/zh/getting-started/ai-agents.md +8 -4
- package/llms-full.txt +831 -15
- package/llms.txt +9 -5
- package/package.json +17 -14
- package/skills/washi/SKILL.md +8 -8
- package/dist/browser/browser-runtime-D13gHOT5.js +0 -4189
- package/dist/browser/loader-CtaDHef_.js +0 -273
- package/dist/lib/loader-DmNC_UNk.js +0 -279
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
var e = 0;
|
|
3
3
|
function t(e, t) {
|
|
4
4
|
if (e instanceof n || e instanceof d) return e;
|
|
5
|
-
throw typeof e == "object" && e && ("terms" in e || "quadTerms" in e) ? Error(`Cannot use an arithmetic expression without a comparison operator (<=, >=, ==) in logical operator "${t}". Use a comparison constraint such as expr\`\${x} <= 10\` or a BoolVar/BoolExpr.`) : Error(`Invalid operand passed to logical operator "${t}": expected a BoolVar, BoolExpr, or Constraint.`);
|
|
5
|
+
throw typeof e == "object" && e && ("terms" in e || "quadTerms" in e) ? Error(`Cannot use an arithmetic expression without a comparison operator (<=, >=, ==) in logical operator "${t}". Use a comparison constraint such as expr\`\${x} <= 10\` or a BoolVar/BoolExpr.`) : typeof e == "object" && e && "id" in e && "name" in e && "lb" in e && "ub" in e && !("sense" in e) ? Error(`Invalid operand passed to logical operator "${t}": expected a BoolVar, BoolExpr, or Constraint, but received numeric variable "${e.name}". Use m.bool() for propositional variables, add a comparison such as expr\`\${x} == 1\`, or use m.indicator(binVar, constraint) for 0-1 Big-M indicator constraints.`) : Error(`Invalid operand passed to logical operator "${t}": expected a BoolVar, BoolExpr, or Constraint.`);
|
|
6
6
|
}
|
|
7
7
|
var n = class {
|
|
8
8
|
and(e) {
|
|
@@ -71,6 +71,12 @@ var u = 0, d = class e {
|
|
|
71
71
|
ownerModel = null;
|
|
72
72
|
slack = null;
|
|
73
73
|
dual = null;
|
|
74
|
+
addTerm(e, t) {
|
|
75
|
+
return t === 0 ? this : (this._lhs.addTerm(e, t), this.ownerModel?.notifyMutation?.(), this);
|
|
76
|
+
}
|
|
77
|
+
setTerm(e, t) {
|
|
78
|
+
return this._lhs.setTerm(e, t), this.ownerModel?.notifyMutation?.(), this;
|
|
79
|
+
}
|
|
74
80
|
constructor(e, t, n, r) {
|
|
75
81
|
this.id = ++u, this._lhs = e, this._sense = t, this._rhs = n;
|
|
76
82
|
let i = typeof r == "string" ? r.trim() : void 0;
|
|
@@ -360,6 +366,13 @@ var m = class e {
|
|
|
360
366
|
constructor(e = /* @__PURE__ */ new Map(), t = 0) {
|
|
361
367
|
this.terms = new Map(e), this.constant = t;
|
|
362
368
|
}
|
|
369
|
+
setTerm(e, t) {
|
|
370
|
+
return t === 0 ? this.terms.delete(e) : this.terms.set(e, t), this;
|
|
371
|
+
}
|
|
372
|
+
addTerm(e, t) {
|
|
373
|
+
let n = (this.terms.get(e) ?? 0) + t;
|
|
374
|
+
return n === 0 ? this.terms.delete(e) : this.terms.set(e, n), this;
|
|
375
|
+
}
|
|
363
376
|
clone() {
|
|
364
377
|
return new e(this.terms, this.constant);
|
|
365
378
|
}
|
|
@@ -839,18 +852,18 @@ function R(e) {
|
|
|
839
852
|
varOrder: s
|
|
840
853
|
};
|
|
841
854
|
}
|
|
842
|
-
function z(e) {
|
|
843
|
-
let { sense:
|
|
844
|
-
|
|
845
|
-
let
|
|
846
|
-
if (
|
|
855
|
+
function z(e, t) {
|
|
856
|
+
let { sense: n, objective: r, constraints: i, variables: a } = e, o = t?.relax === !0, { nameToVar: s, varToName: c, nameToConstraint: l, constrToName: u, varOrder: d } = R(e), f = [];
|
|
857
|
+
f.push(n && n.toLowerCase() === "maximize" ? "Maximize" : "Minimize");
|
|
858
|
+
let p = [], h = !0, g = r instanceof m ? r.linearTerms : r.terms;
|
|
859
|
+
if (g) for (let [e, t] of g) {
|
|
847
860
|
if (t === 0) continue;
|
|
848
|
-
let n =
|
|
849
|
-
|
|
861
|
+
let n = c.get(e), r = t >= 0 ? h ? "" : "+ " : "- ", i = Math.abs(t), a = i === 1 ? "" : `${i} `;
|
|
862
|
+
p.push(`${r}${a}${n}`), h = !1;
|
|
850
863
|
}
|
|
851
|
-
if (
|
|
852
|
-
let e = [], t = !0,
|
|
853
|
-
let t =
|
|
864
|
+
if (r instanceof m && r.quadTerms.size > 0) {
|
|
865
|
+
let e = [], t = !0, n = Array.from(r.quadTerms.values()).filter((e) => e.coeff !== 0).map((e) => {
|
|
866
|
+
let t = d.get(e.var1) ?? e.var1.id, n = d.get(e.var2) ?? e.var2.id, [r, i, a, o] = t <= n ? [
|
|
854
867
|
e.var1,
|
|
855
868
|
e.var2,
|
|
856
869
|
t,
|
|
@@ -869,51 +882,51 @@ function z(e) {
|
|
|
869
882
|
coeff: e.coeff
|
|
870
883
|
};
|
|
871
884
|
}).sort((e, t) => e.firstIdx - t.firstIdx || e.secondIdx - t.secondIdx);
|
|
872
|
-
for (let
|
|
873
|
-
let
|
|
874
|
-
|
|
885
|
+
for (let r of n) {
|
|
886
|
+
let n = 2 * r.coeff, i = n >= 0 ? t ? "" : "+ " : "- ", a = Math.abs(n), o = a === 1 ? "" : `${a} `, s = c.get(r.firstVar), l = c.get(r.secondVar);
|
|
887
|
+
r.firstVar === r.secondVar ? e.push(`${i}${o}${s} ^ 2`) : e.push(`${i}${o}${s} * ${l}`), t = !1;
|
|
875
888
|
}
|
|
876
889
|
if (e.length > 0) {
|
|
877
890
|
let t = `[ ${e.join(" ")} ] / 2`;
|
|
878
|
-
|
|
891
|
+
p.length > 0 ? p.push("+", t) : p.push(t);
|
|
879
892
|
}
|
|
880
893
|
}
|
|
881
|
-
let
|
|
882
|
-
|
|
883
|
-
for (let e of
|
|
884
|
-
let t =
|
|
894
|
+
let _ = p.length > 0 ? p.join(" ") : "0";
|
|
895
|
+
f.push(` obj: ${_}`), f.push("Subject To");
|
|
896
|
+
for (let e of i) {
|
|
897
|
+
let t = u.get(e), n = [], r = !0;
|
|
885
898
|
for (let [t, i] of e.lhs.terms) {
|
|
886
899
|
if (i === 0) continue;
|
|
887
|
-
let e =
|
|
888
|
-
n.push(`${a}${
|
|
900
|
+
let e = c.get(t), a = i >= 0 ? r ? "" : "+ " : "- ", o = Math.abs(i), s = o === 1 ? "" : `${o} `;
|
|
901
|
+
n.push(`${a}${s}${e}`), r = !1;
|
|
889
902
|
}
|
|
890
903
|
let i = n.length > 0 ? n.join(" ") : "0", a = e.sense === "==" ? "=" : e.sense;
|
|
891
|
-
|
|
892
|
-
}
|
|
893
|
-
|
|
894
|
-
let
|
|
895
|
-
for (let e of
|
|
896
|
-
let t =
|
|
897
|
-
if (e.type === "Binary") {
|
|
898
|
-
|
|
904
|
+
f.push(` ${t}: ${i} ${a} ${e.rhs}`);
|
|
905
|
+
}
|
|
906
|
+
f.push("Bounds");
|
|
907
|
+
let v = [], y = [];
|
|
908
|
+
for (let e of a) {
|
|
909
|
+
let t = c.get(e);
|
|
910
|
+
if (!o && e.type === "Binary") {
|
|
911
|
+
y.push(t);
|
|
899
912
|
continue;
|
|
900
913
|
}
|
|
901
|
-
e.type === "Integer" &&
|
|
914
|
+
!o && e.type === "Integer" && v.push(t);
|
|
902
915
|
let n = e.lb === -Infinity, r = e.ub === Infinity;
|
|
903
|
-
n && r ?
|
|
916
|
+
n && r ? f.push(` ${t} free`) : n && !r ? f.push(` -infinity <= ${t} <= ${e.ub}`) : !n && r ? (e.lb !== 0 || e.initialValue !== void 0) && f.push(` ${t} >= ${e.lb}`) : f.push(` ${e.lb} <= ${t} <= ${e.ub}`);
|
|
904
917
|
}
|
|
905
|
-
if (
|
|
906
|
-
|
|
907
|
-
for (let e = 0; e <
|
|
918
|
+
if (v.length > 0) {
|
|
919
|
+
f.push("Generals");
|
|
920
|
+
for (let e = 0; e < v.length; e += 10) f.push(" " + v.slice(e, e + 10).join(" "));
|
|
908
921
|
}
|
|
909
|
-
if (
|
|
910
|
-
|
|
911
|
-
for (let e = 0; e <
|
|
922
|
+
if (y.length > 0) {
|
|
923
|
+
f.push("Binary");
|
|
924
|
+
for (let e = 0; e < y.length; e += 10) f.push(" " + y.slice(e, e + 10).join(" "));
|
|
912
925
|
}
|
|
913
|
-
return
|
|
914
|
-
lpString:
|
|
915
|
-
nameToVar:
|
|
916
|
-
nameToConstraint:
|
|
926
|
+
return f.push("End"), {
|
|
927
|
+
lpString: f.join("\n") + "\n",
|
|
928
|
+
nameToVar: s,
|
|
929
|
+
nameToConstraint: l
|
|
917
930
|
};
|
|
918
931
|
}
|
|
919
932
|
//#endregion
|
package/dist/lib/solvers/glpk.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as e, r as t, s as n } from "../registry-
|
|
1
|
+
import { a as e, r as t, s as n } from "../registry-C20sxTwm.js";
|
|
2
2
|
//#region src/modeler/solvers/glpk/loader.ts
|
|
3
3
|
var r = null, i = null;
|
|
4
4
|
async function a() {
|
|
@@ -134,7 +134,7 @@ var l = class t {
|
|
|
134
134
|
let y = [], b = [], x = [];
|
|
135
135
|
for (let e of t.variables) {
|
|
136
136
|
let t = p.get(e) || e.name;
|
|
137
|
-
e.type === "Binary" ? y.push(t) : e.type === "Integer" && b.push(t);
|
|
137
|
+
!l.relax && e.type === "Binary" ? y.push(t) : !l.relax && e.type === "Integer" && b.push(t);
|
|
138
138
|
let n = e.lb, r = e.ub, i;
|
|
139
139
|
i = n === -Infinity && r === Infinity ? d.GLP_FR : n !== -Infinity && r === Infinity ? d.GLP_LO : n === -Infinity && r !== Infinity ? d.GLP_UP : n === r ? d.GLP_FX : d.GLP_DB, x.push({
|
|
140
140
|
name: t,
|
package/dist/lib/solvers/z3.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as e, O as t, T as n, r, s as i } from "../registry-
|
|
1
|
+
import { D as e, O as t, T as n, r, s as i } from "../registry-C20sxTwm.js";
|
|
2
2
|
import { getBundledZ3AssetUrls as a } from "./z3-assets.js";
|
|
3
3
|
//#region src/modeler/solvers/z3/loader.ts
|
|
4
4
|
var o = null, s = null, c = null, l = null, u = /* @__PURE__ */ new WeakMap();
|