Los algoritmos de entrenamiento de universos fijos y de universos variables están disponibles en UNFuzzy. En este video vamos a mostrar cómo se utilizan desde esa plataforma. Para eso, vamos a imaginar un sistema nuevo, recién abierto el programa. Es un sistema de 1 entrada, 1 salida y 3 reglas. Las entradas tienen una definición de conjuntos triangulares; la salida también. Mostrémoslo. Y las etiquetas son, en ambos casos: conjuntos 1, conjunto 2, conjunto 3. Vamos a borrar todas las reglas porque nuestro propósito es entrenar el sistema. Vamos a vaciar la base de reglas; se eliminan todas las reglas. Y en este momento tenemos 0 reglas. Vamos a utilizar ahora datos para entrenar el sistema. La opción aparece en el ícono de la varita mágica. Allí podemos insertar los patrones de entrenamiento uno a uno o cargarlos desde un archivo. Mostremos primero cómo es 1 a 1. Insertamos un patrón y dados los valores, supongamos que los valores son 0,1 y 0,3, la entrada 0,1, 0,3. Podemos entrenar con las opciones de universos fijos y universos variables, comencemos por universos fijos, y activemos la opción de limpiar el sistema. Limpiar el sistema significa borrar antes del entrenamiento las cosas que entrenan, el algoritmo. Universos fijos nos entrena una base de reglas, entonces limpiar el sistema significa borrar la base de reglas antes de entrenar. Eso a veces es bueno, a veces no. A veces quiere uno mantener la definición de las reglas y sumarle unas con entrenamiento. En este ejemplo vamos a limpiar el sistema y procedemos a entrenar. El sistema nos informa que el entrenamiento ha concluido exitosamente. Vamos a ver qué fue lo que encontró. Para eso observamos que ahora hay una regla. La regla que encontró es: si conjunto 2, entonces conjunto 2, lo cual es consistente con los datos que teníamos. Mostremos ahora cómo utilizar el algoritmo de universos variables. El algoritmo de universos variables, recuerden ustedes que lo que hace es poner un conjunto centrado en cada dato de entrenamiento. ¿Cómo le decimos a UNFuzzy cuál es el conjunto que queremos que ponga centrado en cada dato? La estrategia que se implementó es que él va a poner el primer conjunto que encuentre en la variable respectiva. Voy a cambiar la forma de este conjunto marcado en rojo, conjunto 1 de triangular, voy a poner una campana. Y voy a hacer algo semejante en la salida. Para distinguirlo, en lugar de poner una campana, vamos a poner allí un conjunto tipo Pi y podríamos cambiar el ancho tanto de la campana como del trapecio, pero vamos a dejarlo de esta forma. Y ahora vamos a entrenar el sistema. Insertemos un patrón, por ejemplo, un patrón centrado en menos 0,2 y en 0,3. Vamos a limpiar el sistema y a pedirle que utilice el algoritmo de universos variables. Damos la orden de entrenar y el sistema nos informa que lo ha hecho adecuadamente. ¿Qué fue lo que encontró con universos variables? El debe haber definido la variable lingüística de entrada, la de salida y la regla. Veamos. En la entrada, él ha dejado un conjunto que se llama "conjunto base", que era el primer conjunto. Ese es el que va coger uno a uno con los datos de entrenamiento, y luego creó otro, conjunto 1, centrado justamente en menos 0,2, que fue el dato de entrenamiento. En la salida hizo algo parecido, pero con el conjunto que le dijimos. Dejó el conjunto base y construyó otro conjunto que le dio el nombre de "conjunto 1", centrado en el dato de entrenamiento. Construyó también una regla; si conjunto 1, entonces conjunto 1. Esa es la forma de utilizar el programa. Ahora mostremos cómo lo podemos hacer a través de datos previamente preparados y que están disponibles en un archivo donde están esos datos de entrenamiento preparados antes. Para eso vamos a utilizar el siguiente ejemplo. Vamos a suponer que queremos ajustar una función de prueba, es una función clásica que viene en los textos de los primeros desarrolladores de subsistemas de [inaudible]. Es la suma de tres sinusoidales que se alimenta, la entrada, con una señal sinusoidal. La entrada varía entre menos 1 y 1, y cuando observamos la salida, la salida varía entre menos 0,5 y 0,5. Ahora queremos entrenar un sistema que tenga un comportamiento parecido, y para eso hemos preparado una colección de datos. Voy a mostrarles los datos. Los datos están en un archivo plano, separados por espacio, puede ser también por tabulador, puede ser también por punto y coma. Y tengo disponibles mis datos, que van a ser los datos de entrenamiento. Vamos ahora a crear un sistema completamente nuevo. Y para hacer este ejercicio probemos con unas variables lingüísticas diferentes, por ejemplo, vamos a autodefinir unos conjuntos curvos cortos. Utilicemos 9. Se llaman conjunto 1, conjunto 2, etcétera, hasta conjunto 9. Vamos a hacer lo mismo en la salida. Autodefinimos 9 conjuntos. Para estar seguros, vamos a vaciar la base de reglas. Y ahora, entrenamos, pero entrenamos con los patrones que queremos. Vamos a cargar esos patrones, los tengo disponibles en un archivo, y al cargarlos se visualizan en la plataforma. Allí podríamos editarlos si quisiéramos. Ahora entrenemos el sistema. El entrenamiento es bastante rápido. Y han aparecido 9 reglas. Veamos cómo se comporta nuestro sistema. Este es el sistema ya entrenado. Observamos que la variación es entre menos 0,5 y 0,5. Entonces, mejoremos un poco nuestra definición. Vamos a hacer que la variable de salida solo se mueva en ese rango. En este momento está entre menos 1 y 1. Cambiémoslo a menos 0,5 y 0,5. Vamos a las salidas, y en la edición de la variable decimos que el valor mínimo va a ser menos 0,5 y el valor máximo 0,5. El sistema ajusta los conjuntos al nuevo rango y vamos a repetir el procedimiento de entrenamiento. Vaciamos la base de reglas para estar seguros. Vamos a la opción de entrenamiento. Cargamos los patrones. Entrenamos. Veamos la relación entrada salida. Imita bastante bien la función que queríamos entrenar y además, hemos descubierto conocimiento porque tenemos unas reglas de comportamiento que antes no conocíamos y ahora sí las tenemos aquí expresadas. Quizás lo único que no nos guste es que están un poco en desorden porque la primera es si conjunto 6 y para buscar si conjunto 1 nos toca manualmente y la encontramos aquí abajo. Podemos también ver la certeza asignada a cada una de esas reglas, que es el número que se visualiza, la columna que se visualiza si activamos esta opción.