@thi.ng/fuzzy 1.0.2 → 2.0.1

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/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [1.0.2](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy@1.0.1...@thi.ng/fuzzy@1.0.2) (2021-08-08)
6
+ ## [2.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy@2.0.0...@thi.ng/fuzzy@2.0.1) (2021-10-13)
7
7
 
8
8
  **Note:** Version bump only for package @thi.ng/fuzzy
9
9
 
@@ -11,58 +11,57 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
11
11
 
12
12
 
13
13
 
14
- ## [1.0.1](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy@0.1.14...@thi.ng/fuzzy@1.0.1) (2021-08-08)
15
-
16
- **Note:** Version bump only for package @thi.ng/fuzzy
17
-
18
-
19
-
20
-
21
-
22
- ## [0.1.14](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy@0.1.13...@thi.ng/fuzzy@0.1.14) (2021-08-04)
23
-
24
- **Note:** Version bump only for package @thi.ng/fuzzy
14
+ # [2.0.0](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy@1.0.4...@thi.ng/fuzzy@2.0.0) (2021-10-12)
25
15
 
26
16
 
17
+ ### Build System
27
18
 
19
+ * major update of ALL pkgs (export maps, ESM only) ([0d1d6ea](https://github.com/thi-ng/umbrella/commit/0d1d6ea9fab2a645d6c5f2bf2591459b939c09b6))
28
20
 
29
21
 
30
- ## [0.1.13](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy@0.1.12...@thi.ng/fuzzy@0.1.13) (2021-07-01)
31
-
32
- **Note:** Version bump only for package @thi.ng/fuzzy
22
+ ### BREAKING CHANGES
33
23
 
24
+ * discontinue CommonJS & UMD versions
34
25
 
26
+ - only ESM modules will be published from now on
27
+ - CJS obsolete due to ESM support in recent versions of node:
28
+ - i.e. launch NodeJS via:
29
+ - `node --experimental-specifier-resolution=node --experimental-repl-await`
30
+ - in the node REPL use `await import(...)` instead of `require()`
31
+ - UMD obsolete due to widespread browser support for ESM
35
32
 
33
+ Also:
34
+ - normalize/restructure/reorg all package.json files
35
+ - cleanup all build scripts, remove obsolete
36
+ - switch from mocha to @thi.ng/testament for all tests
36
37
 
37
38
 
38
- ## [0.1.12](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy@0.1.11...@thi.ng/fuzzy@0.1.12) (2021-06-08)
39
-
40
- **Note:** Version bump only for package @thi.ng/fuzzy
41
-
42
39
 
43
40
 
44
41
 
45
42
 
46
- # 0.1.0 (2020-12-22)
43
+ ## [1.0.4](https://github.com/thi-ng/umbrella/compare/@thi.ng/fuzzy@1.0.3...@thi.ng/fuzzy@1.0.4) (2021-09-03)
47
44
 
45
+ **Note:** Version bump only for package @thi.ng/fuzzy
48
46
 
49
- ### Features
47
+ # 0.1.0 (2020-12-22)
50
48
 
51
- * **fuzzy:** add alphaCut() & implication() fns ([8ec15fa](https://github.com/thi-ng/umbrella/commit/8ec15fa5c0f33fd7342c4047a5523e9fd0597ed1))
52
- * **fuzzy:** add evaluate() ([0ffc9d0](https://github.com/thi-ng/umbrella/commit/0ffc9d01f9bd40ba616d1f59e3ced74fa7c0dc7f))
53
- * **fuzzy:** add maxima(), compose(), restructure ([f15d8d7](https://github.com/thi-ng/umbrella/commit/f15d8d73df2a438d4866d57fc25fed625acd7a8a))
54
- * **fuzzy:** add min true threshold for classify() ([6f49a30](https://github.com/thi-ng/umbrella/commit/6f49a308c62a598f6d0a0e6e5046cd8e24d81eab))
55
- * **fuzzy:** add shapes, strongAnd(), update combineTerms() ([5bf8f0c](https://github.com/thi-ng/umbrella/commit/5bf8f0c01541afeb367eff21cb45118a1b62549a))
56
- * **fuzzy:** add strict arg for classify(), update docs ([b39248f](https://github.com/thi-ng/umbrella/commit/b39248f359aa0148ff72c484d78175f8f435fe97))
57
- * **fuzzy:** add/update/migrate defuzz strategies ([c1ee15f](https://github.com/thi-ng/umbrella/commit/c1ee15fdce2b08176c5bc97ba9ca7a56a84817c7))
58
- * **fuzzy:** import as new pkg, refactor ([a578194](https://github.com/thi-ng/umbrella/commit/a57819454f38de4c35095b64b9e7028d9ac21454))
59
- * **fuzzy:** make lvar, rules, defuzz() typesafe ([0b210c3](https://github.com/thi-ng/umbrella/commit/0b210c3841ce9184b8dfb83ca2dde5ceca0a3b6e))
60
- * **fuzzy:** migrate t-norms from [@thi](https://github.com/thi).ng/math pkg ([f8993e0](https://github.com/thi-ng/umbrella/commit/f8993e0dc1aed0243629a21d36ee85e91b2e938d))
61
- * **fuzzy:** update defuzz() & strategies ([cf337f3](https://github.com/thi-ng/umbrella/commit/cf337f36dbf24a9cfc4c6f364c3aea82428b5940))
62
- * **fuzzy:** update defuzz() output prep ([81abe8c](https://github.com/thi-ng/umbrella/commit/81abe8cb718ce335940234aecf693ba53564a715))
63
- * **fuzzy:** update types, update compose ([566469d](https://github.com/thi-ng/umbrella/commit/566469d5c420cc2c4fdc3b107e04b52929b61915))
49
+ ### Features
64
50
 
51
+ - **fuzzy:** add alphaCut() & implication() fns ([8ec15fa](https://github.com/thi-ng/umbrella/commit/8ec15fa5c0f33fd7342c4047a5523e9fd0597ed1))
52
+ - **fuzzy:** add evaluate() ([0ffc9d0](https://github.com/thi-ng/umbrella/commit/0ffc9d01f9bd40ba616d1f59e3ced74fa7c0dc7f))
53
+ - **fuzzy:** add maxima(), compose(), restructure ([f15d8d7](https://github.com/thi-ng/umbrella/commit/f15d8d73df2a438d4866d57fc25fed625acd7a8a))
54
+ - **fuzzy:** add min true threshold for classify() ([6f49a30](https://github.com/thi-ng/umbrella/commit/6f49a308c62a598f6d0a0e6e5046cd8e24d81eab))
55
+ - **fuzzy:** add shapes, strongAnd(), update combineTerms() ([5bf8f0c](https://github.com/thi-ng/umbrella/commit/5bf8f0c01541afeb367eff21cb45118a1b62549a))
56
+ - **fuzzy:** add strict arg for classify(), update docs ([b39248f](https://github.com/thi-ng/umbrella/commit/b39248f359aa0148ff72c484d78175f8f435fe97))
57
+ - **fuzzy:** add/update/migrate defuzz strategies ([c1ee15f](https://github.com/thi-ng/umbrella/commit/c1ee15fdce2b08176c5bc97ba9ca7a56a84817c7))
58
+ - **fuzzy:** import as new pkg, refactor ([a578194](https://github.com/thi-ng/umbrella/commit/a57819454f38de4c35095b64b9e7028d9ac21454))
59
+ - **fuzzy:** make lvar, rules, defuzz() typesafe ([0b210c3](https://github.com/thi-ng/umbrella/commit/0b210c3841ce9184b8dfb83ca2dde5ceca0a3b6e))
60
+ - **fuzzy:** migrate t-norms from [@thi](https://github.com/thi).ng/math pkg ([f8993e0](https://github.com/thi-ng/umbrella/commit/f8993e0dc1aed0243629a21d36ee85e91b2e938d))
61
+ - **fuzzy:** update defuzz() & strategies ([cf337f3](https://github.com/thi-ng/umbrella/commit/cf337f36dbf24a9cfc4c6f364c3aea82428b5940))
62
+ - **fuzzy:** update defuzz() output prep ([81abe8c](https://github.com/thi-ng/umbrella/commit/81abe8cb718ce335940234aecf693ba53564a715))
63
+ - **fuzzy:** update types, update compose ([566469d](https://github.com/thi-ng/umbrella/commit/566469d5c420cc2c4fdc3b107e04b52929b61915))
65
64
 
66
- ### Performance Improvements
65
+ ### Performance Improvements
67
66
 
68
- * **fuzzy:** update defuzz() ([60030dd](https://github.com/thi-ng/umbrella/commit/60030dd9a5ceb02d58ad89766e14f80019f6f72f))
67
+ - **fuzzy:** update defuzz() ([60030dd](https://github.com/thi-ng/umbrella/commit/60030dd9a5ceb02d58ad89766e14f80019f6f72f))
package/README.md CHANGED
@@ -72,15 +72,24 @@ Fuzzy logic operators & configurable rule inferencing engine.
72
72
  yarn add @thi.ng/fuzzy
73
73
  ```
74
74
 
75
+ ES module import:
76
+
75
77
  ```html
76
- // ES module
77
- <script type="module" src="https://unpkg.com/@thi.ng/fuzzy?module" crossorigin></script>
78
+ <script type="module" src="https://cdn.skypack.dev/@thi.ng/fuzzy"></script>
79
+ ```
80
+
81
+ [Skypack documentation](https://docs.skypack.dev/)
82
+
83
+ For Node.js REPL:
84
+
85
+ ```text
86
+ # with flag only for < v16
87
+ node --experimental-repl-await
78
88
 
79
- // UMD
80
- <script src="https://unpkg.com/@thi.ng/fuzzy/lib/index.umd.js" crossorigin></script>
89
+ > const fuzzy = await import("@thi.ng/fuzzy");
81
90
  ```
82
91
 
83
- Package sizes (gzipped, pre-treeshake): ESM: 1.64 KB / CJS: 1.82 KB / UMD: 1.74 KB
92
+ Package sizes (gzipped, pre-treeshake): ESM: 1.66 KB
84
93
 
85
94
  ## Dependencies
86
95
 
package/defuzz.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { LVarSet, Rule } from "./api";
1
+ import type { LVarSet, Rule } from "./api.js";
2
2
  /**
3
3
  * Takes an object of input {@link variable}s, an object of output variable,
4
4
  * rule array and an object of input values. Evaluates relevant terms of input
@@ -25,5 +25,5 @@ import type { LVarSet, Rule } from "./api";
25
25
  * @param imply
26
26
  * @param combine
27
27
  */
28
- export declare const defuzz: <I extends LVarSet<string>, O extends LVarSet<string>>(ins: I, outs: O, rules: Rule<I, O>[], vals: Partial<Record<keyof I, number>>, strategy?: import("./api").DefuzzStrategy, imply?: import("@thi.ng/api").FnN2, combine?: import("@thi.ng/api").FnN2) => Partial<Record<keyof O, number>>;
28
+ export declare const defuzz: <I extends LVarSet<string>, O extends LVarSet<string>>(ins: I, outs: O, rules: Rule<I, O>[], vals: Partial<Record<keyof I, number>>, strategy?: import("./api.js").DefuzzStrategy, imply?: import("@thi.ng/api").FnN2, combine?: import("@thi.ng/api").FnN2) => Partial<Record<keyof O, number>>;
29
29
  //# sourceMappingURL=defuzz.d.ts.map
package/defuzz.js CHANGED
@@ -1,6 +1,6 @@
1
- import { constant, intersect, union, weighted } from "./shapes";
2
- import { centroidStrategy } from "./strategies/centroid";
3
- import { snormMax, tnormMin } from "./tnorms";
1
+ import { constant, intersect, union, weighted } from "./shapes.js";
2
+ import { centroidStrategy } from "./strategies/centroid.js";
3
+ import { snormMax, tnormMin } from "./tnorms.js";
4
4
  /**
5
5
  * Takes an object of input {@link variable}s, an object of output variable,
6
6
  * rule array and an object of input values. Evaluates relevant terms of input
package/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- export * from "./api";
2
- export * from "./defuzz";
3
- export * from "./rules";
4
- export * from "./shapes";
5
- export * from "./tnorms";
6
- export * from "./var";
7
- export * from "./strategies/bisector";
8
- export * from "./strategies/centroid";
9
- export * from "./strategies/maxima";
1
+ export * from "./api.js";
2
+ export * from "./defuzz.js";
3
+ export * from "./rules.js";
4
+ export * from "./shapes.js";
5
+ export * from "./tnorms.js";
6
+ export * from "./var.js";
7
+ export * from "./strategies/bisector.js";
8
+ export * from "./strategies/centroid.js";
9
+ export * from "./strategies/maxima.js";
10
10
  //# sourceMappingURL=index.d.ts.map
package/index.js CHANGED
@@ -1,9 +1,9 @@
1
- export * from "./api";
2
- export * from "./defuzz";
3
- export * from "./rules";
4
- export * from "./shapes";
5
- export * from "./tnorms";
6
- export * from "./var";
7
- export * from "./strategies/bisector";
8
- export * from "./strategies/centroid";
9
- export * from "./strategies/maxima";
1
+ export * from "./api.js";
2
+ export * from "./defuzz.js";
3
+ export * from "./rules.js";
4
+ export * from "./shapes.js";
5
+ export * from "./tnorms.js";
6
+ export * from "./var.js";
7
+ export * from "./strategies/bisector.js";
8
+ export * from "./strategies/centroid.js";
9
+ export * from "./strategies/maxima.js";
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@thi.ng/fuzzy",
3
- "version": "1.0.2",
3
+ "version": "2.0.1",
4
4
  "description": "Fuzzy logic operators & configurable rule inferencing engine",
5
+ "type": "module",
5
6
  "module": "./index.js",
6
- "main": "./lib/index.js",
7
- "umd:main": "./lib/index.umd.js",
8
7
  "typings": "./index.d.ts",
8
+ "sideEffects": false,
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "https://github.com/thi-ng/umbrella.git"
@@ -24,29 +24,22 @@
24
24
  "author": "Karsten Schmidt <k+npm@thi.ng>",
25
25
  "license": "Apache-2.0",
26
26
  "scripts": {
27
- "build": "yarn clean && yarn build:es6 && node ../../scripts/bundle-module",
28
- "build:release": "yarn clean && yarn build:es6 && node ../../scripts/bundle-module all",
29
- "build:es6": "tsc --declaration",
30
- "build:test": "rimraf build && tsc -p test/tsconfig.json",
31
- "build:check": "tsc --isolatedModules --noEmit",
32
- "test": "mocha test",
33
- "cover": "nyc mocha test && nyc report --reporter=lcov",
34
- "clean": "rimraf *.js *.d.ts *.map .nyc_output build coverage doc lib strategies",
35
- "doc:readme": "ts-node -P ../../tools/tsconfig.json ../../tools/src/readme.ts",
27
+ "build": "yarn clean && tsc --declaration",
28
+ "clean": "rimraf *.js *.d.ts *.map doc strategies",
29
+ "doc": "typedoc --excludePrivate --excludeInternal --out doc src/index.ts",
36
30
  "doc:ae": "mkdir -p .ae/doc .ae/temp && node_modules/.bin/api-extractor run --local --verbose",
37
- "doc": "typedoc --excludePrivate --out doc --theme ../../tools/doc/typedoc-theme src/index.ts",
38
- "pub": "yarn build:release && yarn publish --access public"
31
+ "doc:readme": "yarn doc:stats && ../../scripts/node-esm ../../tools/src/readme.ts",
32
+ "doc:stats": "../../scripts/node-esm ../../tools/src/module-stats.ts",
33
+ "pub": "yarn build && yarn publish --access public",
34
+ "test": "testament test"
39
35
  },
40
36
  "dependencies": {
41
- "@thi.ng/api": "^7.1.8",
42
- "@thi.ng/math": "^4.0.4"
37
+ "@thi.ng/api": "^8.0.1",
38
+ "@thi.ng/math": "^5.0.1"
39
+ },
40
+ "devDependencies": {
41
+ "@thi.ng/testament": "^0.1.1"
43
42
  },
44
- "files": [
45
- "*.js",
46
- "*.d.ts",
47
- "lib",
48
- "strategies"
49
- ],
50
43
  "keywords": [
51
44
  "agent",
52
45
  "functional",
@@ -61,9 +54,51 @@
61
54
  "publishConfig": {
62
55
  "access": "public"
63
56
  },
64
- "sideEffects": false,
57
+ "engines": {
58
+ "node": ">=12.7"
59
+ },
60
+ "files": [
61
+ "*.js",
62
+ "*.d.ts",
63
+ "strategies"
64
+ ],
65
+ "exports": {
66
+ ".": {
67
+ "import": "./index.js"
68
+ },
69
+ "./api": {
70
+ "import": "./api.js"
71
+ },
72
+ "./defuzz": {
73
+ "import": "./defuzz.js"
74
+ },
75
+ "./rules": {
76
+ "import": "./rules.js"
77
+ },
78
+ "./shapes": {
79
+ "import": "./shapes.js"
80
+ },
81
+ "./strategies/bisector": {
82
+ "import": "./strategies/bisector.js"
83
+ },
84
+ "./strategies/centroid": {
85
+ "import": "./strategies/centroid.js"
86
+ },
87
+ "./strategies/maxima": {
88
+ "import": "./strategies/maxima.js"
89
+ },
90
+ "./strategies/opts": {
91
+ "import": "./strategies/opts.js"
92
+ },
93
+ "./tnorms": {
94
+ "import": "./tnorms.js"
95
+ },
96
+ "./var": {
97
+ "import": "./var.js"
98
+ }
99
+ },
65
100
  "thi.ng": {
66
101
  "year": 2020
67
102
  },
68
- "gitHead": "c3d907d40c82572fea9c259007dd68c9acbd5f1d"
103
+ "gitHead": "2e6b3d7c0f4c5686c1e9bdb4902ed7d3f90bcc19"
69
104
  }
package/rules.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { FnN2 } from "@thi.ng/api";
2
- import type { LVarKeySet, LVarSet, Rule } from "./api";
2
+ import type { LVarKeySet, LVarSet, Rule } from "./api.js";
3
3
  /**
4
4
  * Defines and returns a new rule object. Takes a T-norm (or S-norm) `op`, an
5
5
  * object of input conditions, an object of results and optional rule `weight`.
package/rules.js CHANGED
@@ -1,4 +1,4 @@
1
- import { snormMax, tnormMin, tnormProduct } from "./tnorms";
1
+ import { snormMax, tnormMin, tnormProduct } from "./tnorms.js";
2
2
  /**
3
3
  * Defines and returns a new rule object. Takes a T-norm (or S-norm) `op`, an
4
4
  * object of input conditions, an object of results and optional rule `weight`.
package/shapes.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { FnN2, FnU, FnU2, FnU3, FnU4 } from "@thi.ng/api";
2
- import type { FuzzyFn } from "./api";
2
+ import type { FuzzyFn } from "./api.js";
3
3
  /**
4
4
  * HOF {@link FuzzyFn} always yielding given `x` (should be in [0,1]
5
5
  * interval).
package/shapes.js CHANGED
@@ -1,4 +1,7 @@
1
- import { EPS, eqDelta, fit, fitClamped, gaussian as $gaussian, sigmoid as $sigmoid, } from "@thi.ng/math";
1
+ import { EPS } from "@thi.ng/math/api";
2
+ import { eqDelta } from "@thi.ng/math/eqdelta";
3
+ import { fit, fitClamped } from "@thi.ng/math/fit";
4
+ import { gaussian as $gaussian, sigmoid as $sigmoid } from "@thi.ng/math/mix";
2
5
  /**
3
6
  * HOF {@link FuzzyFn} always yielding given `x` (should be in [0,1]
4
7
  * interval).
@@ -1,4 +1,4 @@
1
- import type { DefuzzStrategy, DefuzzStrategyOpts } from "../api";
1
+ import type { DefuzzStrategy, DefuzzStrategyOpts } from "../api.js";
2
2
  /**
3
3
  * Higher-order function: Bisector-of-Area defuzzification strategy. Returns
4
4
  * strategy which computes the integral of a given fuzzy set in the defined
@@ -1,5 +1,5 @@
1
- import { fit } from "@thi.ng/math";
2
- import { defaultOpts } from "./opts";
1
+ import { fit } from "@thi.ng/math/fit";
2
+ import { defaultOpts } from "./opts.js";
3
3
  /**
4
4
  * Higher-order function: Bisector-of-Area defuzzification strategy. Returns
5
5
  * strategy which computes the integral of a given fuzzy set in the defined
@@ -1,4 +1,4 @@
1
- import type { DefuzzStrategy, DefuzzStrategyOpts } from "../api";
1
+ import type { DefuzzStrategy, DefuzzStrategyOpts } from "../api.js";
2
2
  /**
3
3
  * Higher-order function: Centre-of-gravity defuzzification strategy, yielding
4
4
  * the approx. center of gravity position of a given fuzzy set. The domain is
@@ -1,4 +1,4 @@
1
- import { defaultOpts } from "./opts";
1
+ import { defaultOpts } from "./opts.js";
2
2
  /**
3
3
  * Higher-order function: Centre-of-gravity defuzzification strategy, yielding
4
4
  * the approx. center of gravity position of a given fuzzy set. The domain is
@@ -1,4 +1,4 @@
1
- import type { DefuzzStrategy, DefuzzStrategyOpts } from "../api";
1
+ import type { DefuzzStrategy, DefuzzStrategyOpts } from "../api.js";
2
2
  /**
3
3
  * Higher-order function. Returns Mean-of-Maxima defuzzification strategy,
4
4
  * yielding the approx. mean of the maximum region of a given fuzzy set.
@@ -1,5 +1,5 @@
1
- import { eqDelta } from "@thi.ng/math";
2
- import { defaultOpts } from "./opts";
1
+ import { eqDelta } from "@thi.ng/math/eqdelta";
2
+ import { defaultOpts } from "./opts.js";
3
3
  /**
4
4
  * Higher-order function. Returns Mean-of-Maxima defuzzification strategy,
5
5
  * yielding the approx. mean of the maximum region of a given fuzzy set.
@@ -1,3 +1,3 @@
1
- import type { DefuzzStrategyOpts } from "../api";
1
+ import type { DefuzzStrategyOpts } from "../api.js";
2
2
  export declare const defaultOpts: (opts?: Partial<DefuzzStrategyOpts> | undefined) => DefuzzStrategyOpts;
3
3
  //# sourceMappingURL=opts.d.ts.map
@@ -1 +1,5 @@
1
- export const defaultOpts = (opts) => (Object.assign({ samples: 100, eps: 1e-6 }, opts));
1
+ export const defaultOpts = (opts) => ({
2
+ samples: 100,
3
+ eps: 1e-6,
4
+ ...opts,
5
+ });
package/tnorms.js CHANGED
@@ -1,4 +1,5 @@
1
- import { clamp0, norm } from "@thi.ng/math";
1
+ import { norm } from "@thi.ng/math/fit";
2
+ import { clamp0 } from "@thi.ng/math/interval";
2
3
  // https://en.wikipedia.org/wiki/T-norm
3
4
  export const tnormMin = (x, y) => Math.min(x, y);
4
5
  export const tnormProduct = (x, y) => x * y;
@@ -47,7 +48,8 @@ export const tnormDombi = (p = 2) => p === 0
47
48
  *
48
49
  * @param p - curve param [0..∞], default: 2
49
50
  */
50
- export const tnormAczelAlsina = (p = 2) => (x, y) => Math.exp(-((Math.abs(Math.log(x)) ** p + Math.abs(Math.log(y)) ** p) ** (1 / p)));
51
+ export const tnormAczelAlsina = (p = 2) => (x, y) => Math.exp(-((Math.abs(Math.log(x)) ** p + Math.abs(Math.log(y)) ** p) **
52
+ (1 / p)));
51
53
  /**
52
54
  * S-norm (T-conorm), dual of {@link tnormMin}.
53
55
  *
package/var.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { LVar } from "./api";
1
+ import type { LVar } from "./api.js";
2
2
  /**
3
3
  * Takes a `domain` interval and on object of named fuzzy sets and returns a new
4
4
  * Linguistic variable, which can then be used as input or output var for
@@ -18,7 +18,7 @@ import type { LVar } from "./api";
18
18
  * @param domain
19
19
  * @param terms
20
20
  */
21
- export declare const variable: <K extends string>(domain: import("@thi.ng/api").Range, terms: import("./api").LVarTerms<K>) => LVar<K>;
21
+ export declare const variable: <K extends string>(domain: import("@thi.ng/api").Range, terms: import("./api.js").LVarTerms<K>) => LVar<K>;
22
22
  /**
23
23
  * Takes an LVar and a domain value `x`. Returns the ID of the var's fuzzy set
24
24
  * term which yields the max truth value for given `x`. If `threshold` is
package/lib/index.js DELETED
@@ -1,270 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var math = require('@thi.ng/math');
6
-
7
- const constant = (x) => () => x;
8
- const point = (p, eps = math.EPS) => (x) => math.eqDelta(x, p, eps) ? 1 : 0;
9
- const ramp = (a, b) => (x) => math.fitClamped(x, a, b, 0, 1);
10
- const triangle = (a, b, c) => (x) => x < a || x > c ? 0 : x <= b ? math.fit(x, a, b, 0, 1) : math.fit(x, b, c, 1, 0);
11
- const trapezoid = (a, b, c, d) => (x) => x < a || x > d
12
- ? 0
13
- : x > b && x < c
14
- ? 1
15
- : x <= b
16
- ? math.fit(x, a, b, 0, 1)
17
- : math.fit(x, c, d, 1, 0);
18
- const sigmoid = (bias, steep) => (x) => math.sigmoid(bias, steep, x);
19
- const gaussian = (bias, sigma) => (x) => math.gaussian(bias, sigma, x);
20
- const negate = (fn) => (x) => 1 - fn(x);
21
- const invRamp = (a, b) => negate(ramp(a, b));
22
- const invSigmoid = (bias, steep) => negate(sigmoid(bias, steep));
23
- const weighted = (fn, weight) => (x) => weight * fn(x);
24
- const alphaCut = (fn, alpha = 0.5) => (x) => {
25
- const y = fn(x);
26
- return y > alpha ? y : 0;
27
- };
28
- const invAlphaCut = (fn, alpha = 0.5) => (x) => {
29
- const y = fn(x);
30
- return y < alpha ? y : 0;
31
- };
32
- const compose = (op, initial, ...fns) => {
33
- const [a, b] = fns;
34
- switch (fns.length) {
35
- case 0:
36
- throw new Error("no fuzzy sets given");
37
- case 1:
38
- return a;
39
- case 2:
40
- return (x) => op(a(x), b(x));
41
- default:
42
- return (x) => fns.reduce((acc, f) => op(acc, f(x)), initial);
43
- }
44
- };
45
- const intersect = (op, ...fns) => compose(op, 1, ...fns);
46
- const union = (op, ...fns) => compose(op, 0, ...fns);
47
-
48
- const defaultOpts = (opts) => (Object.assign({ samples: 100, eps: 1e-6 }, opts));
49
-
50
- const centroidStrategy = (opts) => {
51
- let { samples } = defaultOpts(opts);
52
- return (fn, [min, max]) => {
53
- const delta = (max - min) / samples;
54
- let num = 0;
55
- let denom = 0;
56
- for (let i = 0; i <= samples; i++) {
57
- const x = min + i * delta;
58
- const y = fn(x);
59
- num += x * y;
60
- denom += y;
61
- }
62
- return num / denom;
63
- };
64
- };
65
-
66
- const tnormMin = (x, y) => Math.min(x, y);
67
- const tnormProduct = (x, y) => x * y;
68
- const tnormLukasiewicz = (x, y) => math.clamp0(x + y - 1);
69
- const tnormDrastic = (x, y) => (x === 1 ? y : y === 1 ? x : 0);
70
- const tnormNilpotent = (x, y) => (x + y > 1 ? Math.min(x, y) : 0);
71
- const tnormHamacher = (p = 2) => (x, y) => x === 0 && y === 0 ? 0 : (x * y) / (p + (1 - p) * (x + y - x * y));
72
- const tnormYager = (p = 2) => p === 0
73
- ? () => 0
74
- : (x, y) => math.clamp0(1 - ((1 - x) ** p + (1 - y) ** p) ** (1 / p));
75
- const tnormDombi = (p = 2) => p === 0
76
- ? () => 0
77
- : (x, y) => x === 0 || y === 0
78
- ? 0
79
- : 1 /
80
- (1 + (((1 - x) / x) ** p + ((1 - y) / y) ** p) ** (1 / p));
81
- const tnormAczelAlsina = (p = 2) => (x, y) => Math.exp(-((Math.abs(Math.log(x)) ** p + Math.abs(Math.log(y)) ** p) ** (1 / p)));
82
- const snormMax = (x, y) => Math.max(x, y);
83
- const snormProbabilistic = (x, y) => x + y - x * y;
84
- const snormBoundedSum = (x, y) => Math.min(x + y, 1);
85
- const snormDrastic = (x, y) => (x === 0 ? y : y === 0 ? x : 1);
86
- const snormNilpotent = (x, y) => (x + y < 1 ? Math.max(x, y) : 1);
87
- const snormEinstein = (x, y) => (x + y) / (1 + x * y);
88
- const ordinalSum = (specs) => (x, y) => {
89
- for (let s of specs) {
90
- const [a, b] = s.domain;
91
- if (x >= a && x <= b && y >= a && y <= b) {
92
- return a + (b - a) * s.tnorm(math.norm(x, a, b), math.norm(y, a, b));
93
- }
94
- }
95
- return Math.min(x, y);
96
- };
97
-
98
- const defuzz = (ins, outs, rules, vals, strategy = centroidStrategy(), imply = tnormMin, combine = snormMax) => {
99
- const ruleTerms = rules.map((r) => {
100
- let alpha = null;
101
- for (let id in vals) {
102
- if (r.if[id]) {
103
- const v = ins[id].terms[r.if[id]](vals[id]);
104
- alpha = alpha !== null ? r.op(alpha, v) : v;
105
- }
106
- }
107
- const terms = {};
108
- if (alpha) {
109
- const aterm = constant(alpha);
110
- for (let id in r.then) {
111
- if (outs[id]) {
112
- const oterm = outs[id].terms[r.then[id]];
113
- terms[id] = intersect(imply, r.weight == 1 ? oterm : weighted(oterm, r.weight), aterm);
114
- }
115
- }
116
- }
117
- return terms;
118
- });
119
- const res = {};
120
- for (let id in outs) {
121
- res[id] = strategy(union(combine, ...ruleTerms.map((r) => r[id]).filter((f) => !!f)), outs[id].domain);
122
- }
123
- return res;
124
- };
125
-
126
- const rule = (op, $if, then, weight = 1) => ({
127
- if: $if,
128
- then,
129
- op,
130
- weight,
131
- });
132
- const and = ($if, then, weight) => rule(tnormMin, $if, then, weight);
133
- const strongAnd = ($if, then, weight) => rule(tnormProduct, $if, then, weight);
134
- const or = ($if, then, weight) => rule(snormMax, $if, then, weight);
135
-
136
- const variable = (domain, terms) => ({
137
- domain,
138
- terms,
139
- });
140
- const classify = ({ terms }, x, threshold = 0.5) => {
141
- let max = threshold;
142
- let maxID;
143
- for (let id in terms) {
144
- const t = terms[id](x);
145
- if (t >= max) {
146
- max = t;
147
- maxID = id;
148
- }
149
- }
150
- return maxID;
151
- };
152
- const evaluate = ({ terms }, x) => {
153
- const res = {};
154
- for (let id in terms) {
155
- res[id] = terms[id](x);
156
- }
157
- return res;
158
- };
159
-
160
- const bisectorStrategy = (opts) => {
161
- let { samples } = defaultOpts(opts);
162
- return (fn, [min, max]) => {
163
- const delta = (max - min) / samples;
164
- let sum = [];
165
- for (let i = 0, acc = 0; i <= samples; i++) {
166
- acc += fn(min + i * delta);
167
- sum.push(acc);
168
- }
169
- if (!sum.length)
170
- return min;
171
- const mean = sum[samples] * 0.5;
172
- for (let i = 1; i <= samples; i++) {
173
- if (sum[i] >= mean) {
174
- return math.fit(mean, sum[i - 1], sum[i], min + (i - 1) * delta, min + i * delta);
175
- }
176
- }
177
- return min;
178
- };
179
- };
180
-
181
- const meanOfMaximaStrategy = (opts) => {
182
- const { samples, eps } = defaultOpts(opts);
183
- return (fn, [min, max]) => {
184
- const delta = (max - min) / samples;
185
- let peak = -Infinity;
186
- let peakPos = min;
187
- let n = 1;
188
- for (let i = 0; i <= samples; i++) {
189
- const t = min + i * delta;
190
- const x = fn(t);
191
- if (math.eqDelta(x, peak, eps)) {
192
- peakPos += t;
193
- n++;
194
- }
195
- else if (x > peak) {
196
- peak = x;
197
- peakPos = t;
198
- n = 1;
199
- }
200
- }
201
- return peakPos / n;
202
- };
203
- };
204
- const firstOfMaximaStrategy = (opts) => {
205
- const { samples } = defaultOpts(opts);
206
- return (fn, [min, max]) => {
207
- const delta = (max - min) / samples;
208
- let peak = -Infinity;
209
- let peakPos = min;
210
- for (let i = 0; i <= samples; i++) {
211
- const t = min + i * delta;
212
- const x = fn(t);
213
- if (x > peak) {
214
- peak = x;
215
- peakPos = t;
216
- }
217
- }
218
- return peakPos;
219
- };
220
- };
221
- const lastOfMaximaStrategy = (opts) => {
222
- const impl = firstOfMaximaStrategy(opts);
223
- return (fn, [min, max]) => impl(fn, [max, min]);
224
- };
225
-
226
- exports.alphaCut = alphaCut;
227
- exports.and = and;
228
- exports.bisectorStrategy = bisectorStrategy;
229
- exports.centroidStrategy = centroidStrategy;
230
- exports.classify = classify;
231
- exports.compose = compose;
232
- exports.constant = constant;
233
- exports.defuzz = defuzz;
234
- exports.evaluate = evaluate;
235
- exports.firstOfMaximaStrategy = firstOfMaximaStrategy;
236
- exports.gaussian = gaussian;
237
- exports.intersect = intersect;
238
- exports.invAlphaCut = invAlphaCut;
239
- exports.invRamp = invRamp;
240
- exports.invSigmoid = invSigmoid;
241
- exports.lastOfMaximaStrategy = lastOfMaximaStrategy;
242
- exports.meanOfMaximaStrategy = meanOfMaximaStrategy;
243
- exports.negate = negate;
244
- exports.or = or;
245
- exports.ordinalSum = ordinalSum;
246
- exports.point = point;
247
- exports.ramp = ramp;
248
- exports.rule = rule;
249
- exports.sigmoid = sigmoid;
250
- exports.snormBoundedSum = snormBoundedSum;
251
- exports.snormDrastic = snormDrastic;
252
- exports.snormEinstein = snormEinstein;
253
- exports.snormMax = snormMax;
254
- exports.snormNilpotent = snormNilpotent;
255
- exports.snormProbabilistic = snormProbabilistic;
256
- exports.strongAnd = strongAnd;
257
- exports.tnormAczelAlsina = tnormAczelAlsina;
258
- exports.tnormDombi = tnormDombi;
259
- exports.tnormDrastic = tnormDrastic;
260
- exports.tnormHamacher = tnormHamacher;
261
- exports.tnormLukasiewicz = tnormLukasiewicz;
262
- exports.tnormMin = tnormMin;
263
- exports.tnormNilpotent = tnormNilpotent;
264
- exports.tnormProduct = tnormProduct;
265
- exports.tnormYager = tnormYager;
266
- exports.trapezoid = trapezoid;
267
- exports.triangle = triangle;
268
- exports.union = union;
269
- exports.variable = variable;
270
- exports.weighted = weighted;
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../shapes.js","../strategies/opts.js","../strategies/centroid.js","../tnorms.js","../defuzz.js","../rules.js","../var.js","../strategies/bisector.js","../strategies/maxima.js"],"sourcesContent":null,"names":["EPS","eqDelta","fitClamped","fit","$sigmoid","$gaussian","clamp0","norm"],"mappings":"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"}
package/lib/index.umd.js DELETED
@@ -1 +0,0 @@
1
- !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@thi.ng/math")):"function"==typeof define&&define.amd?define(["exports","@thi.ng/math"],e):e(((t="undefined"!=typeof globalThis?globalThis:t||self).thi=t.thi||{},t.thi.ng=t.thi.ng||{},t.thi.ng.fuzzy={}),t.thi.ng.math)}(this,(function(t,e){"use strict";const n=t=>()=>t,r=(t,n)=>r=>e.fitClamped(r,t,n,0,1),o=(t,n)=>r=>e.sigmoid(t,n,r),i=t=>e=>1-t(e),s=(t,e)=>n=>e*t(n),a=(t,e,...n)=>{const[r,o]=n;switch(n.length){case 0:throw new Error("no fuzzy sets given");case 1:return r;case 2:return e=>t(r(e),o(e));default:return r=>n.reduce(((e,n)=>t(e,n(r))),e)}},l=(t,...e)=>a(t,1,...e),m=(t,...e)=>a(t,0,...e),u=t=>Object.assign({samples:100,eps:1e-6},t),f=t=>{let{samples:e}=u(t);return(t,[n,r])=>{const o=(r-n)/e;let i=0,s=0;for(let r=0;r<=e;r++){const e=n+r*o,a=t(e);i+=e*a,s+=a}return i/s}},c=(t,e)=>Math.min(t,e),h=(t,e)=>t*e,p=(t,e)=>Math.max(t,e),g=(t,e,n,r=1)=>({if:e,then:n,op:t,weight:r}),d=t=>{const{samples:e}=u(t);return(t,[n,r])=>{const o=(r-n)/e;let i=-1/0,s=n;for(let r=0;r<=e;r++){const e=n+r*o,a=t(e);a>i&&(i=a,s=e)}return s}};t.alphaCut=(t,e=.5)=>n=>{const r=t(n);return r>e?r:0},t.and=(t,e,n)=>g(c,t,e,n),t.bisectorStrategy=t=>{let{samples:n}=u(t);return(t,[r,o])=>{const i=(o-r)/n;let s=[];for(let e=0,o=0;e<=n;e++)o+=t(r+e*i),s.push(o);if(!s.length)return r;const a=.5*s[n];for(let t=1;t<=n;t++)if(s[t]>=a)return e.fit(a,s[t-1],s[t],r+(t-1)*i,r+t*i);return r}},t.centroidStrategy=f,t.classify=({terms:t},e,n=.5)=>{let r,o=n;for(let n in t){const i=t[n](e);i>=o&&(o=i,r=n)}return r},t.compose=a,t.constant=n,t.defuzz=(t,e,r,o,i=f(),a=c,u=p)=>{const h=r.map((r=>{let i=null;for(let e in o)if(r.if[e]){const n=t[e].terms[r.if[e]](o[e]);i=null!==i?r.op(i,n):n}const m={};if(i){const t=n(i);for(let n in r.then)if(e[n]){const o=e[n].terms[r.then[n]];m[n]=l(a,1==r.weight?o:s(o,r.weight),t)}}return m})),g={};for(let t in e)g[t]=i(m(u,...h.map((e=>e[t])).filter((t=>!!t))),e[t].domain);return g},t.evaluate=({terms:t},e)=>{const n={};for(let r in t)n[r]=t[r](e);return n},t.firstOfMaximaStrategy=d,t.gaussian=(t,n)=>r=>e.gaussian(t,n,r),t.intersect=l,t.invAlphaCut=(t,e=.5)=>n=>{const r=t(n);return r<e?r:0},t.invRamp=(t,e)=>i(r(t,e)),t.invSigmoid=(t,e)=>i(o(t,e)),t.lastOfMaximaStrategy=t=>{const e=d(t);return(t,[n,r])=>e(t,[r,n])},t.meanOfMaximaStrategy=t=>{const{samples:n,eps:r}=u(t);return(t,[o,i])=>{const s=(i-o)/n;let a=-1/0,l=o,m=1;for(let i=0;i<=n;i++){const n=o+i*s,u=t(n);e.eqDelta(u,a,r)?(l+=n,m++):u>a&&(a=u,l=n,m=1)}return l/m}},t.negate=i,t.or=(t,e,n)=>g(p,t,e,n),t.ordinalSum=t=>(n,r)=>{for(let o of t){const[t,i]=o.domain;if(n>=t&&n<=i&&r>=t&&r<=i)return t+(i-t)*o.tnorm(e.norm(n,t,i),e.norm(r,t,i))}return Math.min(n,r)},t.point=(t,n=e.EPS)=>r=>e.eqDelta(r,t,n)?1:0,t.ramp=r,t.rule=g,t.sigmoid=o,t.snormBoundedSum=(t,e)=>Math.min(t+e,1),t.snormDrastic=(t,e)=>0===t?e:0===e?t:1,t.snormEinstein=(t,e)=>(t+e)/(1+t*e),t.snormMax=p,t.snormNilpotent=(t,e)=>t+e<1?Math.max(t,e):1,t.snormProbabilistic=(t,e)=>t+e-t*e,t.strongAnd=(t,e,n)=>g(h,t,e,n),t.tnormAczelAlsina=(t=2)=>(e,n)=>Math.exp(-((Math.abs(Math.log(e))**t+Math.abs(Math.log(n))**t)**(1/t))),t.tnormDombi=(t=2)=>0===t?()=>0:(e,n)=>0===e||0===n?0:1/(1+(((1-e)/e)**t+((1-n)/n)**t)**(1/t)),t.tnormDrastic=(t,e)=>1===t?e:1===e?t:0,t.tnormHamacher=(t=2)=>(e,n)=>0===e&&0===n?0:e*n/(t+(1-t)*(e+n-e*n)),t.tnormLukasiewicz=(t,n)=>e.clamp0(t+n-1),t.tnormMin=c,t.tnormNilpotent=(t,e)=>t+e>1?Math.min(t,e):0,t.tnormProduct=h,t.tnormYager=(t=2)=>0===t?()=>0:(n,r)=>e.clamp0(1-((1-n)**t+(1-r)**t)**(1/t)),t.trapezoid=(t,n,r,o)=>i=>i<t||i>o?0:i>n&&i<r?1:i<=n?e.fit(i,t,n,0,1):e.fit(i,r,o,1,0),t.triangle=(t,n,r)=>o=>o<t||o>r?0:o<=n?e.fit(o,t,n,0,1):e.fit(o,n,r,1,0),t.union=m,t.variable=(t,e)=>({domain:t,terms:e}),t.weighted=s,Object.defineProperty(t,"__esModule",{value:!0})}));
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.umd.js","sources":["../shapes.js","../strategies/opts.js","../strategies/centroid.js","../tnorms.js","../defuzz.js","../rules.js","../var.js","../strategies/bisector.js","../strategies/maxima.js"],"sourcesContent":null,"names":["EPS","eqDelta","fitClamped","fit","$sigmoid","$gaussian","clamp0","norm"],"mappings":"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"}