@thi.ng/fuzzy
Version:
Fuzzy logic operators & configurable rule inferencing engine
31 lines (30 loc) • 716 B
JavaScript
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
};