Javascript中的模糊逻辑?

Posted

技术标签:

【中文标题】Javascript中的模糊逻辑?【英文标题】:FuzzyLogic in Javascript? 【发布时间】:2011-10-16 16:39:31 【问题描述】:

有谁知道如何从 javascript 访问模糊逻辑?我有一个很好的 Java 和 C++ 模糊库,但我想要一些可以从 html5/javascript 运行的东西。

【问题讨论】:

【参考方案1】:

有两个项目可用:

    https://github.com/marcolanaro/JS-Fuzzy - 可以在浏览器中使用

    https://github.com/sebs/node-fuzzylogic - nodejs 模块,可以在浏览器中使用

【讨论】:

【参考方案2】:

选项是:

    将逻辑放在服务器上并使用 ajax 从网页访问它。 用 javascript 重写它并将其包含在您的页面中。 将 C++ 放入浏览器插件中,并通过 javascript 访问该插件。

选项 1) 或 2) 可以根据具体情况正常工作。选项 3) 通常不是一个好主意,除非它是一个非常专业的应用程序,以某种方式使其值得处理插件的分发、维护、测试和用户头痛。

【讨论】:

@jldupont - asm.js 是 Javascript 的一个子集,可以运行得更快,因此我的第 2 点肯定会涵盖这一点。 OP 要求他们可以“从 HTML5/Javascript 运行”的东西,所以他们将不得不以某种方式将他们的代码转换为 Javascript 才能做到这一点。 webAssembly 很有趣(也许允许从 C++ 交叉编译到 WASM,但甚至不清楚这就是 OP 所要求的。【参考方案3】:

我对那些想在 NodeJS 中做的人的回答,因为它熟悉 javascript

请使用一个很棒的 nodejs-java 和一个用 Java 编写的神奇的 jFuzzylite 库。

node-java:https://www.npmjs.com/package/java

Fuzzylite:http://www.fuzzylite.com/。它提供了jfuzzylite.jar

我在 Matlab 中创建了一个隶属函数membership_function_pn.fis,它有两个输入和一个输出。在Matlab命令界面输入mfedit,会出现一个FIS编辑器,你可以轻松的制作你的模糊函数。

以下是我完成工作的代码! (要了解代码在 Nodejs 中的工作原理,请先使用 jfuzzylite.jar 在 Java 中进行练习。

var java = require("java");
var fs = require("fs");
java.classpath.push("commons-lang3-3.1.jar");
java.classpath.push("commons-io.jar");
java.classpath.push("jfuzzylite.jar");


var matlabString = fs.readFileSync("dataMatlab/membership_function_pn.fis", 'utf8');
var FisImporter = java.newInstanceSync("com.fuzzylite.imex.FisImporter");
var engineMatlab = java.callMethodSync(FisImporter, "fromString", matlabString);
var InputVariable = java.newInstanceSync('com.fuzzylite.imex.FisImporter');


var OutputVariable = java.callMethodSync(engineMatlab, "getOutputVariable", 0);
var bandwidthInputVariable = java.callMethodSync(engineMatlab, "getInputVariable", 0);
var timeInputVariable = java.callMethodSync(engineMatlab, "getInputVariable", 1);
java.callMethodSync(bandwidthInputVariable, "setInputValue", -0.5);
java.callMethodSync(timeInputVariable, "setInputValue", 0.5);
java.callMethodSync(engineMatlab, "process");
var resultFuzzy = java.callMethodSync(OutputVariable, "getOutputValue");

console.log("안녕하세요" + resultFuzzy);

【讨论】:

以上是关于Javascript中的模糊逻辑?的主要内容,如果未能解决你的问题,请参考以下文章

C中的模糊逻辑隶属函数

Java中的模糊逻辑:在实现去模糊化过程时遇到麻烦(使用质心方法)

模糊逻辑匹配

F# 和模糊逻辑

图像分割直觉模糊C均值聚类的图像分割IFCM

使用JavaScript