@ohtaman/washi 0.5.0 → 0.7.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 +103 -386
- package/README.md +104 -387
- package/README.zh-CN.md +103 -386
- package/THIRD_PARTY_LICENSES.md +5 -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 +3 -3
- 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 +1708 -540
- 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-D7TZ3Wh_.js} +142 -59
- package/dist/lib/solvers/glpk.js +4 -4
- package/dist/lib/solvers/z3.js +1 -1
- package/dist/lib/washi.js +1576 -465
- 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 +57 -26
- package/dist/types/modeler/expression.d.ts.map +1 -1
- package/dist/types/modeler/index.d.ts +4 -3
- 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 +159 -8
- package/dist/types/modeler/model.d.ts.map +1 -1
- package/dist/types/modeler/parser.d.ts +25 -5
- package/dist/types/modeler/parser.d.ts.map +1 -1
- package/dist/types/modeler/solvers/glpk/solver.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/highs/worker-client.d.ts.map +1 -1
- package/dist/types/modeler/solvers/types.d.ts +4 -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/diet-sensitivity.md +15 -14
- package/docs/examples/ecommerce-coupons.md +15 -22
- package/docs/examples/index.md +18 -12
- package/docs/examples/knapsack.md +8 -7
- package/docs/examples/portfolio-qp.md +11 -4
- package/docs/examples/production.md +4 -4
- package/docs/examples/shift-scheduling.md +20 -7
- package/docs/examples/smt-security.md +16 -4
- package/docs/examples/transportation.md +46 -19
- package/docs/examples/traveling-salesperson.md +157 -0
- package/docs/examples/unsat-core.md +15 -5
- package/docs/examples/vehicle-routing.md +208 -0
- package/docs/getting-started/ai-agents.md +33 -18
- package/docs/getting-started/cross-origin.md +56 -28
- package/docs/getting-started/index.md +40 -69
- package/docs/getting-started/runtimes.md +66 -61
- package/docs/guide/constraints.md +47 -41
- package/docs/guide/decomposition.md +267 -0
- package/docs/guide/expressions.md +90 -39
- package/docs/guide/formulation-tips.md +212 -0
- package/docs/guide/objectives.md +7 -4
- package/docs/guide/unsat-core.md +28 -9
- package/docs/guide/variables.md +33 -38
- package/docs/ja/getting-started/ai-agents.md +32 -18
- package/docs/solvers/custom-solver.md +1 -1
- package/docs/solvers/highs.md +48 -5
- package/docs/solvers/index.md +4 -4
- package/docs/solvers/z3.md +3 -0
- package/docs/zh/getting-started/ai-agents.md +32 -18
- package/llms-full.txt +1536 -478
- package/llms.txt +28 -22
- package/package.json +19 -16
- package/skills/washi/SKILL.md +21 -17
- 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
|
}
|
|
@@ -466,37 +479,107 @@ var m = class e {
|
|
|
466
479
|
function g(e, t) {
|
|
467
480
|
let n = /* @__PURE__ */ new Map(), r = 0;
|
|
468
481
|
function i(e) {
|
|
482
|
+
return e instanceof d || e.kind === "constraint" || "sense" in e && (e.sense === "<=" || e.sense === ">=" || e.sense === "==") && "lhs" in e && "rhs" in e && typeof e.rhs == "number" && typeof e.lhs == "object" && e.lhs !== null && "terms" in e.lhs && e.lhs.terms instanceof Map;
|
|
483
|
+
}
|
|
484
|
+
function a(e) {
|
|
485
|
+
return e instanceof m || "quadTerms" in e && e.quadTerms instanceof Map && "linearTerms" in e && e.linearTerms instanceof Map && typeof e.constant == "number";
|
|
486
|
+
}
|
|
487
|
+
function o(e) {
|
|
488
|
+
return e instanceof h || "terms" in e && e.terms instanceof Map && typeof e.constant == "number";
|
|
489
|
+
}
|
|
490
|
+
function s(e) {
|
|
491
|
+
return e instanceof F || !i(e) && typeof e.id == "number" && typeof e.name == "string" && typeof e.lb == "number" && typeof e.ub == "number" && typeof e.type == "string" && typeof e.mul == "function";
|
|
492
|
+
}
|
|
493
|
+
function c(e) {
|
|
494
|
+
return i(e) || a(e) || o(e) || s(e);
|
|
495
|
+
}
|
|
496
|
+
function l(e) {
|
|
497
|
+
if (typeof e != "object" || !e || Array.isArray(e) || c(e)) return !1;
|
|
498
|
+
let t = Object.getPrototypeOf(e);
|
|
499
|
+
return t === Object.prototype || t === null;
|
|
500
|
+
}
|
|
501
|
+
function u(e) {
|
|
469
502
|
if (e != null) {
|
|
470
|
-
if (typeof e == "number")
|
|
471
|
-
|
|
472
|
-
|
|
503
|
+
if (typeof e == "number") {
|
|
504
|
+
if (!Number.isFinite(e)) throw Error(`Invalid non-finite number "${e}" in sum().`);
|
|
505
|
+
let t = r + e;
|
|
506
|
+
if (!Number.isFinite(t)) throw Error("Constant accumulation overflows finite floating-point range in sum().");
|
|
507
|
+
r = t;
|
|
508
|
+
} else if (typeof e == "object" && i(e)) throw Error("Cannot sum a constraint comparison (<=, >=, ==) in sum(): expected a number, Var, or LinExpr.");
|
|
509
|
+
else if (typeof e == "object" && a(e)) {
|
|
473
510
|
let t = e;
|
|
474
511
|
if (t.quadTerms.size > 0) throw Error("Quadratic expressions are not supported in sum(): sum() produces a linear expression (LinExpr).");
|
|
512
|
+
if (!Number.isFinite(t.constant)) throw Error(`Invalid non-finite constant "${t.constant}" in sum().`);
|
|
475
513
|
for (let [e, r] of t.linearTerms) {
|
|
476
|
-
|
|
477
|
-
n.
|
|
514
|
+
if (!Number.isFinite(r)) throw Error(`Invalid non-finite coefficient "${r}" in sum().`);
|
|
515
|
+
let t = (n.get(e) ?? 0) + r;
|
|
516
|
+
if (!Number.isFinite(t)) throw Error("Coefficient accumulation overflows finite floating-point range in sum().");
|
|
517
|
+
n.set(e, t);
|
|
478
518
|
}
|
|
479
|
-
r
|
|
480
|
-
|
|
519
|
+
let i = r + t.constant;
|
|
520
|
+
if (!Number.isFinite(i)) throw Error("Constant accumulation overflows finite floating-point range in sum().");
|
|
521
|
+
r = i;
|
|
522
|
+
} else if (typeof e == "object" && o(e)) {
|
|
481
523
|
let t = e;
|
|
524
|
+
if (!Number.isFinite(t.constant)) throw Error(`Invalid non-finite constant "${t.constant}" in sum().`);
|
|
482
525
|
for (let [e, r] of t.terms) {
|
|
483
|
-
|
|
484
|
-
n.
|
|
526
|
+
if (!Number.isFinite(r)) throw Error(`Invalid non-finite coefficient "${r}" in sum().`);
|
|
527
|
+
let t = (n.get(e) ?? 0) + r;
|
|
528
|
+
if (!Number.isFinite(t)) throw Error("Coefficient accumulation overflows finite floating-point range in sum().");
|
|
529
|
+
n.set(e, t);
|
|
485
530
|
}
|
|
486
|
-
r
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
531
|
+
let i = r + t.constant;
|
|
532
|
+
if (!Number.isFinite(i)) throw Error("Constant accumulation overflows finite floating-point range in sum().");
|
|
533
|
+
r = i;
|
|
534
|
+
} else if (typeof e == "object" && s(e)) {
|
|
535
|
+
let t = e, r = (n.get(t) ?? 0) + 1;
|
|
536
|
+
if (!Number.isFinite(r)) throw Error("Coefficient accumulation overflows finite floating-point range in sum().");
|
|
537
|
+
n.set(t, r);
|
|
490
538
|
} else throw Error("Unsupported item in sum(): expected a number, Var, or LinExpr.");
|
|
491
539
|
}
|
|
492
540
|
}
|
|
541
|
+
function f(e, t = 0) {
|
|
542
|
+
if (e != null) {
|
|
543
|
+
if (typeof e == "number") {
|
|
544
|
+
u(e);
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
547
|
+
if (typeof e == "object") {
|
|
548
|
+
if (c(e)) {
|
|
549
|
+
u(e);
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
if (!(e instanceof String) && !(e instanceof Map) && Symbol.iterator in e && typeof e[Symbol.iterator] == "function") {
|
|
553
|
+
if (t >= 2) throw Error("Nested containers deeper than 2D are not supported in sum().");
|
|
554
|
+
for (let n of e) f(n, t + 1);
|
|
555
|
+
return;
|
|
556
|
+
}
|
|
557
|
+
if (l(e)) {
|
|
558
|
+
if (t >= 2) throw Error("Nested containers deeper than 2D are not supported in sum().");
|
|
559
|
+
if (Object.getOwnPropertySymbols(e).length > 0) throw Error("Symbol keys are not supported in sum().");
|
|
560
|
+
for (let n of Object.keys(e)) f(e[n], t + 1);
|
|
561
|
+
return;
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
u(e);
|
|
565
|
+
}
|
|
566
|
+
}
|
|
493
567
|
if (typeof e == "number") {
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
568
|
+
if (typeof t != "function") throw Error("sum(count, mapFn) requires a mapping function as the second argument.");
|
|
569
|
+
if (!Number.isInteger(e) || e < 0) throw Error("sum(count, mapFn) requires a non-negative integer count.");
|
|
570
|
+
let n = e;
|
|
571
|
+
for (let e = 0; e < n; e++) f(t(e, e), 0);
|
|
572
|
+
} else if (typeof e == "object" && e && !(e instanceof String) && (!(e instanceof Map) || typeof t == "function") && Symbol.iterator in e && typeof e[Symbol.iterator] == "function") {
|
|
497
573
|
let n = 0;
|
|
498
|
-
for (let r of e)
|
|
499
|
-
}
|
|
574
|
+
for (let r of e) t ? f(t(r, n++), 0) : f(r, 1);
|
|
575
|
+
} else if (l(e)) {
|
|
576
|
+
if (Object.getOwnPropertySymbols(e).length > 0) throw Error("Symbol keys are not supported in sum().");
|
|
577
|
+
let n = 0;
|
|
578
|
+
for (let r of Object.keys(e)) {
|
|
579
|
+
let i = e[r];
|
|
580
|
+
t ? f(t(i, n++), 0) : f(i, 1);
|
|
581
|
+
}
|
|
582
|
+
} else throw Error("Unsupported item in sum(): expected an Iterable, Record, or (count, mapFn).");
|
|
500
583
|
for (let [e, t] of n) t === 0 && n.delete(e);
|
|
501
584
|
return new h(n, r);
|
|
502
585
|
}
|
|
@@ -839,18 +922,18 @@ function R(e) {
|
|
|
839
922
|
varOrder: s
|
|
840
923
|
};
|
|
841
924
|
}
|
|
842
|
-
function z(e) {
|
|
843
|
-
let { sense:
|
|
844
|
-
|
|
845
|
-
let
|
|
846
|
-
if (
|
|
925
|
+
function z(e, t) {
|
|
926
|
+
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 = [];
|
|
927
|
+
f.push(n && n.toLowerCase() === "maximize" ? "Maximize" : "Minimize");
|
|
928
|
+
let p = [], h = !0, g = r instanceof m ? r.linearTerms : r.terms;
|
|
929
|
+
if (g) for (let [e, t] of g) {
|
|
847
930
|
if (t === 0) continue;
|
|
848
|
-
let n =
|
|
849
|
-
|
|
931
|
+
let n = c.get(e), r = t >= 0 ? h ? "" : "+ " : "- ", i = Math.abs(t), a = i === 1 ? "" : `${i} `;
|
|
932
|
+
p.push(`${r}${a}${n}`), h = !1;
|
|
850
933
|
}
|
|
851
|
-
if (
|
|
852
|
-
let e = [], t = !0,
|
|
853
|
-
let t =
|
|
934
|
+
if (r instanceof m && r.quadTerms.size > 0) {
|
|
935
|
+
let e = [], t = !0, n = Array.from(r.quadTerms.values()).filter((e) => e.coeff !== 0).map((e) => {
|
|
936
|
+
let t = d.get(e.var1) ?? e.var1.id, n = d.get(e.var2) ?? e.var2.id, [r, i, a, o] = t <= n ? [
|
|
854
937
|
e.var1,
|
|
855
938
|
e.var2,
|
|
856
939
|
t,
|
|
@@ -869,51 +952,51 @@ function z(e) {
|
|
|
869
952
|
coeff: e.coeff
|
|
870
953
|
};
|
|
871
954
|
}).sort((e, t) => e.firstIdx - t.firstIdx || e.secondIdx - t.secondIdx);
|
|
872
|
-
for (let
|
|
873
|
-
let
|
|
874
|
-
|
|
955
|
+
for (let r of n) {
|
|
956
|
+
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);
|
|
957
|
+
r.firstVar === r.secondVar ? e.push(`${i}${o}${s} ^ 2`) : e.push(`${i}${o}${s} * ${l}`), t = !1;
|
|
875
958
|
}
|
|
876
959
|
if (e.length > 0) {
|
|
877
960
|
let t = `[ ${e.join(" ")} ] / 2`;
|
|
878
|
-
|
|
961
|
+
p.length > 0 ? p.push("+", t) : p.push(t);
|
|
879
962
|
}
|
|
880
963
|
}
|
|
881
|
-
let
|
|
882
|
-
|
|
883
|
-
for (let e of
|
|
884
|
-
let t =
|
|
964
|
+
let _ = p.length > 0 ? p.join(" ") : "0";
|
|
965
|
+
f.push(` obj: ${_}`), f.push("Subject To");
|
|
966
|
+
for (let e of i) {
|
|
967
|
+
let t = u.get(e), n = [], r = !0;
|
|
885
968
|
for (let [t, i] of e.lhs.terms) {
|
|
886
969
|
if (i === 0) continue;
|
|
887
|
-
let e =
|
|
888
|
-
n.push(`${a}${
|
|
970
|
+
let e = c.get(t), a = i >= 0 ? r ? "" : "+ " : "- ", o = Math.abs(i), s = o === 1 ? "" : `${o} `;
|
|
971
|
+
n.push(`${a}${s}${e}`), r = !1;
|
|
889
972
|
}
|
|
890
973
|
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
|
-
|
|
974
|
+
f.push(` ${t}: ${i} ${a} ${e.rhs}`);
|
|
975
|
+
}
|
|
976
|
+
f.push("Bounds");
|
|
977
|
+
let v = [], y = [];
|
|
978
|
+
for (let e of a) {
|
|
979
|
+
let t = c.get(e);
|
|
980
|
+
if (!o && e.type === "Binary") {
|
|
981
|
+
y.push(t);
|
|
899
982
|
continue;
|
|
900
983
|
}
|
|
901
|
-
e.type === "Integer" &&
|
|
984
|
+
!o && e.type === "Integer" && v.push(t);
|
|
902
985
|
let n = e.lb === -Infinity, r = e.ub === Infinity;
|
|
903
|
-
n && r ?
|
|
986
|
+
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
987
|
}
|
|
905
|
-
if (
|
|
906
|
-
|
|
907
|
-
for (let e = 0; e <
|
|
988
|
+
if (v.length > 0) {
|
|
989
|
+
f.push("Generals");
|
|
990
|
+
for (let e = 0; e < v.length; e += 10) f.push(" " + v.slice(e, e + 10).join(" "));
|
|
908
991
|
}
|
|
909
|
-
if (
|
|
910
|
-
|
|
911
|
-
for (let e = 0; e <
|
|
992
|
+
if (y.length > 0) {
|
|
993
|
+
f.push("Binary");
|
|
994
|
+
for (let e = 0; e < y.length; e += 10) f.push(" " + y.slice(e, e + 10).join(" "));
|
|
912
995
|
}
|
|
913
|
-
return
|
|
914
|
-
lpString:
|
|
915
|
-
nameToVar:
|
|
916
|
-
nameToConstraint:
|
|
996
|
+
return f.push("End"), {
|
|
997
|
+
lpString: f.join("\n") + "\n",
|
|
998
|
+
nameToVar: s,
|
|
999
|
+
nameToConstraint: l
|
|
917
1000
|
};
|
|
918
1001
|
}
|
|
919
1002
|
//#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-D7TZ3Wh_.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,
|
|
@@ -211,8 +211,8 @@ var l = class t {
|
|
|
211
211
|
B = !1;
|
|
212
212
|
break;
|
|
213
213
|
}
|
|
214
|
-
let n = f.get(e);
|
|
215
|
-
|
|
214
|
+
let n = f.get(e), r = n ? n.name : e, i = Math.abs(t) < 1e-9 ? 0 : t;
|
|
215
|
+
!l.relax && n && (n.type === "Integer" || n.type === "Binary") && Math.abs(i - Math.round(i)) <= 1e-5 && (i = Math.round(i) + 0), c(z, r, i);
|
|
216
216
|
}
|
|
217
217
|
if (B) for (let e of t.variables) {
|
|
218
218
|
let t = p.get(e) || e.name;
|
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-D7TZ3Wh_.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();
|