UNPKG

@thi.ng/fuzzy

Version:

Fuzzy logic operators & configurable rule inferencing engine

31 lines (30 loc) 716 B
import { fit } from "@thi.ng/math/fit"; import { __defaultOpts } from "./opts.js"; const bisectorStrategy = (opts) => { let { samples } = __defaultOpts(opts); return (fn, [min, max]) => { const delta = (max - min) / samples; let sum = []; for (let i = 0, acc = 0; i <= samples; i++) { acc += fn(min + i * delta); sum.push(acc); } if (!sum.length) return min; const mean = sum[samples] * 0.5; for (let i = 1; i <= samples; i++) { if (sum[i] >= mean) { return fit( mean, sum[i - 1], sum[i], min + (i - 1) * delta, min + i * delta ); } } return min; }; }; export { bisectorStrategy };