_ _ ____ ___ ____ ____ _ _ ___ ___ _ _ _ ____ ____ _ ____
|\ | | | | \ |___ __ |___ | | / / \_/ | | | | __ | |
| \| |__| |__/ |___ | |__| /__ /__ | |___ |__| |__] | |___
** I have created a new fuzzylogic module, it is a bit more modern, simpler to extend and just new and shiny. Have a look at es6-fuz **
If yes or no is not enough
Code by: Sebastian Schürmann License: MIT
Fuzzy logic is a form of many-valued logic; it deals with reasoning that is approximate rather than fixed and exact. In contrast with traditional logic theory, where binary sets have two-valued logic: true or false, fuzzy logic variables may have a truth value that ranges in degree between 0 and 1. Fuzzy logic has been extended to handle the concept of partial truth, where the truth value may range between completely true and completely false.[1] Furthermore, when linguistic variables are used, these degrees may be managed by specific functions.
from http://en.wikipedia.org/wiki/Fuzzy_logic
npm install fuzzylogic
Test
npm test
Api docs
npm test
var resGrade = fuzzylogic.grade(3,0,1);
assert.ok(resGrade == 1);
var resReverseGrade = fuzzylogic.reverseGrade(3,0,1);
assert.ok(resReverseGrade === 0);
var resTriangle = fuzzylogic.triangle(3,0,1,2);
assert.ok(resTriangle === 0);
assert.ok(rules.and(0.1, 0.2, cbA, cbB) == 0.1);
assert.ok(cbValue == 'a');
assert.ok(rules.or(0.1, 0.2, cbA, cbB)== 0.2);
assert.ok(cbValue == 'b');
assert.ok(rules.not(0.1) == 0.9);
A Basic Function to create fuzzy decisions to
var threatCalc = function(threat) {
var probabNoAttack = fuzzylogic.triangle(threat, 0, 20, 40);
var probabNormalAttack = fuzzylogic.trapezoid(threat, 20, 30, 90, 100);
var probabEnragedAttack = fuzzylogic.grade(threat, 90, 100);
sys.log('Threat: ' + threat);
sys.log('no attack: ' + probabNoAttack);
sys.log('normal attack: ' + probabNormalAttack);
sys.log('enraged attack: ' + probabEnragedAttack);
};
And then execute the code
threatCalc(10);
threatCalc(20);
threatCalc(30);