es6-fuzz 5.0.0 → 6.0.3
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/.claude/settings.local.json +26 -0
- package/Readme.md +3 -6
- package/SECURITY.md +151 -0
- package/lib/curve/constant.d.ts +17 -0
- package/lib/curve/constant.d.ts.map +1 -0
- package/lib/curve/constant.js +21 -17
- package/lib/curve/constant.js.map +1 -0
- package/lib/curve/fuzzy-function.d.ts +15 -0
- package/lib/curve/fuzzy-function.d.ts.map +1 -0
- package/lib/curve/fuzzy-function.js +24 -19
- package/lib/curve/fuzzy-function.js.map +1 -0
- package/lib/curve/grade.d.ts +15 -0
- package/lib/curve/grade.d.ts.map +1 -0
- package/lib/curve/grade.js +30 -26
- package/lib/curve/grade.js.map +1 -0
- package/lib/curve/reverse-grade.d.ts +11 -0
- package/lib/curve/reverse-grade.d.ts.map +1 -0
- package/lib/curve/reverse-grade.js +30 -25
- package/lib/curve/reverse-grade.js.map +1 -0
- package/lib/curve/shape.d.ts +22 -0
- package/lib/curve/shape.d.ts.map +1 -0
- package/lib/curve/shape.js +32 -25
- package/lib/curve/shape.js.map +1 -0
- package/lib/curve/sigmoid.d.ts +24 -0
- package/lib/curve/sigmoid.d.ts.map +1 -0
- package/lib/curve/sigmoid.js +30 -23
- package/lib/curve/sigmoid.js.map +1 -0
- package/lib/curve/trapezoid.d.ts +15 -0
- package/lib/curve/trapezoid.d.ts.map +1 -0
- package/lib/curve/trapezoid.js +56 -47
- package/lib/curve/trapezoid.js.map +1 -0
- package/lib/curve/triangle.d.ts +15 -0
- package/lib/curve/triangle.d.ts.map +1 -0
- package/lib/curve/triangle.js +55 -47
- package/lib/curve/triangle.js.map +1 -0
- package/lib/logic.d.ts +49 -0
- package/lib/logic.d.ts.map +1 -0
- package/lib/logic.js +126 -130
- package/lib/logic.js.map +1 -0
- package/package.json +12 -6
- package/typedoc.json +20 -0
- package/docs/CHANGELOG.md +0 -162
- package/docs/glossary.md +0 -13
- package/docs/manual.md +0 -0
- package/jsdoc.json +0 -28
- package/scripts/publish-gh.js +0 -6
- package/test/bug-74-test.js +0 -100
- package/test/curve/constant.js +0 -15
- package/test/curve/fuzzy-function.js +0 -17
- package/test/curve/grade.js +0 -20
- package/test/curve/reverse-grade.js +0 -20
- package/test/curve/shape.js +0 -17
- package/test/curve/sigmoid.js +0 -93
- package/test/curve/trapezoid.js +0 -71
- package/test/curve/triangle.js +0 -21
- package/test/edge-cases.js +0 -244
- package/test/error-handling.js +0 -229
- package/test/example-test.js +0 -26
- package/test/init-called.test.js +0 -17
- package/test/integration.js +0 -343
- package/test/js-bool.test.js +0 -87
- package/test/logic-test.js +0 -67
package/lib/curve/sigmoid.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Sigmoid = void 0;
|
|
2
4
|
/**
|
|
3
5
|
* Class representing a Sigmoid.
|
|
4
6
|
* @example
|
|
@@ -7,28 +9,33 @@
|
|
|
7
9
|
* sigmoid2.fuzzify(10);
|
|
8
10
|
*/
|
|
9
11
|
class Sigmoid {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
12
|
+
center;
|
|
13
|
+
slope;
|
|
14
|
+
/**
|
|
15
|
+
* Create a Sigmoid Function.
|
|
16
|
+
* @param {number} center - The center point of the sigmoid curve (where it outputs 0.5)
|
|
17
|
+
* @param {number} slope - The slope of the sigmoid curve (higher = steeper transition)
|
|
18
|
+
*/
|
|
19
|
+
constructor(center = 0, slope = 1) {
|
|
20
|
+
this.center = center;
|
|
21
|
+
this.slope = slope;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Fuzzify
|
|
25
|
+
* @param {number} x - Point on X axis
|
|
26
|
+
* @return {number} fuzzy output 0..1
|
|
27
|
+
*/
|
|
28
|
+
fuzzify(x) {
|
|
29
|
+
if (this.slope === 0) {
|
|
30
|
+
// When slope is 0, sigmoid becomes a step function
|
|
31
|
+
if (x < this.center)
|
|
32
|
+
return 0;
|
|
33
|
+
if (x > this.center)
|
|
34
|
+
return 1;
|
|
35
|
+
return 0.5; // At center point
|
|
36
|
+
}
|
|
37
|
+
return 1.0 / (1.0 + Math.exp(-(x - this.center) / this.slope));
|
|
30
38
|
}
|
|
31
|
-
return 1.0 / (1.0 + Math.exp(-(x - this.center) / this.slope));
|
|
32
|
-
}
|
|
33
39
|
}
|
|
34
|
-
|
|
40
|
+
exports.Sigmoid = Sigmoid;
|
|
41
|
+
//# sourceMappingURL=sigmoid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sigmoid.js","sourceRoot":"","sources":["../../src/curve/sigmoid.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb;;;;;;GAMG;AACH,MAAa,OAAO;IACD,MAAM,CAAS;IACf,KAAK,CAAS;IAE/B;;;;OAIG;IACH,YAAY,SAAiB,CAAC,EAAE,QAAgB,CAAC;QAC/C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IACD;;;;OAIG;IACH,OAAO,CAAC,CAAS;QACf,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACrB,mDAAmD;YACnD,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,CAAC;YAC9B,OAAO,GAAG,CAAC,CAAC,kBAAkB;QAChC,CAAC;QACD,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjE,CAAC;CACF;AA3BD,0BA2BC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Shape } from './shape';
|
|
2
|
+
/**
|
|
3
|
+
* Class representing a Trapezoid.
|
|
4
|
+
* @example
|
|
5
|
+
* new Trapezoid(0, 10, 15, 20)
|
|
6
|
+
*/
|
|
7
|
+
export declare class Trapezoid extends Shape {
|
|
8
|
+
/**
|
|
9
|
+
* Fuzzify
|
|
10
|
+
* @param {number} val - Point on X axis
|
|
11
|
+
* @return {number} fuzzy output 0..1
|
|
12
|
+
*/
|
|
13
|
+
fuzzify(val: number): number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=trapezoid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trapezoid.d.ts","sourceRoot":"","sources":["../../src/curve/trapezoid.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC;;;;GAIG;AACH,qBAAa,SAAU,SAAQ,KAAK;IAClC;;;;OAIG;IACH,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAwC7B"}
|
package/lib/curve/trapezoid.js
CHANGED
|
@@ -1,55 +1,64 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Trapezoid = void 0;
|
|
4
|
+
const shape_1 = require("./shape");
|
|
3
5
|
/**
|
|
4
6
|
* Class representing a Trapezoid.
|
|
5
7
|
* @example
|
|
6
8
|
* new Trapezoid(0, 10, 15, 20)
|
|
7
9
|
*/
|
|
8
|
-
class Trapezoid extends Shape {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
10
|
+
class Trapezoid extends shape_1.Shape {
|
|
11
|
+
/**
|
|
12
|
+
* Fuzzify
|
|
13
|
+
* @param {number} val - Point on X axis
|
|
14
|
+
* @return {number} fuzzy output 0..1
|
|
15
|
+
*/
|
|
16
|
+
fuzzify(val) {
|
|
17
|
+
let result = 0;
|
|
18
|
+
const x = val;
|
|
19
|
+
// Special case: all points equal (spike at single point)
|
|
20
|
+
if (this.x0 === this.x1 && this.x1 === this.x2 && this.x2 === this.x3) {
|
|
21
|
+
return x === this.x0 ? 1 : 0;
|
|
22
|
+
}
|
|
23
|
+
// Special case: x0=x1 and x2=x3 (rectangle)
|
|
24
|
+
if (this.x0 === this.x1 && this.x2 === this.x3) {
|
|
25
|
+
if (x < this.x0)
|
|
26
|
+
return 0;
|
|
27
|
+
if (x >= this.x0 && x <= this.x2)
|
|
28
|
+
return 1;
|
|
29
|
+
if (x > this.x2)
|
|
30
|
+
return 0;
|
|
31
|
+
return 0;
|
|
32
|
+
}
|
|
33
|
+
if (x <= this.x0) {
|
|
34
|
+
result = 0;
|
|
35
|
+
}
|
|
36
|
+
else if (x >= this.x3) {
|
|
37
|
+
result = 0;
|
|
38
|
+
}
|
|
39
|
+
else if ((x >= this.x1) && (x <= this.x2)) {
|
|
40
|
+
result = 1;
|
|
41
|
+
}
|
|
42
|
+
else if ((x > this.x0) && (x < this.x1)) {
|
|
43
|
+
// Handle case where x0 = x1 (vertical left edge)
|
|
44
|
+
if (this.x1 === this.x0) {
|
|
45
|
+
result = 1;
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
result = (x / (this.x1 - this.x0)) - (this.x0 / (this.x1 - this.x0));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
// Handle case where x2 = x3 (vertical right edge)
|
|
53
|
+
if (this.x3 === this.x2) {
|
|
54
|
+
result = 1;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
result = (-x / (this.x3 - this.x2)) + (this.x3 / (this.x3 - this.x2));
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
21
61
|
}
|
|
22
|
-
|
|
23
|
-
// Special case: x0=x1 and x2=x3 (rectangle)
|
|
24
|
-
if (this.x0 === this.x1 && this.x2 === this.x3) {
|
|
25
|
-
if (x < this.x0) return 0;
|
|
26
|
-
if (x >= this.x0 && x <= this.x2) return 1;
|
|
27
|
-
if (x > this.x2) return 0;
|
|
28
|
-
return 0;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
if (x <= this.x0) {
|
|
32
|
-
result = 0;
|
|
33
|
-
} else if (x >= this.x3) {
|
|
34
|
-
result = 0;
|
|
35
|
-
} else if ((x >= this.x1) && (x <= this.x2)) {
|
|
36
|
-
result = 1;
|
|
37
|
-
} else if ((x > this.x0) && (x < this.x1)) {
|
|
38
|
-
// Handle case where x0 = x1 (vertical left edge)
|
|
39
|
-
if (this.x1 === this.x0) {
|
|
40
|
-
result = 1;
|
|
41
|
-
} else {
|
|
42
|
-
result = (x / (this.x1 - this.x0)) - (this.x0 / (this.x1 - this.x0));
|
|
43
|
-
}
|
|
44
|
-
} else {
|
|
45
|
-
// Handle case where x2 = x3 (vertical right edge)
|
|
46
|
-
if (this.x3 === this.x2) {
|
|
47
|
-
result = 1;
|
|
48
|
-
} else {
|
|
49
|
-
result = (-x / (this.x3 - this.x2)) + (this.x3 / (this.x3 - this.x2));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return result;
|
|
53
|
-
}
|
|
54
62
|
}
|
|
55
|
-
|
|
63
|
+
exports.Trapezoid = Trapezoid;
|
|
64
|
+
//# sourceMappingURL=trapezoid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trapezoid.js","sourceRoot":"","sources":["../../src/curve/trapezoid.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb,mCAAgC;AAChC;;;;GAIG;AACH,MAAa,SAAU,SAAQ,aAAK;IAClC;;;;OAIG;IACH,OAAO,CAAC,GAAW;QACjB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,GAAG,CAAC;QAEd,yDAAyD;QACzD,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACtE,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/C,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC1B,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1C,iDAAiD;YACjD,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBACxB,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,kDAAkD;YAClD,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;gBACxB,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA9CD,8BA8CC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Shape } from './shape';
|
|
2
|
+
/**
|
|
3
|
+
* Class representing a Triangle.
|
|
4
|
+
* @example
|
|
5
|
+
* new Triangle(0, 10, 20)
|
|
6
|
+
*/
|
|
7
|
+
export declare class Triangle extends Shape {
|
|
8
|
+
/**
|
|
9
|
+
* Fuzzify
|
|
10
|
+
* @param {number} x - Point on X axis
|
|
11
|
+
* @return {number} fuzzy output 0..1
|
|
12
|
+
*/
|
|
13
|
+
fuzzify(x: number): number;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=triangle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triangle.d.ts","sourceRoot":"","sources":["../../src/curve/triangle.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC;;;;OAIG;IACH,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;CAwC3B"}
|
package/lib/curve/triangle.js
CHANGED
|
@@ -1,55 +1,63 @@
|
|
|
1
1
|
'use strict';
|
|
2
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Triangle = void 0;
|
|
4
|
+
const shape_1 = require("./shape");
|
|
3
5
|
/**
|
|
4
6
|
* Class representing a Triangle.
|
|
5
7
|
* @example
|
|
6
8
|
* new Triangle(0, 10, 20)
|
|
7
9
|
*/
|
|
8
|
-
class Triangle extends Shape {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
10
|
+
class Triangle extends shape_1.Shape {
|
|
11
|
+
/**
|
|
12
|
+
* Fuzzify
|
|
13
|
+
* @param {number} x - Point on X axis
|
|
14
|
+
* @return {number} fuzzy output 0..1
|
|
15
|
+
*/
|
|
16
|
+
fuzzify(x) {
|
|
17
|
+
let result = 0;
|
|
18
|
+
// Special case: all points equal (spike at single point)
|
|
19
|
+
if (this.x0 === this.x1 && this.x1 === this.x2) {
|
|
20
|
+
return x === this.x0 ? 1 : 0;
|
|
21
|
+
}
|
|
22
|
+
// Special case: x0 = x1 (vertical left edge)
|
|
23
|
+
if (this.x0 === this.x1) {
|
|
24
|
+
if (x < this.x0)
|
|
25
|
+
return 0;
|
|
26
|
+
if (x === this.x0)
|
|
27
|
+
return 1;
|
|
28
|
+
if (x >= this.x2)
|
|
29
|
+
return 0;
|
|
30
|
+
if (x < this.x2) {
|
|
31
|
+
return (this.x2 - x) / (this.x2 - this.x1);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Special case: x1 = x2 (vertical right edge)
|
|
35
|
+
if (this.x1 === this.x2) {
|
|
36
|
+
if (x <= this.x0)
|
|
37
|
+
return 0;
|
|
38
|
+
if (x > this.x0 && x < this.x1) {
|
|
39
|
+
return (x - this.x0) / (this.x1 - this.x0);
|
|
40
|
+
}
|
|
41
|
+
if (x === this.x1)
|
|
42
|
+
return 1;
|
|
43
|
+
if (x > this.x1)
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
// Normal triangle
|
|
47
|
+
if (x <= this.x0) {
|
|
48
|
+
result = 0;
|
|
49
|
+
}
|
|
50
|
+
else if (x >= this.x2) {
|
|
51
|
+
result = 0;
|
|
52
|
+
}
|
|
53
|
+
else if ((x > this.x0) && (x <= this.x1)) {
|
|
54
|
+
result = (x - this.x0) / (this.x1 - this.x0);
|
|
55
|
+
}
|
|
56
|
+
else if ((x > this.x1) && (x < this.x2)) {
|
|
57
|
+
result = (this.x2 - x) / (this.x2 - this.x1);
|
|
58
|
+
}
|
|
59
|
+
return result;
|
|
20
60
|
}
|
|
21
|
-
|
|
22
|
-
// Special case: x0 = x1 (vertical left edge)
|
|
23
|
-
if (this.x0 === this.x1) {
|
|
24
|
-
if (x < this.x0) return 0;
|
|
25
|
-
if (x === this.x0) return 1;
|
|
26
|
-
if (x >= this.x2) return 0;
|
|
27
|
-
if (x < this.x2) {
|
|
28
|
-
return (this.x2 - x) / (this.x2 - this.x1);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
// Special case: x1 = x2 (vertical right edge)
|
|
33
|
-
if (this.x1 === this.x2) {
|
|
34
|
-
if (x <= this.x0) return 0;
|
|
35
|
-
if (x > this.x0 && x < this.x1) {
|
|
36
|
-
return (x - this.x0) / (this.x1 - this.x0);
|
|
37
|
-
}
|
|
38
|
-
if (x === this.x1) return 1;
|
|
39
|
-
if (x > this.x1) return 0;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
// Normal triangle
|
|
43
|
-
if (x <= this.x0) {
|
|
44
|
-
result = 0;
|
|
45
|
-
} else if (x >= this.x2) {
|
|
46
|
-
result = 0;
|
|
47
|
-
} else if ((x > this.x0) && (x <= this.x1)) {
|
|
48
|
-
result = (x - this.x0) / (this.x1 - this.x0);
|
|
49
|
-
} else if ((x > this.x1) && (x < this.x2)) {
|
|
50
|
-
result = (this.x2 - x) / (this.x2 - this.x1);
|
|
51
|
-
}
|
|
52
|
-
return result;
|
|
53
|
-
}
|
|
54
61
|
}
|
|
55
|
-
|
|
62
|
+
exports.Triangle = Triangle;
|
|
63
|
+
//# sourceMappingURL=triangle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triangle.js","sourceRoot":"","sources":["../../src/curve/triangle.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AACb,mCAAgC;AAChC;;;;GAIG;AACH,MAAa,QAAS,SAAQ,aAAK;IACjC;;;;OAIG;IACH,OAAO,CAAC,CAAS;QACf,IAAI,MAAM,GAAG,CAAC,CAAC;QAEf,yDAAyD;QACzD,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,6CAA6C;QAC7C,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,8CAA8C;QAC9C,IAAI,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;gBAC/B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;YAC7C,CAAC;YACD,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;YAC5B,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;gBAAE,OAAO,CAAC,CAAC;QAC5B,CAAC;QAED,kBAAkB;QAClB,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACxB,MAAM,GAAG,CAAC,CAAC;QACb,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3C,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC1C,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA9CD,4BA8CC"}
|
package/lib/logic.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { Shape } from './curve/shape';
|
|
2
|
+
import { Grade } from './curve/grade';
|
|
3
|
+
import { ReverseGrade } from './curve/reverse-grade';
|
|
4
|
+
import { Triangle } from './curve/triangle';
|
|
5
|
+
import { Trapezoid } from './curve/trapezoid';
|
|
6
|
+
import { Constant } from './curve/constant';
|
|
7
|
+
import { FuzzyFunction } from './curve/fuzzy-function';
|
|
8
|
+
import { Sigmoid } from './curve/sigmoid';
|
|
9
|
+
/** Class helping with FuzzyLogic. */
|
|
10
|
+
export declare class Logic {
|
|
11
|
+
private initCalled;
|
|
12
|
+
private rules;
|
|
13
|
+
c: {
|
|
14
|
+
Shape: typeof Shape;
|
|
15
|
+
Grade: typeof Grade;
|
|
16
|
+
ReverseGrade: typeof ReverseGrade;
|
|
17
|
+
Trapezoid: typeof Trapezoid;
|
|
18
|
+
Triangle: typeof Triangle;
|
|
19
|
+
Constant: typeof Constant;
|
|
20
|
+
FuzzyFunction: typeof FuzzyFunction;
|
|
21
|
+
Sigmoid: typeof Sigmoid;
|
|
22
|
+
};
|
|
23
|
+
constructor();
|
|
24
|
+
private checkInitCalled;
|
|
25
|
+
private checkOutputName;
|
|
26
|
+
init(output: string, shape: Shape): this;
|
|
27
|
+
and(output: string, shape: Shape): this;
|
|
28
|
+
or(output: string, shape: Shape): this;
|
|
29
|
+
not(output: string, shape: Shape): this;
|
|
30
|
+
defuzzify(value: number, as?: string): Logic.DefuzzifyResult;
|
|
31
|
+
}
|
|
32
|
+
export declare namespace Logic {
|
|
33
|
+
type RuleType = 'init' | 'and' | 'or' | 'not';
|
|
34
|
+
interface Rule {
|
|
35
|
+
output: string;
|
|
36
|
+
shape: Shape;
|
|
37
|
+
type: RuleType;
|
|
38
|
+
fuzzy?: number;
|
|
39
|
+
}
|
|
40
|
+
interface DefuzzifyResult {
|
|
41
|
+
boonJsInputs: Record<string, boolean>;
|
|
42
|
+
fuzzified: number;
|
|
43
|
+
defuzzified: string;
|
|
44
|
+
rules: Rule[];
|
|
45
|
+
valueOf(): number;
|
|
46
|
+
toString(): string;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=logic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logic.d.ts","sourceRoot":"","sources":["../src/logic.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAuB1C,qCAAqC;AACrC,qBAAa,KAAK;IAChB,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,KAAK,CAAc;IAEpB,CAAC,EAAE;QACR,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,KAAK,EAAE,OAAO,KAAK,CAAC;QACpB,YAAY,EAAE,OAAO,YAAY,CAAC;QAClC,SAAS,EAAE,OAAO,SAAS,CAAC;QAC5B,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC1B,QAAQ,EAAE,OAAO,QAAQ,CAAC;QAC1B,aAAa,EAAE,OAAO,aAAa,CAAC;QACpC,OAAO,EAAE,OAAO,OAAO,CAAC;KACzB,CAAC;;IAeF,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,eAAe;IAOvB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAQxC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAQvC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAQtC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAQvC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,eAAe;CAwD7D;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;IAErD,UAAiB,IAAI;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,QAAQ,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;IAED,UAAiB,eAAe;QAC9B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACtC,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;QACpB,KAAK,EAAE,IAAI,EAAE,CAAC;QACd,OAAO,IAAI,MAAM,CAAC;QAClB,QAAQ,IAAI,MAAM,CAAC;KACpB;CACF"}
|