Yuka.js的FuzzyModule中的addFLV函数用于在FuzzyModule中添加一个FuzzyLinguisticVariable(模糊语言变量)。
addFLV(name, minRange, maxRange)
name
: 一个字符串,表示要添加的模糊语言变量的名称。minRange
: 一个数字,表示模糊语言变量的最小值。maxRange
: 一个数字,表示模糊语言变量的最大值。addFLV函数用于在FuzzyModule中添加一个模糊语言变量。模糊语言变量是一个用于描述模糊集合的变量。模糊集合是一组在值域范围内取值的元素,它们具有数量、隶属度和名称。
隶属度是衡量元素与模糊集合之间的匹配程度的度量,通常用一个在[0, 1]范围内的数字来表示。当隶属度为0时,元素与集合之间没有匹配;当隶属度为1时,元素与集合完全匹配。
通过将模糊语言变量添加到FuzzyModule中,我们可以用它来描述FuzzyModule中的规则。
const fuzzyModule = new YUKA.FuzzyModule();
// 添加一个名为“distance”的模糊语言变量
fuzzyModule.addFLV('distance', 0, 100);
// 在“distance”模糊语言变量中添加一个名为“near”的模糊语言项
const near = fuzzyModule.addFuzzySet('near', new YUKA.LeftShoulderFuzzySet(20, 40, 60));
// 在“distance”模糊语言变量中添加一个名为“far”的模糊语言项
const far = fuzzyModule.addFuzzySet('far', new YUKA.RightShoulderFuzzySet(60, 80, 100));
在上面的示例中,我们创建了一个名为“distance”的模糊语言变量,并添加了两个模糊语言项“near”和“far”。模糊语言项“near”的隶属度在距离20到40之间为1,在距离40到60之间线性减少到0。模糊语言项“far”的隶属度在距离60到80之间为0,在距离80到100之间线性增加到1。
我们可以在FuzzyModule中使用“distance”变量和它的模糊语言项来描述模糊规则,例如:
// 一条模糊规则,描述了如果距离为“near”,则速度为“slow”
fuzzyModule.addFuzzyRule(new YUKA.FuzzyAND(fuzzyModule.getFuzzyVariable('distance').is(near)), fuzzyModule.getFuzzyVariable('speed').is(slow));
在上面的代码中,我们使用上面创建的“distance”模糊语言变量和其模糊语言项“near”,与另一个模糊语言变量“speed”进行 AND 运算,表示只有当距离为“near”时,速度才为“slow”。