Más lógica borrosa en PHP 
He liberado una nueva versión de la librería de lógica borrosa en PHP. Esta nueva versión incluye una clase InferenciadorBorroso que permite aplicar de forma sencilla la librería y también he añadido una simulación de ejemplo (ayudándome de la librería jsGraphics de Walter Zorn) que aplica la lógica borrosa para controlar la posición de una masa en un plano sin rozamiento.

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 ] ( 2506 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente  |   ( 3 / 1898 )
Lógica borrosa y PHP 
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 ] ( 2480 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente  |   ( 3 / 1912 )
Dibujar desde Javascript 
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 ] ( 1916 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente  |   ( 3 / 1917 )
Vocoder 
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 ] ( 1899 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente  |   ( 3 / 2153 )
Algunos cambios en la sección Gameboy Advance 
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 ] ( 1386 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente  |   ( 3 / 2214 )

<< <Anterior | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | Siguiente> >>