Archivo de rutinas que contiene las clases FuzzyController y FISParser

Archivo que contiene las clases FuzzyController y FISParser, para administrar el controlador difuso y cargar y exportar archivos .fis respectivamente

class rutinas_fuzzy.FISParser(file, InputList=None, OutputList=None, RuleEtiquetas=None)[fuente]

Clase para cargar y exportar archivos .fis, para cargar los archivos FIS las funciones get_system, get_vars,get_var y get_rules fueron tomadas de yapflm:

Yet Another Python Fuzzy Logic Module: https://github.com/sputnick1124/yapflm

Para obtener los datos necesarias del .fis, de allí, se aplica la función fis_to_json para completar el parsin. En el caso de la exportación, se realiza utilizando la función json_to_fis

__init__(file, InputList=None, OutputList=None, RuleEtiquetas=None)[fuente]

Constructor de la clase, inicializa las variables a utilizar y selecciona entre cargar el fis o exportarlo dependiendo de las variables con las que se cree el objeto

Parámetros
  • file (str) – Dirección del archivo a cargar o exportar

  • inputlist (list, optional) – Lista de variables de entrada, defaults to None

  • OutputList (list, optional) – Lista de variables de entrada, defaults to None

  • RuleEtiquetas (list, optional) – Lista con la información necesaria para crear las reglas, defaults to None

fis_to_json()[fuente]

Función para completar la creación del controlador a partir de un archivo .fis

get_rules()[fuente]

Función tomada de yapflm (Yet Another Python Fuzzy Logic Module)

get_system()[fuente]

Funcion tomada de yapflm (Yet Another Python Fuzzy Logic Module)

get_var(vartype, varnum, start_line, end_line)[fuente]

Funcion tomada de yapflm (Yet Another Python Fuzzy Logic Module)

get_vars()[fuente]

Función tomada de yapflm (Yet Another Python Fuzzy Logic Module)

json_to_fis()[fuente]

Función para exportar el controlador en formato .fis

class rutinas_fuzzy.FuzzyController(inputlist, outputlist, rulelist=[])[fuente]

Clase para administrar el controlador difuso, a partir de la misma se puede crear el controlador difuso e ir creandolo de forma programatica por medio de la interfaz grafica definida en Ui_VentanaPrincipal.py y manejada en FuzzyHandler.py

__init__(inputlist, outputlist, rulelist=[])[fuente]

Se utiliza para inicializar el controlador con las entradas y salidas del mismo, en caso de que se envie el parametro opcional, rulelist, se crea el controlador a partir de las reglas suministradas y queda listo para usar

Parámetros
  • inputlist (list) – Lista de variables de entrada

  • outputlist (list) – Lista de variables de salida

  • rulelist (list, optional) – Lista de reglas, defaults to []

agregar_regla(window, Etiquetasin, Etiquetasout, logica)[fuente]

Funcion para crear una regla a partir de un set

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • Etiquetasin (list) – set de entrada

  • Etiquetasout (list) – set de salida

  • logica (bool) – Logica a utilizar

calcular_valor(inputs, outputs)[fuente]

Funcion para calcular las salidas del controlador dado sus entradas, esta funcion se utiliza en la funcionalidad de simulacion de sistemas de control

Parámetros
  • inputs (list) – Lista con los valores de entrada

  • outputs (list) – Lista vacia del tamaño del numero de salidas

cambiar_metodo(window, o, metodo)[fuente]

Funcion para cambiar el metodo de defuzzificacion de una salida

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • o (str) – Numero de salida

  • metodo – Nombre del nuevo metodo de defuzzificacion

cambiar_nombre_input(window, i, nombre)[fuente]

Funcio para cambiar el nombre de una entrada

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • i (int) – Numero de entrada

  • nombre (str) – Nuevo nombre de la entrada

cambiar_nombre_output(window, o, nombre)[fuente]

Funcio para cambiar el nombre de una salida

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • o (int) – Numero de salida

  • nombre (str) – Nuevo nombre de la salida

cambiar_regla(window, Etiquetasin, Etiquetasout, index_rule, logica)[fuente]

Funcion para cambiar una regla a partir de un nuevo set

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • Etiquetasin (list) – set de entrada

  • Etiquetasout (list) – set de salida

  • index_rule (int) – Indice indicando la regla a cambiar

  • logica (bool) – Logica a utilizar

cambio_etinombre_input(window, inputlist, i, n, old_name)[fuente]

Funcio para cambiar el nombre de una etiqueta en la entrada seleccionada

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • inputlist (list) – Lista de variables de entrada

  • i (int) – Numero de entrada

  • n (int) – Numero de etiqueta

  • old_name (str) – Nombre anterior

cambio_etinombre_output(window, outputlist, o, n, old_name)[fuente]

Funcio para cambiar el nombre de una etiqueta en la salida seleccionada

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • outputlist (list) – Lista de variables de salida

  • o (int) – Numero de salida

  • n (int) – Numero de etiqueta

  • old_name (str) – Nombre anterior

cambio_etiquetas_input(window, inputlist, i)[fuente]

Funcion para actualizar las etiquetas de entrada del controlador

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • inputlist (list) – Lista de variables de entrada

  • i (int) – Numero de entrada

cambio_etiquetas_output(window, outputlist, o)[fuente]

Funcion para actualizar las etiquetas de salida del controlador

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • outputlist (list) – Lista de variables de salida

  • o (int) – Numero de salida

crear_controlador()[fuente]

Funcion para crear el controlador difuso a partir de todas las reglas creadas

crear_etiquetas_input(inputlist)[fuente]

Funcion para crear las etiquetas de una entrada a partir de la lista de variables de entrada

Parámetros

inputlist (list) – Lista de variables de entrada

crear_etiquetas_output(outputlist)[fuente]

Funcion para crear las etiquetas de una salida a partir de la lista de variables de salida

Parámetros

outputlist (list) – Lista de variables de salida

crear_input(inputlist)[fuente]

Funcion para crear las variables de entrada a partir de la lista de variables de entrada

Parámetros

inputlist (list) – Lista de variables de entrada

crear_output(outputlist)[fuente]

Funcion para crear las variables de salida a partir de la lista de variables de salida

Parámetros

outputlist (list) – Lista de variables de salida

crear_plots_in(window, ni)[fuente]

Funcion para crear los objetos de graficacion de PyQtGraph de la entrada, el codigo para la obtencion de los valores de salida y el graficado es una version altamente modificada de la funcion .view() de Scikit-Fuzzy. Las modificaciones realizadas fueron necesarias para cambiar matplotlib por PyQtGraph

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • ni (int) – Numero de entradas

crear_plots_out(window, no)[fuente]

Funcion para crear los objetos de graficacion de PyQtGraph de la salida, el codigo para la obtencion de los valores de salida y el graficado es una version altamente modificada de la funcion .view() de Scikit-Fuzzy. Las modificaciones realizadas fueron necesarias para cambiar matplotlib por PyQtGraph

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • no (int) – Numero de salidas

crear_reglas(rulelistC)[fuente]

Funcion para crear las reglas a partir de una lista que contiene toda la informacion necesaria, esta lista es creada en FuzzyHandler.py:

Cada posicion en la lista contiene un set de entradas, salidas y la logica a utilizar (AND o OR), a su vez, cada set es una lista que posee en cada posicion otra lista con la etiqueta, el numero de entrada/salida y si esta o no negada para el caso de las entradas, en caso de ser salida contiene el peso asignado

Parámetros

rulelistC (list) – Lista con la informacion necesaria para crear las reglas

eliminar_regla(index_rule)[fuente]

Funcion para eliminar una regla

Parámetros

index_rule (int) – Indice indicando la regla a eliminar

graficar_mf_in(window, i)[fuente]

Funcion para graficar las funciones de membresia de una entrada

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • i (int) – Numero de entrada

graficar_mf_out(window, o)[fuente]

Funcion para graficar las funciones de membresia de una salida

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • o (int) – Numero de salida

graficar_prueba_pyqtgraph(window, ni, no)[fuente]

Funcion para actualizar la grafica en funcion de las nuevas entradas, codigo tomado y modificado de la funcion .view() de Scikit-Fuzzy y adaptado para su uso con PyQtGraph

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • ni (int) – Numero de entradas

  • no (int) – Numero de salidas

graficar_respuesta_2d(window, inrange, no)[fuente]

Funcion para graficar la respuesta del controlador en caso de poseer una entrada

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • inrange (list) – Rango de la variable de entrada

  • no (int) – Numero de salidas

graficar_respuesta_3d(window, inrange1, inrange2, no)[fuente]

Funcion para graficar la superficie de respuesta del controlador en caso de poseer 2 entradas

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • inrange1 (list) – Rango de la variable de entrada uno

  • inrange2 (list) – Rango de la variable de entrada dos

  • no (int) – Numero de salidas

prueba_de_controlador(window, values, ni, no)[fuente]

Funcion para realizar la prueba del controlador

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • values (list) – Valores de entradas dados por el usuario con los sliders

  • ni (int) – Numero de entradas

  • no (int) – Numero de salidas

update_definicion_input(window, inputlist, i, n)[fuente]

Funcion para actualizar la definicion de una funcion de membresia en la entrada seleccionada

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • inputlist (list) – Lista de variables de entrada

  • i (int) – Numero de entrada

  • n (int) – Numero de etiqueta

update_definicion_output(window, outputlist, o, n)[fuente]

Funcion para actualizar la definicion de una funcion de membresia en la salida seleccionada

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • outputlist (list) – Lista de variables de salida

  • o (int) – Numero de salida

  • n (int) – Numero de etiqueta

update_rango_input(window, inputlist, i)[fuente]

Funcion para actualizar el universo de discurso de una entrada

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • inputlist (list) – Lista de variables de entrada

  • i (int) – Numero de entrada

update_rango_output(window, outputlist, o)[fuente]

Funcion para actualizar el universo de discurso de una salida

Parámetros
  • window (object) – Objeto que contiene a la ventana principal

  • outputlist (list) – Lista de variables de salida

  • o (int) – Numero de salida