include("logica_borrosa.php")
$pos_muy_izquierda =& new ConjuntoBorroso("MUY_IZQ", -10, -10, 0, 2.5);
$pos_izquierda =& new ConjuntoBorroso("IZQ", 0, 2.5, 2.5, 5);
... RESTO DE CONJUNTOS ...
$conjuntos = array("MUY_IZQ" => $pos_muy_izquierda, "IZQ" => $pos_izquierda, "CENTRO" => $pos_centro, "DER" => $pos_derecha, "MUY_DER" => $pos_muy_derecha, "V_ATRAS" => $vel_atras, "V_NULA" => $vel_nula, "V_ADELANTE" => $vel_adelante, "F_MUY_NEG" => $fuerza_muy_negativa, "F_NEG" => $fuerza_negativa, "F_NULA" => $fuerza_nula, "F_POS" => $fuerza_positiva, "F_MUY_POS" => $fuerza_muy_positiva);
$variablesEntrada = array("P" => 0, "V" => 0);
$variablesSalida = array("F" => 0);
...
$inf =& new InferenciadorBorroso();
$inf->ponerConjuntos($conjuntos);
$inf->ponerVariablesEntrada($variablesEntrada);
$inf->ponerVariablesSalida($variablesSalida);
$inf->aniadirRegla("(P == CENTRO) & (V == V_NULA)", "F == F_NULA");
$inf->aniadirRegla("(P == CENTRO) & (V == V_ATRAS)", "F == F_POS");
$inf->aniadirRegla("(P == CENTRO) & (V == V_ADELANTE)", "F == F_NEG");
... RESTO DE REGLAS ...
Para calcular la fuerza necesaria utilizando el inferenciador borroso:
$inf->variablesEntrada["P"] = $estado->posicion;
$inf->variablesEntrada["V"] = $estado->velocidad;
$inf->iterar();
$fuerza = $inf->salida["F"];
Como se ve, es muy sencillo utilizar la librería :-). Sección "soft".
[ añadir comentario ] ( 2483 visualizaciones ) | [ 0 trackbacks ] | enlace permanente | ( 3 / 1877 )
En la sección "soft" he subido una pequeña librería para PHP que permite implementar lógica borrosa en nuestros scripts PHP. La he desarrollado porque la vamos a utilizar en un proyecto de la empresa para toma de decisiones.
Está licenciada GPL y aún es una versión bastante verde; hay que hacerle muchas pruebas y seguramente sufrirá cambios. Espero que le sirva de algo a alguien aparte de a mi :-).
[ 5 comentarios ] ( 2452 visualizaciones ) | [ 0 trackbacks ] | enlace permanente | ( 3 / 1890 )
Me acabo de quedar alucinado viendo una librería que se han currado los de http://www.walterzorn.com. La librería te permite dibujar desde código Javascript directamente en la página web: líneas, elipses, polígonos, texto con diferentes estilos, etc... y todo utilizando una API sencilla que recuerda mucho a la clase Graphics de Java (drawLine, fillRect, setColor, etc).
Pásate por http://www.walterzorn.com/jsgraphics/jsgraphics_e.htm. Está que se sale 8-)
[ añadir comentario ] ( 1894 visualizaciones ) | [ 0 trackbacks ] | enlace permanente | ( 3 / 1895 )
En la sección "soft" he añadido un vocoder en C. Utiliza filtros de estado variable discretos para implementar los filtros paso banda y una simplificación de la transformada de Hilbert discreta para implementar los seguidores de envolvente.
Junto al enlace para bajar el código fuente del vocoder he puesto un ejemplo: dos señales, una portadora con un acorde de violines y una moduladora con una voz, y el resultado de aplicar el vocoder a estas dos señales. Mejor lo oyes y te haces una idea :-)
El código fuente del vocoder es GPL (¡cómo no! :-).
[ añadir comentario ] ( 1876 visualizaciones ) | [ 0 trackbacks ] | enlace permanente | ( 3 / 2127 )
He hecho la sección "gameboy advance" bilingüe y he añadido un nuevo ejemplo al apartado de gráficos: Un pequeño programa que muestra cómo se accede a la memoria de video de la Gameboy Advance en el modo gráfico 4 (240x160 a 256 colores), tanto a la memoria de pantalla como a la memoria de la paleta (mode4.tar.gz).
Además, el conversor de ficheros de imagen a ficheros .H para Gameboy Advance, el HGenerator, ahora soporta imágenes RGB (no indexadas) generando como salida, en esos casos, un array de enteros de 16 bits con la información RGB de cada pixel en formato RGB 5-5-5, compatible con el modo gráfico 3 de la GBA. Si la imagen de entrada es de 256 colores indexada funciona como hasta ahora, esto es; vuelca la paleta y los datos en arrays separados.
Ahora a cenar... ;-)
[ añadir comentario ] ( 1364 visualizaciones ) | [ 0 trackbacks ] | enlace permanente | ( 3 / 2189 )