¿Alguien sabe cómo se puede acceder a la lógica difusa desde javascript? Tengo una buena biblioteca difusa en Java y C++, pero quería algo que pudiera ejecutar desde HTML5/javascript.FuzzyLogic en Javascript?
Respuesta
Las opciones son:
- poner la lógica en el servidor y el uso de AJAX para acceder a él desde una página web.
- Vuelva a escribirlo en javascript e inclúyalo en su página.
- Coloque el C++ en un complemento del navegador y acceda al complemento desde javascript.
Las opciones 1) o 2) podrían funcionar bien dependiendo de los detalles de la situación. Opción 3) es generalmente una mala idea a menos que sea una aplicación muy especializada que de alguna manera hace que valga la pena lidiar con la distribución, el mantenimiento, las pruebas y los dolores de cabeza de los usuarios de un complemento.
Hay dos proyectos disponibles:
https://github.com/marcolanaro/JS-Fuzzy - listo para usar en el navegador
https://github.com/sebs/node-fuzzylogic - nodejs módulo, se podrían utilizar en el navegador
Mi respuesta para aquellos que quieren hacer en NodeJS, ya que está familiarizado con javascript
Utilice un impresionante nodejs-java, y una biblioteca jFuzzylite milagrosa que está escrita en Java.
nodo-java: https://www.npmjs.com/package/java
Fuzzylite: http://www.fuzzylite.com/. Proporciona jfuzzylite.jar
He creado una función de pertenencia en Matlab membership_function_pn.fis, que tiene dos entradas y una salida. Escriba mfedit en la interfaz de comandos de Matlab, aparecerá un editor FIS donde puede hacer fácilmente su función difusa.
El siguiente es mi código que hizo el trabajo !! (Para comprender cómo funciona el código en Nodejs, realice primero una práctica en Java con 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);
- 1. Analizador de JavaScript en JavaScript
- 2. () [] +! en javascript
- 3. Inyectar javascript en una función de Javascript
- 4. archivo JavaScript importación en función de JavaScript
- 5. compilador Kotlin a JavaScript en JavaScript?
- 6. JavaScript archivo en byte []
- 7. python's hasattr en javascript?
- 8. caracteres internacionales en Javascript
- 9. sleep() en Javascript
- 10. macro definición en javascript
- 11. __LINE__ equivalente en Javascript
- 12. interpolación en JavaScript
- 13. enteros en JavaScript
- 14. literales XML en JavaScript?
- 15. Mónadas en JavaScript?
- 16. window.onerror en Safari (Javascript)
- 17. tabla hash en JavaScript
- 18. Rango en Javascript/jQuery?
- 19. Algoritmo Bresenham en Javascript
- 20. Basándose en JavaScript
- 21. Seleccionar texto en javascript
- 22. generar MIDI en javascript
- 23. preg_match en JavaScript?
- 24. Funciones privadas en JavaScript
- 25. probabilidad en javascript ayuda?
- 26. Afirmaciones en JavaScript
- 27. Sombreado variable en JavaScript
- 28. Punteros en JavaScript?
- 29. Pegar evento en Javascript
- 30. NS_Error_Failure en Javascript POST
ahora hay asm.js y pronto conjunto web. – jldupont
@jldupont - asm.js es un subconjunto de Javascript que se puede ejecutar mucho más rápido, por lo que ciertamente estaría cubierto por mi punto 2. El OP pide algo que puedan "ejecutar desde HTML5/Javascript", por lo que tendrán que obtener su código en Javascript para poder hacer eso. webAssembly es interesante (quizás permitiendo una compilación cruzada de C++ a WASM, pero ni siquiera está claro eso es lo que el OP está pidiendo). – jfriend00