有谁知道如何从 javascript 访问模糊逻辑?我有一个很好的 Java 和 C++ 模糊库,但我想要一些可以从 HTML5/javascript 运行的东西。
3 回答
有两个项目可用:
https://github.com/marcolanaro/JS-Fuzzy - 准备在浏览器中使用
https://github.com/sebs/node-fuzzylogic - nodejs 模块,可以在浏览器中使用
选项是:
- 将逻辑放在服务器上并使用 ajax 从网页访问它。
- 用 javascript 重写它并将其包含在您的页面中。
- 将 C++ 放入浏览器插件并从 javascript 访问插件。
根据具体情况,选项 1) 或 2) 可以正常工作。选项 3) 通常是一个坏主意,除非它是一个非常专业的应用程序,以某种方式使它值得处理插件的分发、维护、测试和用户头痛。
我对那些想要在 NodeJS 中做的人的回答,因为它熟悉 javascript
请使用一个很棒的 nodejs-java 和一个用 Java 编写的神奇的 jFuzzylite 库。
节点java:https ://www.npmjs.com/package/java
Fuzzylite:http ://www.fuzzylite.com/ 。它提供了jfuzzylite.jar
我在 Matlab member_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);