2011-07-30 3 views
5

사람이 자바 스크립트에서 퍼지 논리에 액세스하는 방법을 알고 있습니까? 자바와 C++에서 좋은 퍼지 라이브러리가 있지만 HTML5/javascript에서 실행할 수있는 것이 필요했습니다.FuzzyLogic in Javascript?

답변

1

옵션은 다음과 같습니다

  1. 웹 페이지에서 액세스 할 수있는 서버와 사용 아약스에 논리를 넣습니다.
  2. 자바 스크립트로 다시 작성하여 페이지에 포함하십시오.
  3. 브라우저 플러그인에 C++을 삽입하고 javascript에서 플러그인에 액세스하십시오.

옵션 1) 또는 2)은 상황의 세부 사항에 따라 정상적으로 작동 할 수 있습니다. 옵션 3)은 일반적으로 플러그인의 배포, 유지 관리, 테스트 및 사용자 두통을 해결할 수있는 매우 전문화 된 응용 프로그램이 아니라면 일반적으로 나쁜 생각입니다.

+0

이제는 asm.js와 곧 웹 어셈블리가 있습니다. – jldupont

+0

@jldupont - asm.js는 Javascript의 서브 세트로 훨씬 빠르게 실행할 수 있으므로 제 2 번 포인트에서 확실히 다루어집니다. OP는 "HTML5/Javascript에서 실행"할 수있는 것을 요구하므로 어떻게 든 자바 코드로 코드를 가져와야 만 할 수 있습니다. webAssembly는 흥미 롭습니다 (아마도 C++에서 WASM으로 크로스 컴파일을 허용하지만 OP가 요구하는 것은 명확하지 않습니다). – jfriend00

0

내 대답을위한 NodeJS에서하고 싶은 사람들은 자바 스크립트에 익숙하다.

멋진 nodejs-java와 Java로 작성된 기적 jFuzzylite 라이브러리를 사용하십시오.

노드 자바 : https://www.npmjs.com/package/java

Fuzzylite : http://www.fuzzylite.com/. 그것은 jfuzzylite.jar에게 제공

내가 matlab에의 소속 함수를 만들었습니다 membership_function_pn.fis, 그것은 두 개의 입력과 하나 개의 출력을 가지고있다. Matlab 명령 인터페이스에 mfedit을 입력하면 퍼지 기능을 쉽게 만들 수있는 FIS 편집기가 나타납니다.

다음은 작업을 수행 한 코드입니다! (코드가 Nodej에서 어떻게 작동하는지 이해하려면 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);