@ohtaman/washi 0.1.0 → 0.1.2

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 (46) hide show
  1. package/README.ja.md +72 -4
  2. package/README.md +72 -4
  3. package/README.zh-CN.md +72 -4
  4. package/dist/browser/_washi-optional-engine-282Ug7Gw.js +7 -0
  5. package/dist/browser/highs-browser-runtime-D13gHOT5.js +4189 -0
  6. package/dist/browser/highs-loader-T47YOyos.js +58 -0
  7. package/dist/browser/highs-worker.js +21 -0
  8. package/dist/browser/highs.wasm +0 -0
  9. package/dist/browser/highs.wasm.LICENSE +22 -0
  10. package/dist/browser/washi.js +1547 -0
  11. package/dist/browser/washi.min.js +5 -0
  12. package/dist/lib/{glpk-BC32ZaPG.js → glpk-5cUpjyb9.js} +14 -5
  13. package/dist/lib/highs-assets.js +1 -0
  14. package/dist/lib/highs-browser-runtime.js +4189 -0
  15. package/dist/lib/highs-loader-Blb99785.js +50 -0
  16. package/dist/lib/highs-node-runtime.js +1 -0
  17. package/dist/lib/highs-worker-factory.js +1 -0
  18. package/dist/lib/highs-worker.js +21 -0
  19. package/dist/lib/highs.wasm +0 -0
  20. package/dist/lib/solvers/glpk.js +1 -1
  21. package/dist/lib/solvers/z3.js +2 -2
  22. package/dist/lib/washi.js +92 -91
  23. package/dist/lib/z3-C6GeIicJ.js +509 -0
  24. package/dist/types/glpk-loader.d.ts.map +1 -1
  25. package/dist/types/highs-assets.d.ts +3 -0
  26. package/dist/types/highs-assets.d.ts.map +1 -0
  27. package/dist/types/highs-browser-runtime.d.ts +2 -0
  28. package/dist/types/highs-browser-runtime.d.ts.map +1 -0
  29. package/dist/types/highs-loader.d.ts +17 -1
  30. package/dist/types/highs-loader.d.ts.map +1 -1
  31. package/dist/types/highs-node-runtime.d.ts +2 -0
  32. package/dist/types/highs-node-runtime.d.ts.map +1 -0
  33. package/dist/types/highs-worker-client.d.ts.map +1 -1
  34. package/dist/types/highs-worker-factory.d.ts +3 -0
  35. package/dist/types/highs-worker-factory.d.ts.map +1 -0
  36. package/dist/types/index.d.ts +1 -1
  37. package/dist/types/index.d.ts.map +1 -1
  38. package/dist/types/modeler/solvers/highs.d.ts +6 -0
  39. package/dist/types/modeler/solvers/highs.d.ts.map +1 -1
  40. package/dist/types/modeler/solvers/types.d.ts +1 -1
  41. package/dist/types/modeler/solvers/types.d.ts.map +1 -1
  42. package/dist/types/modeler/solvers/z3.d.ts +4 -5
  43. package/dist/types/modeler/solvers/z3.d.ts.map +1 -1
  44. package/package.json +20 -7
  45. package/dist/lib/assets/highs-worker-D57nd9KC.js +0 -3
  46. package/dist/lib/z3-C5DfllfD.js +0 -562
@@ -1,562 +0,0 @@
1
- import { t as e } from "./glpk-BC32ZaPG.js";
2
- //#region src/modeler/boolean-expr.ts
3
- var t = 0, n = class {
4
- and(e) {
5
- return new i("and", [this, e]);
6
- }
7
- or(e) {
8
- return new i("or", [this, e]);
9
- }
10
- implies(e) {
11
- return new i("implies", [this, e]);
12
- }
13
- xor(e) {
14
- return new i("xor", [this, e]);
15
- }
16
- not() {
17
- return new i("not", [this]);
18
- }
19
- }, r = class extends n {
20
- id;
21
- name;
22
- value = null;
23
- constructor(e) {
24
- super(), this.id = ++t, this.name = e || `p_${this.id}`;
25
- }
26
- toString() {
27
- return this.name;
28
- }
29
- }, i = class extends n {
30
- op;
31
- children;
32
- constructor(e, t) {
33
- super(), this.op = e, this.children = t;
34
- }
35
- toString() {
36
- return this.op === "not" ? `not(${this.children[0].toString()})` : `(${this.children.map((e) => e.toString()).join(` ${this.op} `)})`;
37
- }
38
- };
39
- function a(...e) {
40
- if (e.length === 0) throw Error("and() requires at least one expression");
41
- return new i("and", e);
42
- }
43
- function o(...e) {
44
- if (e.length === 0) throw Error("or() requires at least one expression");
45
- return new i("or", e);
46
- }
47
- function s(e) {
48
- return new i("not", [e]);
49
- }
50
- function c(e, t) {
51
- return new i("implies", [e, t]);
52
- }
53
- function l(...e) {
54
- if (e.length === 0) throw Error("xor() requires at least one expression");
55
- return new i("xor", e);
56
- }
57
- //#endregion
58
- //#region src/modeler/constraint.ts
59
- var u = 0, d = class {
60
- id;
61
- lhs;
62
- sense;
63
- rhs;
64
- name;
65
- slack = null;
66
- dual = null;
67
- constructor(e, t, n, r) {
68
- this.id = ++u, this.lhs = e, this.sense = t, this.rhs = n, this.name = r || `c_${this.id}`;
69
- }
70
- get pi() {
71
- return this.dual;
72
- }
73
- and(e) {
74
- return new i("and", [this, e]);
75
- }
76
- or(e) {
77
- return new i("or", [this, e]);
78
- }
79
- implies(e) {
80
- return new i("implies", [this, e]);
81
- }
82
- xor(e) {
83
- return new i("xor", [this, e]);
84
- }
85
- not() {
86
- return new i("not", [this]);
87
- }
88
- toString() {
89
- let e = this.sense === "==" ? "=" : this.sense;
90
- return `${this.name}: ${this.lhs.toString()} ${e} ${this.rhs}`;
91
- }
92
- }, f = null, p = null;
93
- function m(e) {
94
- p = e, f = null;
95
- }
96
- function h() {
97
- return p;
98
- }
99
- async function g(e = {}) {
100
- return f || (f = (async () => {
101
- let t = await import("highs"), n = t.default || t;
102
- if (typeof process < "u" && process.versions && process.versions.node && process.type !== "renderer") return await n();
103
- let r = typeof window < "u" ? new URL("highs.wasm", window.location.href).href : typeof self < "u" && self.location ? new URL("highs.wasm", self.location.href).href : "/highs.wasm", i = e.wasmUrl || p || r;
104
- return await n({ locateFile: (e) => e.endsWith(".wasm") ? i : e });
105
- })(), f);
106
- }
107
- async function _(e, t = {}) {
108
- let n = await g(t), r = performance.now(), i = { output_flag: t.outputFlag ?? !1 };
109
- return t.timeLimit !== void 0 && (i.time_limit = t.timeLimit), t.presolve !== void 0 && (i.presolve = t.presolve), t.solver !== void 0 && (i.solver = t.solver), t.relGap !== void 0 && (i.mip_rel_gap = t.relGap), t.absGap !== void 0 && (i.mip_abs_gap = t.absGap), {
110
- result: n.solve(e, i),
111
- runTime: (performance.now() - r) / 1e3
112
- };
113
- }
114
- //#endregion
115
- //#region src/highs-worker-client.ts
116
- var v = null, y = 0, b = /* @__PURE__ */ new Map();
117
- function x() {
118
- if (typeof window > "u" || typeof Worker > "u") return null;
119
- if (!v) try {
120
- v = new Worker(new URL(
121
- /* @vite-ignore */
122
- "/assets/highs-worker-D57nd9KC.js",
123
- "" + import.meta.url
124
- ), { type: "module" }), v.onmessage = (e) => {
125
- let { type: t, id: n, result: r, runTime: i, error: a } = e.data, o = b.get(n);
126
- o && (b.delete(n), t === "SOLVE_SUCCESS" ? o.resolve({
127
- result: r,
128
- runTime: i
129
- }) : o.reject(Error(a || "Worker solve failed")));
130
- }, v.onerror = (e) => {
131
- console.error("HiGHS Web Worker error:", e);
132
- };
133
- } catch (e) {
134
- console.warn("Could not instantiate Web Worker, falling back to main thread:", e), v = null;
135
- }
136
- return v;
137
- }
138
- async function S(e, t = {}) {
139
- let n = t.useWorker ?? typeof window < "u" ? x() : null;
140
- if (!n) return _(e, t);
141
- let r = t.wasmUrl || h() || (typeof window < "u" ? new URL("highs.wasm", window.location.href).href : void 0), i = {
142
- ...t,
143
- ...r ? { wasmUrl: r } : {}
144
- }, a = `req_${++y}`;
145
- return new Promise((t, r) => {
146
- b.set(a, {
147
- resolve: t,
148
- reject: r
149
- }), n.postMessage({
150
- type: "SOLVE",
151
- id: a,
152
- lpString: e,
153
- options: i
154
- });
155
- });
156
- }
157
- //#endregion
158
- //#region src/modeler/solvers/highs.ts
159
- var C = class e {
160
- static capabilities = {
161
- supportsMIP: !0,
162
- supportsQP: !0
163
- };
164
- name = "HiGHS";
165
- version = "1.15.3";
166
- capabilities = e.capabilities;
167
- options;
168
- constructor(e = {}) {
169
- this.options = e;
170
- }
171
- async solve(e, t, n = {}) {
172
- let r = {
173
- ...this.options,
174
- ...n
175
- }, { lpString: i, nameToVar: a, nameToConstraint: o } = t, { result: s, runTime: c } = await S(i, r), l = s.Status || "Unknown", u;
176
- u = l.includes("Optimal") ? "Optimal" : l.includes("Infeasible") ? "Infeasible" : l.includes("Unbounded") ? "Unbounded" : l.includes("TimeLimit") || l.includes("Time limit") ? "TimeLimit" : l.includes("IterationLimit") ? "IterationLimit" : "Optimal";
177
- let d = s.ObjectiveValue, f = typeof d == "number" ? d + e.objective.constant : null, p = {}, m = {}, h = {}, g = {};
178
- if (s.Columns) for (let [e, t] of Object.entries(s.Columns)) {
179
- let n = a.get(e);
180
- if (n) {
181
- let e = Math.abs(t.Primal) < 1e-9 ? 0 : t.Primal;
182
- p[n.name] = e, t.Dual !== void 0 && (h[n.name] = Math.abs(t.Dual) < 1e-9 ? 0 : t.Dual);
183
- }
184
- }
185
- if (s.Rows) {
186
- let e = Array.isArray(s.Rows) ? s.Rows : Object.values(s.Rows);
187
- for (let t of e) {
188
- let e = t.Name, n = o.get(e);
189
- if (n && (t.Dual !== void 0 && (m[n.name] = Math.abs(t.Dual) < 1e-9 ? 0 : t.Dual), t.Primal !== void 0)) {
190
- let e = n.rhs - t.Primal;
191
- g[n.name] = Math.abs(e) < 1e-9 ? 0 : e;
192
- }
193
- }
194
- }
195
- return {
196
- status: u,
197
- objectiveValue: f,
198
- values: p,
199
- reducedCosts: h,
200
- duals: m,
201
- slacks: g,
202
- runTime: c,
203
- raw: s
204
- };
205
- }
206
- }, w = C, T = class {
207
- name;
208
- capabilities;
209
- options;
210
- constructor(e = {}) {
211
- this.name = e.name || "MockSolver", this.capabilities = e.capabilities || {
212
- supportsMIP: !0,
213
- supportsQP: !0
214
- }, this.options = e;
215
- }
216
- async solve(e, t, n = {}) {
217
- let r = {
218
- ...this.options,
219
- ...n
220
- };
221
- return r.delayMs && r.delayMs > 0 && await new Promise((e) => setTimeout(e, r.delayMs)), {
222
- status: r.status || "Optimal",
223
- objectiveValue: r.objectiveValue ?? 0,
224
- values: r.values || {},
225
- reducedCosts: r.reducedCosts,
226
- duals: r.duals,
227
- slacks: r.slacks,
228
- runTime: .001,
229
- raw: { mock: !0 }
230
- };
231
- }
232
- }, E = /* @__PURE__ */ new Map();
233
- E.set("highs", (e) => new C(e)), E.set("glpk", (t) => new e(t)), E.set("mock", (e) => new T(e));
234
- var D = (e) => new C(e);
235
- function O(e, t) {
236
- E.set(e.toLowerCase(), t);
237
- }
238
- function k(e) {
239
- if (typeof e == "string") {
240
- let t = E.get(e.toLowerCase());
241
- if (!t) throw Error(`Solver '${e}' is not registered.`);
242
- D = t;
243
- } else D = typeof e == "function" ? e : () => e;
244
- }
245
- function A(e, t) {
246
- if (!e) return D(t);
247
- if (typeof e == "string") {
248
- let n = E.get(e.toLowerCase());
249
- if (!n) throw Error(`Solver '${e}' not found. Available solvers: ${j().join(", ")}`);
250
- return n(t);
251
- }
252
- return e;
253
- }
254
- function j() {
255
- return Array.from(E.keys());
256
- }
257
- //#endregion
258
- //#region src/modeler/solvers/z3.ts
259
- var M = null;
260
- async function N() {
261
- return M ||= (async () => {
262
- try {
263
- return await (await import("z3-solver")).init();
264
- } catch (e) {
265
- throw Error(`Failed to load z3-solver. Ensure it is installed: npm install z3-solver. Error: ${e instanceof Error ? e.message : String(e)}`);
266
- }
267
- })(), M;
268
- }
269
- var P = class {
270
- name = "z3";
271
- capabilities = {
272
- supportsMIP: !0,
273
- supportsQP: !1,
274
- supportsSMT: !0,
275
- supportsUnsatCore: !0
276
- };
277
- createContextTranslator(e) {
278
- let t = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
279
- function a(n) {
280
- if (!t.has(n.name)) {
281
- let r = n.type === "Continuous" || n.type === "CONTINUOUS" ? e.Real.const(n.name) : e.Int.const(n.name);
282
- t.set(n.name, r);
283
- }
284
- return t.get(n.name);
285
- }
286
- function o(t) {
287
- if (!n.has(t.name)) {
288
- let r = e.Bool.const(t.name);
289
- n.set(t.name, r);
290
- }
291
- return n.get(t.name);
292
- }
293
- function s(t) {
294
- let n = null;
295
- if (t && t.terms) for (let [e, r] of t.terms.entries()) {
296
- let t = a(e).mul(r);
297
- n = n === null ? t : n.add(t);
298
- }
299
- let r = t && typeof t.constant == "number" ? t.constant : 0;
300
- if (r !== 0 || n === null) {
301
- let t = e.Real.val(r);
302
- n = n === null ? t : n.add(t);
303
- }
304
- return n;
305
- }
306
- function c(t) {
307
- let n = null;
308
- if (t.linearTerms) for (let [e, r] of t.linearTerms.entries()) {
309
- let t = a(e).mul(r);
310
- n = n === null ? t : n.add(t);
311
- }
312
- if (t.quadTerms) for (let e of t.quadTerms.values()) {
313
- let t = a(e.var1), r = a(e.var2), i = t.mul(r).mul(e.coeff);
314
- n = n === null ? i : n.add(i);
315
- }
316
- let r = t && typeof t.constant == "number" ? t.constant : 0;
317
- if (r !== 0 || n === null) {
318
- let t = e.Real.val(r);
319
- n = n === null ? t : n.add(t);
320
- }
321
- return n;
322
- }
323
- function l(e) {
324
- let t = e.lhs instanceof Object && "quadTerms" in e.lhs ? c(e.lhs) : s(e.lhs), n = typeof e.rhs == "number" ? e.rhs : 0;
325
- return e.sense === "<=" ? t.le(n) : e.sense === ">=" ? t.ge(n) : t.eq(n);
326
- }
327
- function u(t) {
328
- if (t instanceof r) return o(t);
329
- if (t instanceof d) return l(t);
330
- if (t instanceof i) switch (t.op) {
331
- case "and": return e.And(...t.children.map(u));
332
- case "or": return e.Or(...t.children.map(u));
333
- case "not": return e.Not(u(t.children[0]));
334
- case "implies": return e.Implies(u(t.children[0]), u(t.children[1]));
335
- case "xor": return e.Xor(u(t.children[0]), u(t.children[1]));
336
- default: throw Error(`Unsupported boolean operation: ${t.op}`);
337
- }
338
- throw Error(`Unknown logic element: ${String(t)}`);
339
- }
340
- function f(e) {
341
- if (!e) return 0;
342
- if (typeof e.asNumber == "function") return e.asNumber();
343
- let t = e.toString();
344
- if (t.startsWith("(/ ")) {
345
- let e = t.slice(3, -1).trim().split(/\s+/);
346
- if (e.length === 2) return Number(e[0]) / Number(e[1]);
347
- }
348
- return Number(t);
349
- }
350
- return {
351
- getVarAst: a,
352
- getBoolVarAst: o,
353
- translateLinExpr: s,
354
- translateQuadExpr: c,
355
- translateConstraint: l,
356
- translateBoolExpr: u,
357
- parseAstValue: f,
358
- varAstMap: t,
359
- boolVarAstMap: n
360
- };
361
- }
362
- async check(e, t = {}) {
363
- if (typeof window < "u" && window.document !== void 0) return this.fallbackCheck(e);
364
- try {
365
- let { Context: t } = await N(), n = new t(`check_${Date.now()}_${Math.random().toString(36).substring(2, 7)}`), r = new n.Solver(), i = this.createContextTranslator(n), a = e.variables || e.vars || [], o = e.boolVars || [], s = e.constraints || [], c = e.logicalConstraints || [];
366
- for (let e of a) {
367
- let t = i.getVarAst(e);
368
- e.lb !== -Infinity && r.add(t.ge(e.lb)), e.ub !== Infinity && r.add(t.le(e.ub)), (e.type === "Binary" || e.type === "BINARY") && (r.add(t.ge(0)), r.add(t.le(1)));
369
- }
370
- for (let e of s) {
371
- let t = i.translateConstraint(e), a = n.Bool.const(e.name);
372
- r.addAndTrack(t, a);
373
- }
374
- for (let e = 0; e < c.length; e++) {
375
- let t = c[e], a = t && t.name || `lc_${e + 1}`, o = t && t.expr || t, s = i.translateBoolExpr(o), l = n.Bool.const(a);
376
- r.addAndTrack(s, l);
377
- }
378
- let l = (await r.check()).toString();
379
- if (l === "sat") {
380
- let e = r.model(), t = {};
381
- for (let n of a) {
382
- let r = i.getVarAst(n), a = e.eval(r);
383
- t[n.name] = i.parseAstValue(a);
384
- }
385
- for (let n of o) {
386
- let r = i.getBoolVarAst(n), a = e.eval(r);
387
- t[n.name] = a.toString() === "true";
388
- }
389
- return {
390
- status: "Sat",
391
- values: t
392
- };
393
- }
394
- if (l === "unsat") {
395
- let e = r.unsatCore(), t = [], n = typeof e.length == "function" ? e.length() : e.length;
396
- for (let r = 0; r < n; r++) t.push(e.get(r).toString());
397
- return {
398
- status: "Unsat",
399
- values: {},
400
- unsatCore: t
401
- };
402
- }
403
- return {
404
- status: "Unknown",
405
- values: {}
406
- };
407
- } catch {
408
- return this.fallbackCheck(e);
409
- }
410
- }
411
- fallbackCheck(e) {
412
- let t = performance.now(), n = e.variables || e.vars || [], a = e.boolVars || [], o = e.constraints || [], s = e.logicalConstraints || [];
413
- function c(e, t) {
414
- let n = e.constant || 0;
415
- if (e.terms && e.terms instanceof Map) for (let [r, i] of e.terms.entries()) {
416
- let e = typeof r == "string" ? r : r.name;
417
- n += i * (t.get(e) ?? 0);
418
- }
419
- return n;
420
- }
421
- function l(e, t) {
422
- let n = c(e.lhs, t), r = 1e-6;
423
- return e.sense === "<=" ? n <= e.rhs + r : e.sense === ">=" ? n >= e.rhs - r : e.sense === "==" && Math.abs(n - e.rhs) <= r;
424
- }
425
- function u(e, t, n) {
426
- if (e instanceof r) return t.get(e.name) ?? !1;
427
- if (e instanceof d) return l(e, n);
428
- if (e instanceof i) switch (e.op) {
429
- case "and": return e.children.every((e) => u(e, t, n));
430
- case "or": return e.children.some((e) => u(e, t, n));
431
- case "not": return !u(e.children[0], t, n);
432
- case "implies": return !u(e.children[0], t, n) || u(e.children[1], t, n);
433
- case "xor": return u(e.children[0], t, n) !== u(e.children[1], t, n);
434
- }
435
- return !1;
436
- }
437
- let f = /* @__PURE__ */ new Map();
438
- for (let e of n) {
439
- let t = /* @__PURE__ */ new Set();
440
- e.lb !== -Infinity && t.add(e.lb), e.ub !== Infinity && t.add(e.ub), t.add(0);
441
- for (let n of o) if (n.lhs.terms && n.lhs.terms.has(e)) {
442
- let r = n.lhs.terms.get(e) || 1, i = (n.rhs - (n.lhs.constant || 0)) / r;
443
- t.add(i), t.add(i - 1), t.add(i + 1);
444
- }
445
- for (let n of s) {
446
- let r = n.expr || n, a = (n) => {
447
- if (n instanceof d) {
448
- if (n.lhs.terms && n.lhs.terms.has(e)) {
449
- let r = n.lhs.terms.get(e) || 1, i = (n.rhs - (n.lhs.constant || 0)) / r;
450
- t.add(i), t.add(i - 1), t.add(i + 1);
451
- }
452
- } else n instanceof i && n.children.forEach(a);
453
- };
454
- a(r);
455
- }
456
- if ((e.type === "Integer" || e.type === "INTEGER") && e.lb >= 0 && e.ub <= 25) for (let n = e.lb; n <= e.ub; n++) t.add(n);
457
- f.set(e.name, Array.from(t).filter((t) => t >= (e.lb ?? -Infinity) && t <= (e.ub ?? Infinity)));
458
- }
459
- function p(e, t) {
460
- let r = a.map((e) => e.name), i = 1 << r.length, o = n.map((e) => e.name), s = [/* @__PURE__ */ new Map()];
461
- for (let e of o) {
462
- let t = f.get(e) || [0], n = [];
463
- for (let r of s) for (let i of t) {
464
- let t = new Map(r);
465
- t.set(e, i), n.push(t);
466
- }
467
- s = n.slice(0, 500);
468
- }
469
- for (let n = 0; n < i; n++) {
470
- let i = /* @__PURE__ */ new Map();
471
- for (let e = 0; e < r.length; e++) i.set(r[e], !!(n & 1 << e));
472
- for (let n of s) if (e.every((e) => l(e, n)) && t.every((e) => u(e.expr, i, n))) return {
473
- isSat: !0,
474
- boolMap: i,
475
- numMap: n
476
- };
477
- }
478
- return { isSat: !1 };
479
- }
480
- let m = s.map((e, t) => ({
481
- name: e?.name || `lc_${t + 1}`,
482
- expr: e?.expr || e
483
- })), h = p(o, m), g = (performance.now() - t) / 1e3;
484
- if (h.isSat && h.boolMap && h.numMap) {
485
- let e = {};
486
- for (let [t, n] of h.numMap.entries()) e[t] = n;
487
- for (let [t, n] of h.boolMap.entries()) e[t] = n;
488
- return {
489
- status: "Sat",
490
- values: e,
491
- runTime: g
492
- };
493
- }
494
- let _ = [];
495
- for (let e = 0; e < o.length; e++) p(o.filter((t, n) => n !== e), m).isSat && _.push(o[e].name);
496
- for (let e = 0; e < m.length; e++) p(o, m.filter((t, n) => n !== e)).isSat && _.push(m[e].name);
497
- return {
498
- status: "Unsat",
499
- values: {},
500
- unsatCore: _.length > 0 ? _ : o.map((e) => e.name),
501
- runTime: g
502
- };
503
- }
504
- async solve(e, t, n = {}) {
505
- 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))) {
506
- let t = await this.check(e, n), r = {};
507
- for (let [e, n] of Object.entries(t.values)) r[e] = typeof n == "boolean" ? +!!n : n;
508
- return {
509
- status: t.status === "Sat" ? "Optimal" : t.status === "Unsat" ? "Infeasible" : "Error",
510
- objectiveValue: 0,
511
- values: r
512
- };
513
- }
514
- let { Context: r } = await N(), 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 || [];
515
- for (let e of s) {
516
- let t = o.getVarAst(e);
517
- e.lb !== -Infinity && a.add(t.ge(e.lb)), e.ub !== Infinity && a.add(t.le(e.ub)), (e.type === "Binary" || e.type === "BINARY") && (a.add(t.ge(0)), a.add(t.le(1)));
518
- }
519
- for (let e of l) {
520
- let t = o.translateConstraint(e);
521
- a.add(t);
522
- }
523
- for (let e of u) {
524
- let t = e && e.expr || e, n = o.translateBoolExpr(t);
525
- a.add(n);
526
- }
527
- let d = e.objective instanceof Object && "quadTerms" in e.objective ? o.translateQuadExpr(e.objective) : o.translateLinExpr(e.objective);
528
- (e.sense || "MINIMIZE").toUpperCase() === "MAXIMIZE" ? a.maximize(d) : a.minimize(d);
529
- let f = (await a.check()).toString();
530
- if (f === "sat") {
531
- let e = a.model(), t = {};
532
- for (let n of s) {
533
- let r = o.getVarAst(n), i = e.eval(r);
534
- t[n.name] = o.parseAstValue(i);
535
- }
536
- for (let n of c) {
537
- let r = o.getBoolVarAst(n), i = e.eval(r);
538
- t[n.name] = +(i.toString() === "true");
539
- }
540
- return {
541
- status: "Optimal",
542
- objectiveValue: o.parseAstValue(e.eval(d)),
543
- values: t
544
- };
545
- }
546
- return f === "unsat" ? {
547
- status: "Infeasible",
548
- objectiveValue: null,
549
- values: {}
550
- } : {
551
- status: "Error",
552
- objectiveValue: null,
553
- values: {}
554
- };
555
- }
556
- };
557
- function F() {
558
- O("z3", () => new P());
559
- }
560
- F();
561
- //#endregion
562
- export { l as S, r as _, O as a, s as b, w as c, h as d, m as f, i as g, n as h, j as i, C as l, d as m, F as n, k as o, _ as p, A as r, T as s, P as t, g as u, a as v, o as x, c as y };