| 
<?php
 /**
 * @author Gaston
 * @copyright 2014
 */
 
 include_once 'reglaInferencia.php';
 include_once 'variableLinguistica.php';
 include_once 'etiquetaLinguistica.php';
 include_once 'pertenencia.php';
 include_once 'baseConocimiento.php';
 include_once 'motordeinferencia.php';
 include_once 'defuzificador.php';
 include_once 'OperadorDifuso.php';
 include_once 'implicacion.php';
 
 //Definicion Temperatura
 
 //Funciones de Pertenencia de las etiquetas linguisticas
 $TempPert1 = new PertenenciaTriangular(0,15,10);
 $TempPert2 = new PertenenciaTriangular(10,20,15);
 $TempPert3 = new PertenenciaTriangular(18,22,20);
 $TempPert4 = new PertenenciaTriangular(20,30,25);
 $TempPert5 = new PertenenciaTriangular(25,35,30);
 
 //5 etiquetas Linguisticas
 $MBTemp = new EtiquetaLinguistica('muy baja',0,15,$TempPert1);
 $BTemp = new EtiquetaLinguistica('baja',10,20,$TempPert2);
 $NTemp = new EtiquetaLinguistica('normal',18,22,$TempPert3);
 $ATemp = new EtiquetaLinguistica('alta',20,30,$TempPert4);
 $MATemp = new EtiquetaLinguistica('muy alta',25,35,$TempPert5);
 
 $Temperatura=new VariableLinguistica('temperatura',0,40,array($MBTemp,$BTemp,$NTemp,$ATemp,$MATemp),1);
 // Fin definicion Variable Temperatura
 
 
 //Definicion Humedad
 
 //Funciones de Pertenencia de las etiquetas linguisticas
 $HumPert1 = new PertenenciaTriangular(0,20,10);
 $HumPert2 = new PertenenciaTriangular(10,40,25);
 $HumPert3 = new PertenenciaTriangular(30,50,40);
 $HumPert4 = new PertenenciaTriangular(40,70,55);
 $HumPert5 = new PertenenciaTriangular(60,100,70);
 
 //5 etiquetas Linguisticas
 $MBHum = new EtiquetaLinguistica('muy baja',0,15,$HumPert1);
 $BHum = new EtiquetaLinguistica('baja',10,20,$HumPert2);
 $NHum = new EtiquetaLinguistica('normal',18,22,$HumPert3);
 $AHum = new EtiquetaLinguistica('alta',20,30,$HumPert4);
 $MAHum = new EtiquetaLinguistica('muy alta',25,35,$HumPert5);
 
 $Humedad=new VariableLinguistica('humedad',0,100,array($MBHum,$BHum,$NHum,$AHum,$MAHum),1);
 // Fin definicion Variable Humedad
 
 
 
 //Definicion Variacion Temperatura
 
 //Funciones de Pertenencia de las etiquetas linguisticas
 $VarPert1 = new PertenenciaTriangular(-15,-7.5,-10);
 $VarPert2 = new PertenenciaTriangular(-10,-2.5,-5);
 $VarPert3 = new PertenenciaTriangular(-7.5,0,-2);
 $VarPert4 = new PertenenciaTriangular(-1,1,0);
 $VarPert5 = new PertenenciaTriangular(0,7.5,2.5);
 $VarPert6 = new PertenenciaTriangular(2.5,10,5.5);
 $VarPert7 = new PertenenciaTriangular(7.5,15,10);
 
 
 //7 etiquetas Linguisticas
 $BGVar = new EtiquetaLinguistica('bajada grande',-15,-7.5,$VarPert1);
 $BNVar = new EtiquetaLinguistica('bajada normal',-10,-2.5,$VarPert2);
 $BPVar = new EtiquetaLinguistica('bajada pequeña',-7.5,0,$VarPert3);
 $MVar = new EtiquetaLinguistica('mantener',-1,1,$VarPert4);
 $SPVar = new EtiquetaLinguistica('subida pequeña',0,7.5,$VarPert5);
 $SNVar = new EtiquetaLinguistica('subida normal',2.5,10,$VarPert6);
 $SGVar = new EtiquetaLinguistica('subida grande',7.5,15,$VarPert7);
 
 $Variacion=new VariableLinguistica('variacion temperatura',-15,15,array($BGVar,$BNVar,$BPVar,$MVar,$SPVar,$SNVar,
 
 $SGVar),0.2);
 // Fin definicion Variable Variacion Temperatura
 
 
 $BaseConocimiento = new BaseConocimiento();
 
 try {                                                                     //  ( ( ( not( (alto,normal) and (bajo,mucho) )
 
 or (alto,poco) ) and (bajo,mucho) )
 //si la temperatura es baja y la humedad es alta entonces la variacion es subida pequeña
 $regla1 = new ReglaInferencia(1,array( array($Temperatura, 'baja') ,array($Humedad, 'alta') ), array($Variacion, 'subida
 
 pequeña'));
 $BaseConocimiento->add_regla($regla1);
 //si la temperatura es baja y la humedad es muy alta entonces la variacion es subida normal
 $regla2 = new ReglaInferencia(2,array( array($Temperatura, 'baja') ,array($Humedad, 'muy alta') ), array($Variacion,
 
 'subida normal'));
 $BaseConocimiento->add_regla($regla2);
 $regla3 = new ReglaInferencia(3,array( array($Temperatura, 'normal') ,array($Humedad, 'alta') ), array($Variacion,
 
 'mantener'));
 $BaseConocimiento->add_regla($regla3);
 $regla4 = new ReglaInferencia(4,array( array($Temperatura, 'normal') ,array($Humedad, 'muy alta') ), array($Variacion,
 
 'bajada pequeña'));
 $BaseConocimiento->add_regla($regla4);
 }
 catch(ReglaInferenciaException $e){
 echo 'error: '.$e->getMessage();
 };
 
 $conjuncion = new minimo('Min');
 $disyuncion = new maximo('Max');
 $implicacion = new Mamdani('Mamdani');
 $agregacion = new maximo('agregacion Max');
 
 $motor = new MotorInferenciaMamdani($BaseConocimiento, $conjuncion, $disyuncion, $implicacion, $agregacion);
 $Temperatura->fuzificar(19.5);
 $Humedad->fuzificar(65);
 
 $resultados = $motor->inferir(array($Temperatura, $Humedad));
 
 
 $min = new DefuzificadorMinOfMax();
 $max = new DefuzificadorMaxOfMax();
 $med = new DefuzificadorMedOfMax();
 $cog = new DefuzificadorCOG();
 
 echo 'defuzificador Min Of Max: ';
 print_r($min->defuzificar($resultados));
 echo '</br>'.'</br>';
 
 echo 'defuzificador Max Of Max: ';
 print_r($max->defuzificar($resultados));
 echo '</br>'.'</br>';
 
 
 echo 'defuzificador Med Of Max: ';
 print_r($med->defuzificar($resultados));
 echo '</br>'.'</br>';
 
 //$r = Array('variacion temperatura'=>array(array(-30, 0.1), array(-20, 0.1), array(-10, 0.1), array(0, 0.2), array(10,
 
 0.2), array(20, 0.2), array(30, 0.2), array(40, 0.5), array(50, 0.5), array(60, 0.5), array(70, 0.5) ));
 
 
 echo 'defuzificador Centroide: ';
 print_r($cog->defuzificar($resultados));
 echo '</br>'.'</br>';
 
 //    echo 'defuzificador Min Of Max: '.$min->defuzificar($resultados).'</br>'.'</br>';
 //    echo 'defuzificador Max Of Max: '.$max->defuzificar($resultado).'</br>'.'</br>';
 //    echo 'defuzificador Med Of Max: '.$med->defuzificar($resultado).'</br>'.'</br>';
 //    echo 'defuzificador COS: '.$cos->defuzificar($resultado).'</br>'.'</br>';
 
 
 ?>
 |