Skip to content

sebs/node-fuzzylogic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

_  _ ____ ___  ____    ____ _  _ ___  ___  _   _ _    ____ ____ _ ____
|\ | |  | |  \ |___ __ |___ |  |   /    /   \_/  |    |  | | __ | |    
| \| |__| |__/ |___    |    |__|  /__  /__   |   |___ |__| |__] | |___

Fuzzy Logic for node.js

Build Status

** 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

Glossary

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

Install & Dev

npm install fuzzylogic

Test

npm test

Api docs

npm test

Basic Fuzzyfication`

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);

Fuzzy Rulesets for Defuzzyfication

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);

Threat Example

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);

About

Fuzzylogic Module for node.js

Resources

License

Stars

Watchers

Forks

Packages

No packages published