2011-07-30 9 views
5

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

1

opcje:

  1. Put logikę na serwerze i wykorzystanie technologii AJAX do niego dostęp z poziomu strony internetowej.
  2. Przepisz go w javascript i umieść na swojej stronie.
  3. 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.

+0

jest teraz plik asm.js i wkrótce zespół internetowy. – jldupont

+0

@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

0

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);