@ohtaman/washi 0.1.2 → 0.3.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.
Files changed (104) hide show
  1. package/README.ja.md +195 -105
  2. package/README.md +195 -105
  3. package/README.zh-CN.md +197 -107
  4. package/dist/browser/highs-worker.js +2 -2
  5. package/dist/browser/{highs-loader-T47YOyos.js → loader-CVt4CloI.js} +2 -2
  6. package/dist/browser/solvers/glpk.js +1065 -0
  7. package/dist/browser/solvers/glpk.min.js +1 -0
  8. package/dist/browser/solvers/z3-built.js +8245 -0
  9. package/dist/browser/solvers/z3-built.wasm +4 -0
  10. package/dist/browser/solvers/z3.js +7550 -0
  11. package/dist/browser/solvers/z3.min.js +5 -0
  12. package/dist/browser/washi.js +370 -642
  13. package/dist/browser/washi.min.js +4 -4
  14. package/dist/lib/async-mutex-Duo4jwzn.js +195 -0
  15. package/dist/lib/constraint-BRuB3ooC.js +90 -0
  16. package/dist/lib/highs-worker.js +2 -2
  17. package/dist/lib/{highs-loader-Blb99785.js → loader-Dti0v9yC.js} +1 -1
  18. package/dist/lib/registry-DksqCSjI.js +32 -0
  19. package/dist/lib/solvers/glpk.js +161 -2
  20. package/dist/lib/solvers/z3-assets.js +1 -0
  21. package/dist/lib/solvers/z3-built.js +8245 -0
  22. package/dist/lib/solvers/z3-built.wasm +4 -0
  23. package/dist/lib/solvers/z3.js +476 -2
  24. package/dist/lib/washi.js +604 -248
  25. package/dist/types/index.d.ts +7 -10
  26. package/dist/types/index.d.ts.map +1 -1
  27. package/dist/types/modeler/constraint.d.ts +0 -3
  28. package/dist/types/modeler/constraint.d.ts.map +1 -1
  29. package/dist/types/modeler/expression.d.ts +16 -10
  30. package/dist/types/modeler/expression.d.ts.map +1 -1
  31. package/dist/types/modeler/index.d.ts +3 -5
  32. package/dist/types/modeler/index.d.ts.map +1 -1
  33. package/dist/types/modeler/model.d.ts +91 -12
  34. package/dist/types/modeler/model.d.ts.map +1 -1
  35. package/dist/types/modeler/solvers/glpk/index.d.ts +3 -0
  36. package/dist/types/modeler/solvers/glpk/index.d.ts.map +1 -0
  37. package/dist/types/modeler/solvers/glpk/loader.d.ts +16 -0
  38. package/dist/types/modeler/solvers/glpk/loader.d.ts.map +1 -0
  39. package/dist/types/modeler/solvers/glpk/solver.d.ts +26 -0
  40. package/dist/types/modeler/solvers/glpk/solver.d.ts.map +1 -0
  41. package/dist/types/modeler/solvers/glpk.d.ts +1 -21
  42. package/dist/types/modeler/solvers/glpk.d.ts.map +1 -1
  43. package/dist/types/{highs-assets.d.ts → modeler/solvers/highs/assets.d.ts} +1 -1
  44. package/dist/types/modeler/solvers/highs/assets.d.ts.map +1 -0
  45. package/dist/types/modeler/solvers/highs/browser-runtime.d.ts +2 -0
  46. package/dist/types/modeler/solvers/highs/browser-runtime.d.ts.map +1 -0
  47. package/dist/types/modeler/solvers/highs/index.d.ts +6 -0
  48. package/dist/types/modeler/solvers/highs/index.d.ts.map +1 -0
  49. package/dist/types/{highs-loader.d.ts → modeler/solvers/highs/loader.d.ts} +2 -2
  50. package/dist/types/modeler/solvers/highs/loader.d.ts.map +1 -0
  51. package/dist/types/{highs-node-runtime.d.ts → modeler/solvers/highs/node-runtime.d.ts} +1 -1
  52. package/dist/types/modeler/solvers/highs/node-runtime.d.ts.map +1 -0
  53. package/dist/types/modeler/solvers/highs/solver.d.ts +33 -0
  54. package/dist/types/modeler/solvers/highs/solver.d.ts.map +1 -0
  55. package/dist/types/modeler/solvers/highs/worker-client.d.ts +13 -0
  56. package/dist/types/modeler/solvers/highs/worker-client.d.ts.map +1 -0
  57. package/dist/types/{highs-worker-factory.d.ts → modeler/solvers/highs/worker-factory.d.ts} +1 -1
  58. package/dist/types/modeler/solvers/highs/worker-factory.d.ts.map +1 -0
  59. package/dist/types/modeler/solvers/highs/worker.d.ts +2 -0
  60. package/dist/types/modeler/solvers/highs/worker.d.ts.map +1 -0
  61. package/dist/types/modeler/solvers/highs.d.ts +1 -31
  62. package/dist/types/modeler/solvers/highs.d.ts.map +1 -1
  63. package/dist/types/modeler/solvers/index.d.ts +0 -2
  64. package/dist/types/modeler/solvers/index.d.ts.map +1 -1
  65. package/dist/types/modeler/solvers/mock.d.ts +1 -0
  66. package/dist/types/modeler/solvers/mock.d.ts.map +1 -1
  67. package/dist/types/modeler/solvers/registry.d.ts +1 -2
  68. package/dist/types/modeler/solvers/registry.d.ts.map +1 -1
  69. package/dist/types/modeler/solvers/types.d.ts +1 -1
  70. package/dist/types/modeler/solvers/z3/assets.d.ts +11 -0
  71. package/dist/types/modeler/solvers/z3/assets.d.ts.map +1 -0
  72. package/dist/types/modeler/solvers/z3/index.d.ts +3 -0
  73. package/dist/types/modeler/solvers/z3/index.d.ts.map +1 -0
  74. package/dist/types/modeler/solvers/z3/loader.d.ts +56 -0
  75. package/dist/types/modeler/solvers/z3/loader.d.ts.map +1 -0
  76. package/dist/types/modeler/solvers/z3/solver.d.ts +34 -0
  77. package/dist/types/modeler/solvers/z3/solver.d.ts.map +1 -0
  78. package/dist/types/modeler/solvers/z3.d.ts +1 -35
  79. package/dist/types/modeler/solvers/z3.d.ts.map +1 -1
  80. package/dist/types/modeler/types.d.ts +8 -3
  81. package/dist/types/modeler/types.d.ts.map +1 -1
  82. package/dist/types/modeler/variable.d.ts +1 -6
  83. package/dist/types/modeler/variable.d.ts.map +1 -1
  84. package/package.json +28 -6
  85. package/dist/browser/_washi-optional-engine-282Ug7Gw.js +0 -7
  86. package/dist/lib/glpk-5cUpjyb9.js +0 -135
  87. package/dist/lib/z3-C6GeIicJ.js +0 -509
  88. package/dist/types/glpk-loader.d.ts +0 -8
  89. package/dist/types/glpk-loader.d.ts.map +0 -1
  90. package/dist/types/highs-assets.d.ts.map +0 -1
  91. package/dist/types/highs-browser-runtime.d.ts +0 -2
  92. package/dist/types/highs-browser-runtime.d.ts.map +0 -1
  93. package/dist/types/highs-loader.d.ts.map +0 -1
  94. package/dist/types/highs-node-runtime.d.ts.map +0 -1
  95. package/dist/types/highs-worker-client.d.ts +0 -12
  96. package/dist/types/highs-worker-client.d.ts.map +0 -1
  97. package/dist/types/highs-worker-factory.d.ts.map +0 -1
  98. package/dist/types/highs-worker.d.ts +0 -2
  99. package/dist/types/highs-worker.d.ts.map +0 -1
  100. package/dist/types/modeler/mip-compat.d.ts +0 -43
  101. package/dist/types/modeler/mip-compat.d.ts.map +0 -1
  102. package/dist/types/modeler/pulp-compat.d.ts +0 -67
  103. package/dist/types/modeler/pulp-compat.d.ts.map +0 -1
  104. /package/dist/browser/{highs-browser-runtime-D13gHOT5.js → browser-runtime-D13gHOT5.js} +0 -0
@@ -1,509 +0,0 @@
1
- import { c as e, o as t } from "./highs-loader-Blb99785.js";
2
- import { t as n } from "./glpk-5cUpjyb9.js";
3
- import { createHighsWorker as r } from "./highs-worker-factory.js";
4
- //#region src/modeler/boolean-expr.ts
5
- var i = 0, a = class {
6
- and(e) {
7
- return new s("and", [this, e]);
8
- }
9
- or(e) {
10
- return new s("or", [this, e]);
11
- }
12
- implies(e) {
13
- return new s("implies", [this, e]);
14
- }
15
- xor(e) {
16
- return new s("xor", [this, e]);
17
- }
18
- not() {
19
- return new s("not", [this]);
20
- }
21
- }, o = class extends a {
22
- id;
23
- name;
24
- value = null;
25
- constructor(e) {
26
- super(), this.id = ++i, this.name = e || `p_${this.id}`;
27
- }
28
- toString() {
29
- return this.name;
30
- }
31
- }, s = class extends a {
32
- op;
33
- children;
34
- constructor(e, t) {
35
- super(), this.op = e, this.children = t;
36
- }
37
- toString() {
38
- return this.op === "not" ? `not(${this.children[0].toString()})` : `(${this.children.map((e) => e.toString()).join(` ${this.op} `)})`;
39
- }
40
- };
41
- function c(...e) {
42
- if (e.length === 0) throw Error("and() requires at least one expression");
43
- return new s("and", e);
44
- }
45
- function l(...e) {
46
- if (e.length === 0) throw Error("or() requires at least one expression");
47
- return new s("or", e);
48
- }
49
- function u(e) {
50
- return new s("not", [e]);
51
- }
52
- function d(e, t) {
53
- return new s("implies", [e, t]);
54
- }
55
- function f(...e) {
56
- if (e.length === 0) throw Error("xor() requires at least one expression");
57
- return new s("xor", e);
58
- }
59
- //#endregion
60
- //#region src/modeler/constraint.ts
61
- var p = 0, m = class {
62
- id;
63
- lhs;
64
- sense;
65
- rhs;
66
- name;
67
- slack = null;
68
- dual = null;
69
- constructor(e, t, n, r) {
70
- this.id = ++p, this.lhs = e, this.sense = t, this.rhs = n, this.name = r || `c_${this.id}`;
71
- }
72
- get pi() {
73
- return this.dual;
74
- }
75
- and(e) {
76
- return new s("and", [this, e]);
77
- }
78
- or(e) {
79
- return new s("or", [this, e]);
80
- }
81
- implies(e) {
82
- return new s("implies", [this, e]);
83
- }
84
- xor(e) {
85
- return new s("xor", [this, e]);
86
- }
87
- not() {
88
- return new s("not", [this]);
89
- }
90
- toString() {
91
- let e = this.sense === "==" ? "=" : this.sense;
92
- return `${this.name}: ${this.lhs.toString()} ${e} ${this.rhs}`;
93
- }
94
- }, h = null, g = 0, _ = /* @__PURE__ */ new Map();
95
- function v() {
96
- if (typeof window > "u" || typeof Worker > "u") return null;
97
- if (!h) try {
98
- h = r();
99
- let e = h;
100
- h.onmessage = (e) => {
101
- let { type: t, id: n, result: r, runTime: i, error: a } = e.data, o = _.get(n);
102
- o && (_.delete(n), t === "SOLVE_SUCCESS" ? o.resolve({
103
- result: r,
104
- runTime: i
105
- }) : o.reject(Error(a || "Worker solve failed")));
106
- };
107
- let t = (t) => {
108
- if (h === e) {
109
- h = null, e.terminate();
110
- for (let e of _.values()) e.reject(t);
111
- _.clear();
112
- }
113
- };
114
- h.onerror = (e) => t(/* @__PURE__ */ Error(`[WaSHI] HiGHS Worker failed to load or execute. Check Worker assets, CORS and CSP. ${e.message || ""}`)), h.onmessageerror = () => t(/* @__PURE__ */ Error("[WaSHI] Could not deserialize the HiGHS Worker response."));
115
- } catch (e) {
116
- console.warn("Could not instantiate Web Worker, falling back to main thread:", e), h = null;
117
- }
118
- return h;
119
- }
120
- async function y(n, r = {}) {
121
- let i = await t(r.wasmUrl), a = r.useWorker ?? typeof window < "u" ? v() : null;
122
- if (!a) return e(n, r);
123
- let o = {
124
- ...r,
125
- wasmUrl: i
126
- }, s = `req_${++g}`;
127
- return new Promise((e, t) => {
128
- _.set(s, {
129
- resolve: e,
130
- reject: t
131
- });
132
- try {
133
- a.postMessage({
134
- type: "SOLVE",
135
- id: s,
136
- lpString: n,
137
- options: o
138
- });
139
- } catch (e) {
140
- _.delete(s), t(e);
141
- }
142
- });
143
- }
144
- //#endregion
145
- //#region src/modeler/solvers/highs.ts
146
- function b(e) {
147
- if (typeof e != "string") return "Unknown";
148
- let t = e.trim();
149
- if (!t) return "Unknown";
150
- switch (t) {
151
- case "Optimal": return "Optimal";
152
- case "Infeasible": return "Infeasible";
153
- case "Unbounded": return "Unbounded";
154
- case "Primal infeasible or unbounded": return "Unknown";
155
- case "Time limit reached":
156
- case "TimeLimit": return "TimeLimit";
157
- case "Iteration limit reached":
158
- case "IterationLimit": return "IterationLimit";
159
- case "Bound on objective reached":
160
- case "Target for objective reached":
161
- case "Feasible": return "Feasible";
162
- case "Not Set": return "NotSolved";
163
- case "Load error":
164
- case "Model error":
165
- case "Presolve error":
166
- case "Solve error":
167
- case "Postsolve error":
168
- case "Error": return "Error";
169
- case "Empty":
170
- case "Unknown": return "Unknown";
171
- }
172
- let n = t.toLowerCase();
173
- return n.includes("infeasible") && n.includes("unbounded") ? "Unknown" : n.includes("infeasible") ? "Infeasible" : n.includes("unbounded") ? "Unbounded" : n.includes("time limit") || n.includes("timelimit") ? "TimeLimit" : n.includes("iteration limit") || n.includes("iterationlimit") ? "IterationLimit" : n.includes("error") ? "Error" : n === "optimal" ? "Optimal" : "Unknown";
174
- }
175
- var x = class e {
176
- static capabilities = {
177
- supportsMIP: !0,
178
- supportsQP: !0
179
- };
180
- name = "HiGHS";
181
- version = "1.15.3";
182
- capabilities = e.capabilities;
183
- options;
184
- constructor(e = {}) {
185
- this.options = e;
186
- }
187
- async solve(e, t, n = {}) {
188
- let r = {
189
- ...this.options,
190
- ...n
191
- }, { lpString: i, nameToVar: a, nameToConstraint: o } = t, { result: s, runTime: c } = await y(i, r), l = b(s?.Status), u = s.ObjectiveValue, d = typeof u == "number" ? u + e.objective.constant : null, f = {}, p = {}, m = {}, h = {};
192
- if (s.Columns) for (let [e, t] of Object.entries(s.Columns)) {
193
- let n = a.get(e);
194
- if (n) {
195
- let e = Math.abs(t.Primal) < 1e-9 ? 0 : t.Primal;
196
- f[n.name] = e, t.Dual !== void 0 && (m[n.name] = Math.abs(t.Dual) < 1e-9 ? 0 : t.Dual);
197
- }
198
- }
199
- if (s.Rows) {
200
- let e = Array.isArray(s.Rows) ? s.Rows : Object.values(s.Rows);
201
- for (let t of e) {
202
- let e = t.Name, n = o.get(e);
203
- if (n && (t.Dual !== void 0 && (p[n.name] = Math.abs(t.Dual) < 1e-9 ? 0 : t.Dual), t.Primal !== void 0)) {
204
- let e = n.rhs - t.Primal;
205
- h[n.name] = Math.abs(e) < 1e-9 ? 0 : e;
206
- }
207
- }
208
- }
209
- return {
210
- status: l,
211
- objectiveValue: d,
212
- values: f,
213
- reducedCosts: m,
214
- duals: p,
215
- slacks: h,
216
- runTime: c,
217
- raw: s
218
- };
219
- }
220
- }, S = x, C = class {
221
- name;
222
- capabilities;
223
- options;
224
- constructor(e = {}) {
225
- this.name = e.name || "MockSolver", this.capabilities = e.capabilities || {
226
- supportsMIP: !0,
227
- supportsQP: !0
228
- }, this.options = e;
229
- }
230
- async solve(e, t, n = {}) {
231
- let r = {
232
- ...this.options,
233
- ...n
234
- };
235
- return r.delayMs && r.delayMs > 0 && await new Promise((e) => setTimeout(e, r.delayMs)), {
236
- status: r.status || "Optimal",
237
- objectiveValue: r.objectiveValue ?? 0,
238
- values: r.values || {},
239
- reducedCosts: r.reducedCosts,
240
- duals: r.duals,
241
- slacks: r.slacks,
242
- runTime: .001,
243
- raw: { mock: !0 }
244
- };
245
- }
246
- }, w = /* @__PURE__ */ new Map();
247
- w.set("highs", (e) => new x(e)), w.set("glpk", (e) => new n(e)), w.set("mock", (e) => new C(e));
248
- var T = (e) => new x(e);
249
- function E(e, t) {
250
- w.set(e.toLowerCase(), t);
251
- }
252
- function D(e) {
253
- if (typeof e == "string") {
254
- let t = w.get(e.toLowerCase());
255
- if (!t) throw Error(`Solver '${e}' is not registered.`);
256
- T = t;
257
- } else T = typeof e == "function" ? e : () => e;
258
- }
259
- function O(e, t) {
260
- if (!e) return T(t);
261
- if (typeof e == "string") {
262
- let n = w.get(e.toLowerCase());
263
- if (!n) throw Error(`Solver '${e}' not found. Available solvers: ${k().join(", ")}`);
264
- return n(t);
265
- }
266
- return e;
267
- }
268
- function k() {
269
- return Array.from(w.keys());
270
- }
271
- //#endregion
272
- //#region src/modeler/solvers/z3.ts
273
- var A = null;
274
- async function j() {
275
- if (!A) {
276
- let e = (async () => {
277
- try {
278
- return await (await import("z3-solver")).init();
279
- } catch (e) {
280
- throw Error(`[WaSHI] Failed to load z3-solver. Ensure the optional dependency is installed (npm install z3-solver) and supported in this environment. Error: ${e instanceof Error ? e.message : String(e)}`, { cause: e });
281
- }
282
- })();
283
- e.catch(() => {
284
- A === e && (A = null);
285
- }), A = e;
286
- }
287
- return A;
288
- }
289
- function M() {
290
- A = null;
291
- }
292
- var N = class {
293
- name = "z3";
294
- capabilities = {
295
- supportsMIP: !0,
296
- supportsQP: !1,
297
- supportsSMT: !0,
298
- supportsUnsatCore: !0
299
- };
300
- createContextTranslator(e) {
301
- let t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
302
- function r(n) {
303
- if (!t.has(n.name)) {
304
- let r = n.type === "Continuous" || n.type === "CONTINUOUS" ? e.Real.const(n.name) : e.Int.const(n.name);
305
- t.set(n.name, r);
306
- }
307
- return t.get(n.name);
308
- }
309
- function i(t) {
310
- if (!n.has(t.name)) {
311
- let r = e.Bool.const(t.name);
312
- n.set(t.name, r);
313
- }
314
- return n.get(t.name);
315
- }
316
- function a(t) {
317
- return typeof e.isInt == "function" && e.isInt(t) ? e.ToReal(t) : t;
318
- }
319
- function c(t, n) {
320
- let r = typeof e.isInt == "function" && e.isInt(t), i = typeof e.isInt == "function" && e.isInt(n);
321
- return r && i ? t.add(n) : a(t).add(a(n));
322
- }
323
- function l(t, n) {
324
- return typeof e.isInt == "function" && e.isInt(t) && Number.isInteger(n) ? t.mul(e.Int.val(n)) : a(t).mul(e.Real.val(n));
325
- }
326
- function u(t, n) {
327
- let r = typeof e.isInt == "function" && e.isInt(t), i = typeof e.isInt == "function" && e.isInt(n);
328
- return r && i ? t.mul(n) : a(t).mul(a(n));
329
- }
330
- function d(t, n) {
331
- return n && Number.isInteger(t) ? e.Int.val(t) : e.Real.val(t);
332
- }
333
- function f(t, n, r) {
334
- let i = typeof e.isInt == "function" && e.isInt(t) && Number.isInteger(r), o = i ? t : a(t), s = i ? e.Int.val(r) : e.Real.val(r);
335
- return n === "<=" ? o.le(s) : n === ">=" ? o.ge(s) : o.eq(s);
336
- }
337
- function p(t) {
338
- let n = null;
339
- if (t && t.terms) for (let [e, i] of t.terms.entries()) {
340
- let t = l(r(e), i);
341
- n = n === null ? t : c(n, t);
342
- }
343
- let i = t && typeof t.constant == "number" ? t.constant : 0;
344
- if (i !== 0 || n === null) {
345
- let t = d(i, n === null || typeof e.isInt == "function" && e.isInt(n));
346
- n = n === null ? t : c(n, t);
347
- }
348
- return n;
349
- }
350
- function h(t) {
351
- let n = null;
352
- if (t.linearTerms) for (let [e, i] of t.linearTerms.entries()) {
353
- let t = l(r(e), i);
354
- n = n === null ? t : c(n, t);
355
- }
356
- if (t.quadTerms) for (let e of t.quadTerms.values()) {
357
- let t = l(u(r(e.var1), r(e.var2)), e.coeff);
358
- n = n === null ? t : c(n, t);
359
- }
360
- let i = t && typeof t.constant == "number" ? t.constant : 0;
361
- if (i !== 0 || n === null) {
362
- let t = d(i, n === null || typeof e.isInt == "function" && e.isInt(n));
363
- n = n === null ? t : c(n, t);
364
- }
365
- return n;
366
- }
367
- function g(e) {
368
- let t = e.lhs instanceof Object && "quadTerms" in e.lhs ? h(e.lhs) : p(e.lhs), n = typeof e.rhs == "number" ? e.rhs : 0;
369
- return f(t, e.sense, n);
370
- }
371
- function _(t) {
372
- if (t instanceof o) return i(t);
373
- if (t instanceof m) return g(t);
374
- if (t instanceof s) switch (t.op) {
375
- case "and": return e.And(...t.children.map(_));
376
- case "or": return e.Or(...t.children.map(_));
377
- case "not": return e.Not(_(t.children[0]));
378
- case "implies": return e.Implies(_(t.children[0]), _(t.children[1]));
379
- case "xor": return e.Xor(_(t.children[0]), _(t.children[1]));
380
- default: throw Error(`Unsupported boolean operation: ${t.op}`);
381
- }
382
- throw Error(`Unknown logic element: ${String(t)}`);
383
- }
384
- function v(e) {
385
- if (!e) return 0;
386
- if (typeof e.asNumber == "function") return e.asNumber();
387
- let t = e.toString();
388
- if (t.startsWith("(/ ")) {
389
- let e = t.slice(3, -1).trim().split(/\s+/);
390
- if (e.length === 2) return Number(e[0]) / Number(e[1]);
391
- }
392
- return Number(t);
393
- }
394
- return {
395
- getVarAst: r,
396
- getBoolVarAst: i,
397
- compareAstWithNumber: f,
398
- translateLinExpr: p,
399
- translateQuadExpr: h,
400
- translateConstraint: g,
401
- translateBoolExpr: _,
402
- parseAstValue: v,
403
- varAstMap: t,
404
- boolVarAstMap: n
405
- };
406
- }
407
- async check(e, t = {}) {
408
- let { Context: n } = await j(), r = new n(`check_${Date.now()}_${Math.random().toString(36).substring(2, 7)}`), i = new r.Solver(), a = this.createContextTranslator(r), o = e.variables || e.vars || [], s = e.boolVars || [], c = e.constraints || [], l = e.logicalConstraints || [];
409
- for (let e of o) {
410
- let t = a.getVarAst(e);
411
- e.lb !== -Infinity && i.add(a.compareAstWithNumber(t, ">=", e.lb)), e.ub !== Infinity && i.add(a.compareAstWithNumber(t, "<=", e.ub)), (e.type === "Binary" || e.type === "BINARY") && (i.add(a.compareAstWithNumber(t, ">=", 0)), i.add(a.compareAstWithNumber(t, "<=", 1)));
412
- }
413
- for (let e of c) {
414
- let t = a.translateConstraint(e), n = r.Bool.const(e.name);
415
- i.addAndTrack(t, n);
416
- }
417
- for (let e = 0; e < l.length; e++) {
418
- let t = l[e], n = t && t.name || `lc_${e + 1}`, o = t && t.expr || t, s = a.translateBoolExpr(o), c = r.Bool.const(n);
419
- i.addAndTrack(s, c);
420
- }
421
- let u = (await i.check()).toString();
422
- if (u === "sat") {
423
- let e = i.model(), t = {};
424
- for (let n of o) {
425
- let r = a.getVarAst(n), i = e.eval(r);
426
- t[n.name] = a.parseAstValue(i);
427
- }
428
- for (let n of s) {
429
- let r = a.getBoolVarAst(n), i = e.eval(r);
430
- t[n.name] = i.toString() === "true";
431
- }
432
- return {
433
- status: "Sat",
434
- values: t
435
- };
436
- }
437
- if (u === "unsat") {
438
- let e = i.unsatCore(), t = [], n = typeof e.length == "function" ? e.length() : e.length;
439
- for (let r = 0; r < n; r++) t.push(e.get(r).toString());
440
- return {
441
- status: "Unsat",
442
- values: {},
443
- unsatCore: t
444
- };
445
- }
446
- return {
447
- status: "Unknown",
448
- values: {}
449
- };
450
- }
451
- async solve(e, t, n = {}) {
452
- if (!(e.objective !== null && e.objective !== void 0 && ("terms" in e.objective && e.objective.terms.size > 0 || "quadTerms" in e.objective && e.objective.quadTerms.length > 0 || e.objective.offset && e.objective.offset !== 0))) {
453
- let t = await this.check(e, n), r = {};
454
- for (let [e, n] of Object.entries(t.values)) r[e] = typeof n == "boolean" ? +!!n : n;
455
- return {
456
- status: t.status === "Sat" ? "Optimal" : t.status === "Unsat" ? "Infeasible" : "Error",
457
- objectiveValue: 0,
458
- values: r
459
- };
460
- }
461
- let { Context: r } = await j(), i = new r(`opt_${Date.now()}_${Math.random().toString(36).substring(2, 7)}`), a = new i.Optimize(), o = this.createContextTranslator(i), s = e.variables || e.vars || [], c = e.boolVars || [], l = e.constraints || [], u = e.logicalConstraints || [];
462
- for (let e of s) {
463
- let t = o.getVarAst(e);
464
- e.lb !== -Infinity && a.add(o.compareAstWithNumber(t, ">=", e.lb)), e.ub !== Infinity && a.add(o.compareAstWithNumber(t, "<=", e.ub)), (e.type === "Binary" || e.type === "BINARY") && (a.add(o.compareAstWithNumber(t, ">=", 0)), a.add(o.compareAstWithNumber(t, "<=", 1)));
465
- }
466
- for (let e of l) {
467
- let t = o.translateConstraint(e);
468
- a.add(t);
469
- }
470
- for (let e of u) {
471
- let t = e && e.expr || e, n = o.translateBoolExpr(t);
472
- a.add(n);
473
- }
474
- let d = e.objective instanceof Object && "quadTerms" in e.objective ? o.translateQuadExpr(e.objective) : o.translateLinExpr(e.objective);
475
- (e.sense || "MINIMIZE").toUpperCase() === "MAXIMIZE" ? a.maximize(d) : a.minimize(d);
476
- let f = (await a.check()).toString();
477
- if (f === "sat") {
478
- let e = a.model(), t = {};
479
- for (let n of s) {
480
- let r = o.getVarAst(n), i = e.eval(r);
481
- t[n.name] = o.parseAstValue(i);
482
- }
483
- for (let n of c) {
484
- let r = o.getBoolVarAst(n), i = e.eval(r);
485
- t[n.name] = +(i.toString() === "true");
486
- }
487
- return {
488
- status: "Optimal",
489
- objectiveValue: o.parseAstValue(e.eval(d)),
490
- values: t
491
- };
492
- }
493
- return f === "unsat" ? {
494
- status: "Infeasible",
495
- objectiveValue: null,
496
- values: {}
497
- } : {
498
- status: "Error",
499
- objectiveValue: null,
500
- values: {}
501
- };
502
- }
503
- };
504
- function P() {
505
- E("z3", () => new N());
506
- }
507
- P();
508
- //#endregion
509
- export { u as _, k as a, C as c, m as d, a as f, d as g, c as h, O as i, S as l, o as m, P as n, E as o, s as p, M as r, D as s, N as t, x as u, l as v, f as y };
@@ -1,8 +0,0 @@
1
- /**
2
- * Loader for GLPK (GNU Linear Programming Kit) WebAssembly / JS engine.
3
- * Supports both Node.js (glpk.js/node) and modern browsers (glpk.js worker).
4
- */
5
- type GlpkInstance = any;
6
- export declare function getGlpk(): Promise<GlpkInstance>;
7
- export {};
8
- //# sourceMappingURL=glpk-loader.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"glpk-loader.d.ts","sourceRoot":"","sources":["../../src/glpk-loader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,KAAK,YAAY,GAAG,GAAG,CAAC;AAIxB,wBAAsB,OAAO,IAAI,OAAO,CAAC,YAAY,CAAC,CA8BrD"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"highs-assets.d.ts","sourceRoot":"","sources":["../../src/highs-assets.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
@@ -1,2 +0,0 @@
1
- export { default } from "highs";
2
- //# sourceMappingURL=highs-browser-runtime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"highs-browser-runtime.d.ts","sourceRoot":"","sources":["../../src/highs-browser-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"highs-loader.d.ts","sourceRoot":"","sources":["../../src/highs-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD,eAAO,MAAM,2BAA2B,+DACsB,CAAC;AAE/D,KAAK,aAAa,GAAG,GAAG,CAAC;AAMzB,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,QAKjD;AAED,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAQ5D;AAED;;;GAGG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAgChE;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CASjF;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CA8CjF;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA6B3D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"highs-node-runtime.d.ts","sourceRoot":"","sources":["../../src/highs-node-runtime.ts"],"names":[],"mappings":"AAAA,wBAAsB,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,CAElD"}
@@ -1,12 +0,0 @@
1
- import type { SolveOptions } from "./modeler/types.js";
2
- import { type RawHighsSolveResult } from "./highs-loader.js";
3
- /**
4
- * Solve an LP model either in a background Web Worker or on the current thread
5
- */
6
- export declare function solveLp(lpString: string, options?: SolveOptions & {
7
- useWorker?: boolean;
8
- }): Promise<{
9
- result: RawHighsSolveResult;
10
- runTime: number;
11
- }>;
12
- //# sourceMappingURL=highs-worker-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"highs-worker-client.d.ts","sourceRoot":"","sources":["../../src/highs-worker-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAEL,KAAK,mBAAmB,EAEzB,MAAM,mBAAmB,CAAC;AAwD3B;;GAEG;AACH,wBAAsB,OAAO,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,YAAY,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACnD,OAAO,CAAC;IAAE,MAAM,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA0B3D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"highs-worker-factory.d.ts","sourceRoot":"","sources":["../../src/highs-worker-factory.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=highs-worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"highs-worker.d.ts","sourceRoot":"","sources":["../../src/highs-worker.ts"],"names":[],"mappings":""}
@@ -1,43 +0,0 @@
1
- import { Model as CoreModel } from "./model.js";
2
- import { Var } from "./variable.js";
3
- import { LinExpr, xsum } from "./expression.js";
4
- import { Constraint } from "./constraint.js";
5
- import type { VarType, OptimizationSense } from "./types.js";
6
- export declare const MINIMIZE: OptimizationSense;
7
- export declare const MAXIMIZE: OptimizationSense;
8
- export declare const BINARY: VarType;
9
- export declare const INTEGER: VarType;
10
- export declare const CONTINUOUS: VarType;
11
- export interface ObjectiveSpec {
12
- expr: LinExpr | Var | number | string;
13
- sense: OptimizationSense;
14
- }
15
- export declare function maximize(expr: LinExpr | Var | number | string): ObjectiveSpec;
16
- export declare function minimize(expr: LinExpr | Var | number | string): ObjectiveSpec;
17
- /**
18
- * python-mip compatible Model class
19
- */
20
- export declare class MipModel extends CoreModel {
21
- constructor(name?: string, sense?: OptimizationSense);
22
- /**
23
- * python-mip style variable creation: m.add_var(name="x", var_type=INTEGER, lb=0)
24
- */
25
- add_var(options?: {
26
- name?: string;
27
- var_type?: VarType;
28
- lb?: number;
29
- ub?: number;
30
- }): Var;
31
- /**
32
- * python-mip style objective property setter:
33
- * m.objective = maximize(30 * x + 50 * y)
34
- */
35
- set objective_spec(spec: ObjectiveSpec);
36
- get objective_value(): number | null;
37
- /**
38
- * Add constraint alias
39
- */
40
- add_constr(constraint: Constraint | string, name?: string): Constraint;
41
- }
42
- export { xsum };
43
- //# sourceMappingURL=mip-compat.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mip-compat.d.ts","sourceRoot":"","sources":["../../../src/modeler/mip-compat.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,iBAAiB,EAA8B,MAAM,YAAY,CAAC;AAEzF,eAAO,MAAM,QAAQ,EAAE,iBAA8B,CAAC;AACtD,eAAO,MAAM,QAAQ,EAAE,iBAA8B,CAAC;AAEtD,eAAO,MAAM,MAAM,EAAE,OAAkB,CAAC;AACxC,eAAO,MAAM,OAAO,EAAE,OAAmB,CAAC;AAC1C,eAAO,MAAM,UAAU,EAAE,OAAsB,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,CAAC;IACtC,KAAK,EAAE,iBAAiB,CAAC;CAC1B;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAE7E;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,aAAa,CAE7E;AAED;;GAEG;AACH,qBAAa,QAAS,SAAQ,SAAS;IACrC,YAAY,IAAI,GAAE,MAAmB,EAAE,KAAK,GAAE,iBAA4B,EAEzE;IAED;;OAEG;IACH,OAAO,CAAC,OAAO,GAAE;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;KACR,GAAG,GAAG,CAOX;IAED;;;OAGG;IACH,IAAI,cAAc,CAAC,IAAI,EAAE,aAAa,EAErC;IAED,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAEnC;IAED;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAErE;CACF;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
@@ -1,67 +0,0 @@
1
- import { Model } from "./model.js";
2
- import { Var } from "./variable.js";
3
- import { LinExpr, lpSum } from "./expression.js";
4
- import { QuadExpr } from "./quad-expr.js";
5
- import { Constraint } from "./constraint.js";
6
- import type { VarType, OptimizationSense, SolverStatus, SolveOptions } from "./types.js";
7
- import { type Solver, HiGHS, MockSolver, getSolver, listAvailableSolvers } from "./solvers/index.js";
8
- export declare const LpMinimize: OptimizationSense;
9
- export declare const LpMaximize: OptimizationSense;
10
- export declare const LpContinuous: VarType;
11
- export declare const LpInteger: VarType;
12
- export declare const LpBinary: VarType;
13
- export declare const LpStatus: Record<SolverStatus, string>;
14
- /**
15
- * PuLP-compatible LpVariable
16
- */
17
- export declare class LpVariable extends Var {
18
- constructor(name: string, lowBound?: number, upBound?: number, cat?: VarType);
19
- /**
20
- * PuLP-style LpVariable.dicts helper:
21
- * LpVariable.dicts("x", [0, 1, 2], 0, 1, LpBinary)
22
- */
23
- static dicts<K extends string | number>(name: string, indices: K[], lowBound?: number, upBound?: number, cat?: VarType): Record<K, LpVariable>;
24
- }
25
- /**
26
- * PuLP value() helper to extract value of variable or expression
27
- */
28
- export declare function value(item: Var | LinExpr | number | null | undefined): number | null;
29
- /**
30
- * PuLP-compatible LpProblem class
31
- */
32
- export declare class LpProblem {
33
- model: Model;
34
- constructor(name?: string, sense?: OptimizationSense);
35
- get name(): string;
36
- get sense(): OptimizationSense;
37
- set sense(val: OptimizationSense);
38
- get objective(): LinExpr | QuadExpr;
39
- get variables(): Var[];
40
- get constraints(): Constraint[];
41
- get status(): SolverStatus;
42
- get objectiveValue(): number | null;
43
- /**
44
- * Register a variable to the problem
45
- */
46
- addVariable(v: Var): Var;
47
- /**
48
- * Set objective function
49
- */
50
- setObjective(expr: LinExpr | Var | number | string): void;
51
- /**
52
- * Add a constraint
53
- */
54
- addConstraint(constraint: Constraint | string, name?: string): Constraint;
55
- /**
56
- * Convenient method to add either an objective or constraint
57
- */
58
- add(item: Constraint | LinExpr | Var | string, name?: string): void;
59
- /**
60
- * Solve the problem using specified solver (e.g. prob.solve(new HiGHS()), prob.solve(new GLPK()))
61
- * or default solver
62
- */
63
- solve(solverOrOptions?: Solver | string | SolveOptions, options?: SolveOptions): Promise<SolverStatus>;
64
- toLpString(): string;
65
- }
66
- export { lpSum, HiGHS, MockSolver, getSolver, listAvailableSolvers, };
67
- //# sourceMappingURL=pulp-compat.d.ts.map