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中的模糊逻辑?的主要内容,如果未能解决你的问题,请参考以下文章