es6-fuzz - v6.1.0
    Preparing search index...

    es6-fuzz - v6.1.0

    es6-fuzz

    Fuzzy Logic in JavaScript

    npm license GitHub tag GitHub issues

    • Constant - Fixed membership value
    • Grade - Linear membership function
    • Reverse Grade - Inverted linear membership
    • Sigmoid - S-shaped membership curve
    • Trapezoid - Trapezoidal membership function
    • Triangle - Triangular membership function
    npm install es6-fuzz
    
    const { Logic, Triangle, Trapezoid, Grade } = require('es6-fuzz');

    const logic = new Logic();
    const result = logic
    .init('noAttack', new Triangle(0, 20, 40))
    .or('normalAttack', new Trapezoid(20, 30, 90, 100))
    .or('enragedAttack', new Grade(90, 100))
    .defuzzify(40);

    console.log(result); // 'enragedAttack'
    const { Logic, Trapezoid } = require('es6-fuzz');

    const logic = new Logic();
    const result = logic
    .init('cold', new Trapezoid(0, 12, 18, 20))
    .or('hot', new Trapezoid(12, 14, 16, 100))
    .defuzzify(20);

    console.log(result); // 'hot'

    Combine multiple fuzzy functions with boolean logic using the boon-js compatibility layer.

    A monster that bites when it's cold AND you're close to it:

    const { Logic, Triangle } = require('es6-fuzz');
    const { getEvaluator } = require('boon-js');

    // Temperature logic
    const logicHeat = new Logic();
    logicHeat.init('cold', new Triangle(0, 10, 15))
    .or('optimal', new Triangle(10, 20, 30))
    .or('hot', new Triangle(25, 40, 60));

    // Distance logic
    const logicDistance = new Logic();
    logicDistance.init('close', new Triangle(0, 10, 20))
    .or('far', new Triangle(5, 50, 100));

    // Combine with boolean logic
    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 };

    console.log(monsterBiteTest(jsBoonInput)); // true
    npm test
    
    npm run docs        # Generate API docs
    npm run docs:site # Build documentation site
    • Node.js 20+
    • gaussian - Gaussian distribution functions