es6-fuzz v4.0.1
es6-fuzz
Fuzzy Logic in Javascript
Supported fuzzyfiers
- Constant
- Grade
- Reverse Grade
- Sigmoid
- Trapezoid
- Triangle
Install and Usage
es6-fuzz is available as a NPM package.
npm install es6-fuzz
Example
var logic = new Logic();
var res = logic
.init('noAttack', new Triangle(0, 20, 40))
.or('normalAttack', new Trapezoid(20, 30, 90, 100))
.or('enragedAttack', new Grade(90, 100))
.defuzzify(40);
- enraged attack
Example 2
var Trapezoid = require('./lib/curve/trapezoid');
var logic = new Logic();
var res = logic
.init('cold', new Trapezoid(0, 12, 18, 20))
.or('hot', new Trapezoid(12, 14, 16, 100))
.defuzzify(20);
- hot
Usage with boon-js
In order to combine 2 fuzzy functions with boolean logic, there is a compat layer for boon-js which allows the sauge of 'boolean expression language'.
Example of a monster biting when its cold and you are close to it:
Heat part:
var logicHeat = new Logic();
const optimalTemperature = new Triangle(10, 20, 30);
const toColdTemperature = new Triangle(0, 10, 15);
const toHotTemperature = new Triangle(25, 40, 60);
logicHeat.init('cold', toColdTemperature)
logicHeat.or('optimal', optimalTemperature)
logicHeat.or('hot', toHotTemperature);
Distance Part
var logicDistance = new Logic();
const close = new Triangle(0, 10, 20);
const far = new Triangle(5, 50, 100);
logicDistance.init('close', close)
logicDistance.or('far', far)
Now we marry the 2 and use boon js
const monsterBiteTest = getEvaluator(
'heat.cold AND distance.close',
);
const resHeat = logicHeat.defuzzify(2, 'heat');
const resClose = logicDistance.defuzzify(2, 'distance');
const jsBoonInput = { ...resHeat.boonJsInputs, ...resClose.boonJsInputs }
monsterBiteTest(jsBoonInput)
// returns true
development
Tests use mocha and a plugin for traceur
npm test
- docs: npm run docs, npm run docs:site
Stuff
- http://de.slideshare.net/BCSLeicester/fuzzy-logic-in-the-real-world-2326817
- http://computing.dcu.ie/~humphrys/Notes/Neural/sigmoid.html
Supported Node.js Versions
Versions: 6 and 7
Related
3 years ago
3 years ago
3 years ago
3 years ago
6 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago
10 years ago