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

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

【问题讨论】:

    标签: javascript fuzzy-logic


    【解决方案1】:

    有两个项目可用:

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

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

    【讨论】:

      【解决方案2】:

      选项是:

      1. 将逻辑放在服务器上并使用 ajax 从网页访问它。
      2. 用 javascript 重写它并将其包含在您的页面中。
      3. 将 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);
      

      【讨论】:

        猜你喜欢
        • 2011-03-30
        • 1970-01-01
        • 2016-03-17
        • 2011-05-17
        • 2016-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多