Red de conocimiento informático - Material del sitio web - Cómo usar matlab para convertir la lógica difusa en una tabla de consulta

Cómo usar matlab para convertir la lógica difusa en una tabla de consulta

Paso uno: utilice la caja de herramientas de control difuso de Matlab para diseñar un controlador difuso.

1. Ingrese fuzzy en la ventana de comandos de matlab para generar la siguiente ventana.

2. Determinar la estructura del controlador difuso, es decir, determinar la entrada y salida según el sistema específico.

Aquí podemos elegir la estructura de control bidimensional estándar, es decir, la entrada es el error E y el cambio de error ec, y la salida es la variable de control u. La variable de entrada se implementa mediante Editar. ->Agregar variable->Entrada.

3. Determinación del valor de la lengua y función de pertenencia.

Primero, determine el subconjunto difuso que describe los valores lingüísticos de las variables de entrada y salida, como {NB, NM, NS, ZE, PS, PM, PB}, y establezca el dominio del discurso. de las variables de entrada y salida. Por ejemplo, establecemos el dominio de discusión del error E y el cambio de error EC en [-6 6], y el dominio de discusión de la variable de control U en [-10 10]. Luego seleccione la función de membresía correspondiente para las variables lingüísticas difusas. Abra el editor de funciones de membresía a través de Editar->Función de membresía, luego defina el rango de dominio de las variables de entrada y salida respectivamente, y agregue la función de membresía. Tomando E como ejemplo, el alcance del dominio de discusión se establece en [-6 ^ 6] y el número de funciones de membresía agregadas es 7. (Nota: el editor de funciones de membresía ha definido inicialmente tres funciones de membresía para cada variable, luego haga clic en Editar -->; agregue MF para agregar funciones de membresía, el número se puede seleccionar como 4)

4. La formulación de reglas.

Para nuestra estructura de control bidimensional y los correspondientes conjuntos difusos de entrada, podemos formular 49 reglas de control difuso.

5. Resolver ambigüedades.

La salida del controlador difuso es un conjunto difuso y se puede determinar una cantidad precisa mediante el método de defuzzificación. Hay muchos métodos de defusificación, aquí elegimos el método del centro de gravedad.

6. Guarde el controlador difuso creado.

Archivo->Exportar->Para archivar, el nombre del archivo es fuzzy_control.

Paso 2: Construir el modelo de Simulink.

1. Ingrese simulink en la ventana de comandos de matlab para generar la siguiente ventana.

2. Cree un nuevo modelo de controlador difuso usando el siguiente estilo.

3. Ingrese fuzzy = readfis('fuzzy_control ') en la ventana de comando de matlab, cargue el controlador difuso previamente establecido en el espacio de trabajo y establezca los parámetros del controlador de lógica difusa en difuso.

4. Guarde el modelo y asígnele el nombre fuzzy_model.

Paso 3: Configurar la interfaz de prueba del sistema.

1. Ingrese a la interfaz de prueba del sistema a través de Herramientas->Prueba del sistema->Iniciar prueba del sistema.

2. Agregar un modelo de prueba.

Utilice el mouse para seleccionar la prueba principal, luego inserte ->Elemento de prueba->; seleccione el modelo fuzzy_model establecido en el segundo paso.

3. Definición de variables.

Defina dos vectores de prueba en el elemento del vector de prueba. Los nombres de las variables son entrada1, entrada2, entrada1 = [-6:1:6], entrada 2 =[-6:1:6]; Las variables de prueba se definen en Variables y se generan los nombres de las variables.

4. Mapeo de variables.

Los vectores de prueba input1 y input2 se asignan respectivamente a los puertos de entrada in1 e in2 del controlador difuso como señales de prueba de entrada. Asigne la salida de la variable de prueba al puerto de salida out1 del controlador difuso. La interfaz de configuración es la siguiente:

Asignar el vector de prueba de entrada al puerto de entrada del modelo difuso;

5.

En la interfaz de prueba, haga clic en Guardar resultados y configúrelo de la siguiente manera:

6. Ejecute la prueba, preste atención a la prueba principal (169 iteraciones) (169 iteraciones, sobrecarga informática) y espere el final de la prueba.

Paso 4: Generar tabla de consulta de control difuso.

1. Los resultados de las pruebas del sistema se guardan en resultados st. resultsdataset.output, esta es una matriz de celdas de 169 * 1 celdas.

(Nota: la estructura de la celda es [n*1 doble], lo que significa que el sistema ha sido probado n veces).

2. Ingrese test_data = stresults. resultsdataset.output en la ventana de comandos de matlab y guarde los resultados de la prueba en la variable test_data.

3. Conversión de formato de los resultados de las pruebas.

Debido a que la tabla de consulta bidimensional tiene 13 filas y 13 columnas, los datos requeridos deben ser una matriz doble de 13*13. Sin embargo, debido a que test_data es una matriz de celdas de 169*1, no puede serlo. se utiliza directamente como entrada de datos de la tabla, por lo que primero se debe realizar la conversión de formato.

Ingrese table_data = Cell2Array(test_data, 1, 13, 13) en la ventana de comando de matlab, llame a la función de matriz de celda 2 y tome el primer elemento de fila en cada matriz de celdas, es decir, la primera prueba data y guarde los resultados devueltos en table_data.

El código fuente es el siguiente:

4. Cree un nuevo modelo de tabla de consulta 2D utilizando los siguientes estilos:

5. realice las siguientes configuraciones:

6. Haga clic en el botón Editar para ver la tabla generada.