Skip to content

sebs/es6-fuzz

Repository files navigation

es6-fuzz

Fuzzy Logic in JavaScript

npm license GitHub tag GitHub issues

Supported Fuzzifiers

  • 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

Documentation

Installation

npm install es6-fuzz

Quick Start

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'

Temperature Example

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'

Advanced Usage with boon-js

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

Example: Monster AI

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

Development

Running Tests

npm test

Building Documentation

npm run docs        # Generate API docs
npm run docs:site   # Build documentation site

Requirements

  • Node.js 20+

Resources

Related Projects

  • gaussian - Gaussian distribution functions

About

fuzzylogic for JS and TS

Resources

License

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •