You are on page 1of 5

RESUMEN.

La Lógica Fuzzy es una de las herramientas de la inteligencia artificial que utiliza la experiencia del ser humano para generar un razonamiento que permite la toma de decisiones. Mediante esta herramienta se puede representar un sistema de gestión a través de un modelo matemático no-lineal, para ello se hace uso de variables lingüísticas y una serie de condiciones o reglas previamente definidas. Esta metodología trata de emular la experiencia adquirida por uno o más seres humanos a lo largo del tiempo, este sistema tendrá en su memoria una base de datos con múltiples soluciones a un mismo problema, luego el sistema tendrá que escoger de entre esas soluciones a la que mejor pueda aplicarse a fin de lograr los mejores resultados. La elección de la estructura de decisiones a seguir dependerá de las características del trabajo en donde se aplicará, además el sistema podrá ir aprendiendo con el tiempo y almacenar sus propias experiencias para lo cual se puede apoyar en algoritmos de redes neuronales y algoritmos genéticos.

NOMBRE DEL ALUMNO: Alejandro Bizarro Álvarez

REGISTRO: 10310043 APLICACIÓN DE LA LOGICA FUZZI NOMBRE DE LA ESCUELA: CENTRO DE ENSEÑANZA TÉCNICA INDUSTRIAL CARRERA: ELECTRÓNICA EN COMPUTACION. MATERIA: INTELIGENCIA ARTIFICIAL
FECHA DE EJECUCION DE LA PRÁCTICA: 28/FEBRERO/2012

OBJETIVOS. Comprobar la lógica fuzzy que es el conjunto de regla de inferencia. DESARROLLO TEORICO. ALGORITMO DE LA PRÁCTICA. Aparece el menú principal en el cual te pregunta la opción a accesar : 1) Inicia programa 2) Sales del programa -caso 2:  Se cierra la aplicación y se termina el programa

PROFESOR: JAIME HUESO ZAVALA

// .h> #include<windows. float conversion.  Dependiendo el nivel de temperatura y el porcentaje de humedad te retornara un nivel de riego deacuerdo a la siguiente tabla: int Riego().} if(seleccion1==2){cout << "CERRANDO SISTEMA. char condicion[10].}/* ESTA VARIABLE SE RECICLO Y SE USA PARA DETECTAR QUE SE INTRODUZCA SOLO UN NUMERO DECIMAL Y NO TEXTO */ while(validartemp()). int nivelriego(). float humedad1.\n" ./ * CONVERSION DE CADENA A FLOTANTE*/ if(seleccion1==1){Riego().exit(0). /* INICIA MENU PRINCIPAL */ cout<<"SELECCIONE LA OPCION QUE DESEA REALIZAR:\n".h> using namespace std.} } } int Riego() { do temperatura 0-25% 25-60% 60100% bajo medio medio Muy bajo Bajo Alto No riego No riego Muy alto DESARROLLO PRÁCTICO. cin>>temperatura. int validartemp().  código del programa ejecutado: #include "stdafx... float seleccion1.letra o numero negativo. cout<<"BIENVENIDO AL SISTEMA DE RIEGO:\n\n".h" #include <iostream> #include <string> #include <cstdlib> atof() #include <conio. int validarhum(). char humedad[20].caracteres ni números negativos Nota: si se introducen alguno de estos comandos mencionados aparecerá un mensaje en el que te pedirá introducir un dato valido  Una vez introducida la temperatura te pedirá el porcentaje de humedad de nuevo sin algun carácter .. void main() { while(1) /* ESTE WHILE FUNCIONA PARA QUE CUANDO ACABE EL PROGRAMA SE CICLE E INICIE DE NUEVO */ { do{ system("cls").donde no te aceptara letras. char seleccion.-Caso1:  Entra a pedir los datos respectivos de temperatura y humedad  Cuando entra al programa te pedirá inicialmente la temperatura. cout<<" 1) INTENSIDAD DEL RIEGO EN EL HAMBIENTE \n ". cout<<"2) CERRAR EL PROGRAMA\n "<<endl./* ESTA FUNCION VERIFICA SI ES UN NUMERO*/ seleccion1=atof(temperatura). /* LIMPIA PANTALLA*/ system ( "color 09" ). char temperatura[20]. float s. int validarcondicion().getch().

cin >> condicion. cin >> temperatura. conversion=atof(temperatura).cout <<"\n PORCENTAJE DE HUMEDAD:".cout<<"TEMPERATURA ACTUAL:". do{ cout << "DESEA REINICIAR EL SISTEMA(ESCRIBA SI O NO)?\n" .%")==NULL) {system("cls"). cout<<"TEMPERATURA ACTUAL:".cout<<"TEMPERATURA ACTUAL:".} } int validarhum() { if(strspn(humedad.cout<<conversion.cout<<"TEMPERATURA ACTUAL:".getch (). "1234567890.co ut<<"NIVEL DE RIEGO AUOTRIZADO:BAJO \n".system("cls"). cout << "INTRODUZA LA HUMEDAD DEL MEDIO EN PORCENTAJE DEL CERO AL 100 PORCIENTO\n".co ut<<"NIVEL DE RIEGO AUTORIZADO:BAJO\n".} while (validarcondicion()).c out<<"NIVEL DE RIEGO AUTORIZADO:NO RIEGO\n". system("cls"). /////////////////ahora se pregunta por la humedad/////////////////////// //////// do{system("cls").cout<<conversion.cout<<humedad1.getch ().getch ().getch ().return 0 . } .cout<<"TEMP ERATURA ACTUAL:". } if(humedad1 >=26 && humedad1<=60){system("cls").return 0 .")==NULL) {system("cls").cout<<humedad1.getch (). } int validartemp() { if(strspn(temperatura.cout<<"NIVEL DE RIEGO AUTORIZADO:MUY BAJO\n".system("cls"). } else{.cout <<"\n PORCENTAJE DE HUMEDAD:".cout<<conversion.getch().cout <<"\n PORCENTAJE DE HUMEDAD:".return 0 .cout<<" DEBE INGRESAR UN NIVEL DEL 0 AL 100 PORCIENTO\n ".return 0 . "1234567890. }while (validarhum()).getch ().} if(humedad1 >60 && humedad1<=100){system("cls").cout<<conversion.cout <<"\n PORCENTAJE DE HUMEDAD:".} } int nivelriego() {system ("color 03").} while (validartemp()).cout <<"\n PORCENTAJE DE HUMEDAD:".return 0 . cout << "INTRODUZCA TEMPERATURA DEL MEDIO:" << endl. system ( "color 09" ).cout<<humedad1. return(0).cout<<humedad1.} } if(conversion<=25){ if(humedad1 >=0 && humedad1<=25){system("cls").getch().cout<<" DEBE INGRESAR ALGO APROPIADO\n ". if(conversion<=15){ if(humedad1 >=0 && humedad1<=25){system("cls").cout <<"\n PORCENTAJE DE HUMEDAD:".cout<<conversion.cout<<humedad1.} if(humedad1 >25 && humedad1<=60 ){system("cls").{system("cls"). seleccion=0.cout<<humedad1. humedad1=atof(humedad). } else{. return 0.c out<<"NIVEL DE RIEGO AUTORIZADO:NO RIEGO\n". cin >> humedad. } if(humedad1 >=61 && humedad1<=100){system("cls").co ut<<"NIVEL DE RIEGO AUOTRIZADO:RIEGO MEDIO\n".cout<<conversion.cout<<"TEMPERATURA ACTUAL:". nivelriego(). return 0.return 0 .

.cout<<conversion.return 0 .cout<<"RIEGO MUY ALTO.cout<<conversion. } if(humedad1>100){ system ( "color 04" ).return(0). } return 0 .return 0 .}}  CORRIDA DE PRUEBA PARA COMPROBACION DEL PROGRAMA: Aparece el menú principal en el cual te pregunta la opción a accesar: int validarcondicion(){ if( strcmp(condicion.cout<<"TEMPERATURA ACTUAL:".cout <<"\n PORCENTAJE DE HUMEDAD:".cout<<humedad1.cout << "CERRANDO SISTEMA."si")==0  Si presiona un carácter especial. } } if(conversion>=40){ system ( "color 04" ).getch ().co ut<<"NIVEL DE RIEGO AUOTRIZADO:RIEGO MEDIO\n".\n" .YA VALIO SU JARDIN POR LA TEMPERATURA EXCESIVA!! \n"..co ut<<"NIVEL DE RIEGO AUTORIZADO:RIEGO ALTO\n".return(0).. return (1).exit(1).} if(conversion<=40){ if(humedad1 >=0 && humedad1<=25){system("cls")."no")==0 ){system("cls").system("cls"). letra o numero negativo te manda un mensaje de error: ..return 0 .cout <<"\n PORCENTAJE DE HUMEDAD:".\n" .cout<<"TEMPERATURA ACTUAL:".getch ().getch().cout<<"TEMPERATURA ACTUAL:".c out<<"NIVEL DE RIEGO AUTORIZADO:RIEGO MUY ALTO \n".cout<<humedad1. } if(humedad1 >=26 && humedad1<=60){system("cls").cout <<"\n PORCENTAJE DE HUMEDAD:".return 0 .YA VALIO SU JARDIN POR LA HUMEDAD EXCESIVA!! \n".cout << "PRESIONE CUALQUIER TECLA.getch().getch().getch().} if( strcmp(condicion.cout<<humedad1.return 0 . } ){system("cls").system("cls ").cout<<conversion.} else{ system("cls")..getch().cout<<"RIEGO MUY ALTO. } if(humedad1 >=61 && humedad1<=100){system("cls")..getch ().cout << "DEBE ESCOGER LA OPCION INDICADA\n" .

 Si metes una temperatura muy alta o un nivel de humedad muy alto aparecerá el siguiente error: CONCLUSIONES: Se comprobó la lógica fuzzi en el cual mediante las opciones ingresadas por el usuario por medio de if’s sucesivos el programa generaba una cierta respuesta haciendo aparentar inteligente al programa . Si se introduce correctamente la opción comenzara a pedir los datos:  Una vez introducido el valor temperatura te preguntara el porcentaje de humedad:  Una vez introducido los datos te mandara a pantalla el nivel de riego de acuerdo a los datos introducidos y la tabla diseñada en el desarrollo teórico.