Czy ktoś wie, w jaki sposób można uzyskać dostęp do logiki rozmytej z javascript? Mam dobrą bibliotekę rozmytą w Javie i C++, ale chciałem czegoś, co mogłem uruchomić z HTML5/javascript.FuzzyLogic w JavaScript?
Odpowiedz
opcje:
- Put logikę na serwerze i wykorzystanie technologii AJAX do niego dostęp z poziomu strony internetowej.
- Przepisz go w javascript i umieść na swojej stronie.
- Umieść C++ w wtyczce do przeglądarki i uzyskaj dostęp do wtyczki z javascript.
Opcje 1) lub 2) mogą działać poprawnie w zależności od szczegółów sytuacji. Opcja 3) jest generalnie złym pomysłem, chyba że jest to bardzo specjalistyczna aplikacja, która w jakiś sposób sprawia, że warto poradzić sobie z dystrybucją, konserwacją, testowaniem i kłopotami użytkowników wtyczki.
Istnieją dwa projekty dostępna:
https://github.com/marcolanaro/JS-Fuzzy - gotowy do użycia w przeglądarce
https://github.com/sebs/node-fuzzylogic - nodejs moduł, mogą być wykorzystane w przeglądarce
Moja odpowiedź dla ci, którzy chcą robić w NodeJS, jak to jest znane z javascript
Użyj wspaniałej biblioteki nodejs-java i cudownej biblioteki jFuzzylite, która jest napisana w Javie.
węzła Java: https://www.npmjs.com/package/java
Fuzzylite: http://www.fuzzylite.com/. Zapewnia jfuzzylite.jar
I utworzeniu funkcji członkostwa w Matlab membership_function_pn.fis, to ma dwa wejścia i jedno wyjście. Wpisz mfedit w interfejsie poleceń Matlaba, pojawi się edytor FIS, w którym możesz łatwo wykonać funkcję fuzzy.
Oto mój kod, który wykonał pracę !! (Aby zrozumieć, jak działa kod w Nodejs, wykonaj jedną z ćwiczeń w języku Java z jfuzzylite.jar).
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);
jest teraz plik asm.js i wkrótce zespół internetowy. – jldupont
@jldupont - asm.js jest podzbiorem JavaScript, który może być uruchamiany o wiele szybciej, więc z pewnością byłby objęty moim punktem # 2. OP prosi o coś, co może "uruchomić z HTML5/Javascript", więc będą musieli jakoś wprowadzić swój kod do JavaScript, aby móc to zrobić. webAssembly jest interesujący (być może umożliwiający kompilację krzyżową z C++ do WASM, ale nie jest nawet jasne, o co prosi OP. – jfriend00