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 ] ( 2229 visualizaciones )   |  [ 0 trackbacks ]   |  enlace permanente
  |    |    |    |   ( 3 / 1642 )

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