acoplamiento y desacoplamiento difuso de sistemas regulares
Post on 02-Dec-2015
252 Views
Preview:
DESCRIPTION
TRANSCRIPT
S.E.P. S.E.S. D.G.E.S.T.
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES
“Acoplamiento y Desacoplamiento Difuso de Sistemas Regulares”
T E S I S
Para Obtener el Grado de:
Maestro en Ciencias en Ingeniería Eléctrica
PRESENTA:
“Ing. Jorge Alejandro Delgado Aguiñaga”
Asesores:
Dr. Jorge Luis Orozco Mora
Dra. Elvia Ruiz Beltrán
Aguascalientes, Ags., Julio de 2012.
Oficio de autorización de impresión de la
División de Estudios de Posgrado e Investigación
i
S.E.P. S.E.S. D.G.E.S.T.
INSTITUTO TECNOLÓGICO DE AGUASCALIENTES
“Acoplamiento y Desacoplamiento Difuso de Sistemas Regulares”
T E S I S
Para Obtener el Grado de:
Maestro en Ciencias en Ingeniería Eléctrica
PRESENTA:
“Ing. Jorge Alejandro Delgado Aguiñaga”
Asesores:
Dr. Jorge Luis Orozco Mora
Dra. Elvia Ruiz Beltrán
Aguascalientes, Ags., Julio de 2012.
ii
RESUMEN: En esta tesis se estudian, la interacción de los sistemas multivariables
(múltiples entradas y salidas), como una de sus características más importantes, conocido
como el problema de acoplamiento, estudiado desde los años 60´s y que actualmente está
resuelto en forma general, el caso particular del desacoplamiento regular (mismo número
de entradas que salidas) y que aún no existe solución general para el caso no regular (mayor
número de entradas que salidas), solo algunos casos particulares por la dificultad
matemática que presenta, lo que hace importante su análisis, ya que en este trabajo el
enfoque de estudio del problema de acoplamiento se hace con los conceptos de la lógica
difusa. Con tal enfoque, se propone una solución al problema de acoplamiento para el caso
regular, el cual presenta una ventaja sobre el análisis matemático de las soluciones
existentes, pues la lógica difusa se basa en la utilización del conocimiento experto sobre el
sistema sin conocer el modelo matemático, y así es posible establecer un conjunto adecuado
de reglas heurísticas que consigan un objetivo de control que para esta tesis es el
desacoplamiento. También, se extienden los resultados para modificar el factor de
acoplamiento en forma deseada.
ABSTRACT: In this thesis is studied, the interaction of multivariable systems (multiple
inputs and outputs), as one of its most important features, known as the coupling problem,
studied since the 60s and now is solved in general, the decoupling case law (same number
of inputs than outputs) and there is still no general solution for the case is not regular (more
inputs than outputs), only some particular cases the mathematical difficulty it presents,
making it important their analysis, since in this work study approach to the problem of
coupling is done with the concepts of fuzzy logic. With this approach, we propose a
solution to the problem of coupling to the regular case, which presents an advantage over
the mathematical analysis of existing solutions, since fuzzy logic is based on the use of
expert knowledge about the system without knowing the model mathematician, and so you
can set an appropriate set of heuristic rules that achieve a control objective for this thesis is
the decoupling. Also extend the results to modify the coupling factor desired shape.
iii
Agradecimientos
o A Dios por darme la oportunidad de realizar este proyecto.
o A mis padres Ma. Teresa y Ramiro, porque con sus enseñanzas he aprendido a ser
una persona de bien.
o A muy en especial mi madre Ma. Teresa, ya que siempre se ha esforzado por que yo
sea una persona de bien y siempre me ha apoyado para superarme.
o A mis hermanas, Blanca y Laura por que siempre me han apoyado.
o A toda mi familia, en especial a mis abuelos, J. Guadalupe, Ma. Del Refugio, Juan y
María por sus buenos consejos de vida.
o A todos mis maestros, sobre todo a mi asesor el Dr. Jorge Luis Orozco Mora, por su
paciencia y dedicación, ya que mucho de lo aprendido en este proyecto se lo debo a
él.
o A la Dra. Elvia Ruíz Beltrán por su valiosa colaboración en el desarrollo de esta
investigación.
o A todos mis compañeros, en especial a José Alfredo Jáuregui, Efraín Ramírez, y
Sergio Eduardo Luna, pues ellos me ayudaron siempre en mi aprendizaje diario.
o Al Instituto Tecnológico de Aguascalientes, porque me ha abrió sus puertas para
superarme.
o Al CONACYT, por la beca que me brindo durante este proyecto de maestría.
o A todos ustedes, muchas gracias…
Jorge Alejandro Delgado Aguiñaga
iv
Í N D I C E G E N E R A L
Resumen.
Capítulo 1. Introducción .................................................. ¡Error! Marcador no definido.
1.1 Descripción del problema ....................................................................................... 2
1.2 Objetivos ................................................................................................................. 2
1.2.1 Objetivo general ............................................................................................. 2
1.2.2 Objetivos particulares ..................................................................................... 2
1.3 Hipótesis ................................................................................................................. 3
1.4 Justificación ............................................................................................................ 3
1.5 Estado del arte ........................................................................................................ 4
1.6 Publicaciones obtenidas y sometidas ...................................................................... 7
Capítulo 2. Acoplamiento de sistemas multivariables ...................................................... 9
2.1 Desacoplamiento por retroalimentación de estados. ............................................ 10
2.1.1 Teorema de Falb y Wolovich, sin asignación de modos. ............................. 10
2.1.2 Teorema de Falb y Wolovich, con asignación de modos. ............................ 16
2.2 Factor de acoplamiento. ........................................................................................ 19
2.2.1 Ganancia relativa. ......................................................................................... 21
Capítulo 3. Lógica difusa ................................................................................................ 24
3.1 Conjuntos difusos ................................................................................................. 24
3.1.1 Propiedades de los conjuntos difusos ........................................................... 30
3.1.2 Operaciones entre conjuntos difusos ............................................................ 32
3.2 Principios de la lógica difusa ................................................................................ 34
3.2.1 Reglas de implicación ................................................................................... 36
3.3 Reglas de mapeo funcional ................................................................................... 37
3.3.1 Mapeando una subregión difusa a un modelo local ..................................... 38
3.4 Defuzificación ...................................................................................................... 39
3.4.1 Métodos de defuzificación............................................................................ 40
3.5 Método difuso basado en reglas para aproximación de funciones ....................... 42
3.5.1 El modelo Mamdani ..................................................................................... 40
Capítulo 4. Resultados sobre el desacoplamiento y cambio en el factor de acoplamiento
difuso del sistema de tuberías en paralelo ............................................................................ 44
4.1 Interés y utilización de la lógica difusa para el control ........................................ 44
4.1.1 Interés. .......................................................................................................... 44
4.1.2 Utilización para el control. ........................................................................... 45
4.1.3 La capitalización del saber hacer. ................................................................. 45
4.2 Caso de estudio ..................................................................................................... 46
4.3 Sistema de control difuso tipo Mamdani para el sistema de riego ....................... 51
4.3.1 Conjuntos difusos del CPD del sistema de riego. ......................................... 51
4.3.2 Mecanismo de inferencia del CPD. .............................................................. 54
4.3.3 Método de defuzificación del CPD. ............................................................. 57
4.4 Resultados obtenidos del CPD ............................................................................. 57
4.5 Factor de acoplamiento ......................................................................................... 62
4.5.1 Informe experto para el cambio del factor de acoplamiento. ....................... 62
4.6 Desacoplamiento de un sistema de riego por aspersión mediante un CPD .......... 66
v
Capítulo 5. Conclusiones y trabajo a futuro .................................................................... 68
5.1 Conclusiones ......................................................................................................... 68
5.2 Trabajo a futuro .................................................................................................... 68
Referencias: 69
Anexo 1: “Programa en MATLAB para el desacoplamiento y cambio del factor de
acoplamiento del sistema de tuberías”, 73
vi
ÍNDICE DE FIGURAS
Figura 2.1 Sistema de riego con 3 válvulas. ........................................................................... 9
Figura 2.2 Diagrama de bloques del sistema acoplado .......................................................... 9
Figura 2.3 Diagrama simplificado de un sistema lineal (MIMO) cuadrado desacoplado… 10
Figura 2.4 Diagrama del circuito RC. ................................................................................... 12
Figura 2.5 Representación en espacio de estados del sistema en MATLAB. ...................... 15
Figura 2.6 Entrada u1 al sistema… ....................................................................................... 15
Figura 2.7 Entrada u2 al sistema con una amplitud de 20 V y 1 rad/seg en frecuencia. ....... 16
Figura 2.8 Respuesta del sistema ante u1 y u2. ..................................................................... 16
Figura 2.9 Entrada u1 aplicada al sistema ............................................................................. 18
Figura 2.10 Entrada u2 aplicada al sistema ........................................................................... 18
Figura 2.11 Respuesta del sistema ante las entradas u1 y u2 con asignación de modos en -10
y -15. ............................................................................................................................. 18
Figura 2.12 Sistema multivariable de flujo de fluidos en tuberías en paralelo. ................... 19
Figura 2.13 Representación esquemática del sistema de tuberías en paralelo. .................... 20
Figura 2.14 Esquema de un proceso (MIMO) nxn. .............................................................. 20
Figura 2.15 Interacción de un sistema de 2X2. .................................................................... 21
Figura 3.1 Especificación del conjunto difuso en forma enumerativa en forma discreta. ... 27
Figura 3.2 Representación en forma intencional de un conjunto difuso. ............................. 28
Figura 3.3 Funciones de pertenencia del ejemplo 2. ............................................................ 29
Figura 3.4 Representación alternativa del ejemplo 2. .......................................................... 29
Figura 3.5 Representación alternativa del ejemplo 2. .......................................................... 30
Figura 3.6 Operación intersección de los conjuntos BAJO y MEDIANO de la Figura 3.3
empleando el mínimo. .................................................................................................. 32
Figura 3.7 Operación intersección de los conjuntos BAJO y MEDIANO de la Figura 3.3
empleando el producto.................................................................................................. 33
Figura 3.8 Operación unión de los conjuntos BAJO y MEDIANO de la Figura 3.3
empleando el máximo. .................................................................................................. 33
Figura 3.9 Operación complemento del conjunto BAJO de la Figura 3.3. .......................... 34
Figura 3.10 Operación AND. ............................................................................................... 35
Figura 3.11 Esquema para el mapeo funcional de las reglas, partición cartesiana............... 37
Figura 3.12 Esquema para el mapeo funcional de las reglas, partición difusa. .................... 37
Figura 3.13 Métodos de defuzificación LOM, MOM y SOM. ............................................ 40
Figura 3.14 Defuzificación por el método centroide. ........................................................... 41
Figura 3.15 Defuzificación por el método bisector. ............................................................. 41
Figura 3.16 Sistema difuso tipo Mamdani ........................................................................... 43
Figura 3.17 Variables de salida y defuzificación ................................................................. 43
Figura 4.1 Esquema del sistema de riego de tuberías en paralelo ........................................ 46
Figura 4.2 Circuito eléctrico análogo al sistema de referencia............................................. 47
Figura 4.3 Simulación del sistema de tuberías en paralelo en lazo cerrado con MATLAB 50
Figura 4.4 Sistema difuso tipo Mamdani ............................................................................. 51
Figura 4.5 Universo de discurso y conjuntos difusos para la demanda de gasto del sistema
...................................................................................................................................... 52
Figura 4.6 Universos de discurso y conjuntos difusos para la demanda de presión requerida
por el sistema ................................................................................................................ 53
vii
Figura 4.7 Universos de discurso y conjuntos difusos para la demanda de gasto 1 ............. 53
Figura 4.8 Universos de discurso y conjuntos difusos para la apertura de la válvula 1 ....... 54
Figura 4.9 Gráfica generada por la base de las reglas de CPD, Gasto-Presión…………….55
Figura 4.10 Gráfica generada por la base de las reglas del CPD para el control de la
apertura de las válvulas................................................................................................. 56
Figura 4.11 Entradas variables de referencia para el gasto de las ramas paralelas .............. 57
Figura 4.12 Respuesta del experto ante la entrada de referencia.......................................... 58
Figura 4.13 Error de gasto para la tubería 1 ......................................................................... 58
Figura 4.14 Error de gasto para la tubería 2 ......................................................................... 59
Figura 4.15 Error de gasto para la tubería 3 ......................................................................... 59
Figura 4.16 Resultados del controlador CPD ....................................................................... 60
Figura 4.17 Demanda Gasto-Presión, determinados por el CPD ......................................... 60
Figura 4.18 Respuesta del experto y CPD ante las entradas de referencia ........................... 61
Figura 4.19 Entradas propuestas de referencia para los gastos en cada rama paralela, la cual
muestra un cambio en la entrada de referencia 1.......................................................... 62
Figura 4.20 Respuesta del experto ante los factores de acoplamiento propuestos ............... 63
Figura 4.21 Error de gasto para la tubería 1 ......................................................................... 63
Figura 4.22 Error de gasto para la tubería 2 ......................................................................... 64
Figura 4.23 Error de gasto para la tubería 3 ......................................................................... 64
Figura 4.24 Respuesta del Controlador Proporcional Difuso ante el factor de acoplamiento
...................................................................................................................................... 65
Figura 4.25 Demanda Gasto-Presión del sistema ................................................................. 65
Figura 4.26 Superficie de varios cultivos con diferentes necesidades de agua .................... 66
viii
ÍNDICE DE TABLAS
Tabla 3.1 Correspondencia entre operadores de la Teoría de Conjuntos, el Álgebra Boleana
y la Lógica Tradicional ................................................................................................. 34
Tabla 4.1 Base de las reglas del CPD gasto-presión. ........................................................... 55
Tabla 4.2 Base de las reglas del CPD para la apertura de las válvulas ................................ 56
- - 1
Capítulo 1. Introducción
El comportamiento de un sistema dinámico se encuentra condicionado por las acciones que
se ejerzan sobre él. Esas acciones pueden ser ejercidas como acciones deseadas, a través de
variables manipuladas (válvulas, interruptores, relevadores, potenciómetros, calefactores,
ventiladores, etc.). Los efectos de esas acciones se pueden ver reflejados en una o más
variables del sistema (temperaturas, niveles, presiones, velocidades, concentraciones,
posiciones, entre otras) que bajo ciertas condiciones se desean mantener en un valor
determinado (variables controladas). Cuando en el sistema intervienen más de una variable
de entrada y una variable de salida, se trata de un sistema MIMO (Multiple Input Multiple
Output). En los sistemas MIMO está presente el problema de interacción o acoplamiento
entre las variables, ya que una entrada afecta a más de una salida, lo que hace difícil
controlar al sistema. Esta afectación quiere decir que las variables controladas se alejan de
su valor de referencia en virtud de cambios en las variables de entrada.
En general, para el problema de acoplamiento, el objetivo de la teoría de control es diseñar
estrategias que permitan manipular un conjunto de variables, de manera que se puedan
mantener las variables controladas en valores deseados a pesar de las perturbaciones
(acoplamiento en este caso) que puedan afectar al sistema, el caso en el cual una variable
manipulada afecta una sola variable controlada se le conoce como desacoplamiento.
El problema de desacoplamiento ha sido abordado desde diversos enfoques, pero en esta
tesis solo se profundizará sobre el enfoque lineal y difuso. El desacoplamiento de sistemas
lineales multivariables ha constituido uno de los problemas clásicos en la teoría de control.
De una manera sencilla, el desacoplamiento consiste en modificar un sistema dado, dotado
con un cierto número de variables de entrada y de salida tal que la acción de cada entrada
en lazo cerrado afecte una y sólo una salida, funcionando el sistema como múltiples
sistemas de una entrada una salida, para simplificar el control del sistema. Esta estructura es
deseable en un gran número de aplicaciones donde la interacción entre las variables
controladas y manipuladas hace complicado lograr algún objetivo de control.
- - 2
1.1 Descripción del problema
Se ha definido a un sistema MIMO, así como el problema de acoplamiento que presenta.
Varias soluciones al problema de desacoplamiento ya han sido presentadas para el caso
regular (mismo número de entradas que salidas), basadas en el modelo matemático, [2, 4, 8,
13, 17, 19, 23, 24], y aún sin resolverse está el caso no regular (diferente número de
entradas que salidas), en forma general basadas en el modelo matemático, solo algunas
soluciones particulares, [6, 7, 12]. Todos los enfoques que han abordado el problema de
desacoplamiento están basados en el modelo matemático, lo cual, para un sistema que
involucra gran cantidad de variables obtener el modelo resulta una tarea compleja. Así
mismo, el factor de acoplamiento es la forma en que una entrada afecta a las salidas del
sistema basado en el modelo matemático, y no existe una metodología para modificarlo en
forma preestablecida. Entonces, el problema que se busca resolver en esta tesis se expresa
de la siguiente forma: ¿De qué manera se puede proponer una solución al problema de
desacoplamiento mediante la Lógica Difusa sin contar con el modelo matemático?, así
mismo ¿Cómo se puede modificar el factor de acoplamiento de forma deseada sin el
modelo matemático?
1.2 Objetivos
1.2.1 Objetivo general
Analizar el acoplamiento de un sistema de tuberías en paralelo para un sistema de riego
proponiendo una forma de modificar el factor de acoplamiento, además se analizará bajo
qué condiciones el sistema se puede desacoplar con un controlador difuso.
1.2.2 Objetivos particulares
o Conocer la teoría básica para entender el acoplamiento de sistemas lineales.
o Caracterizar el factor de acoplamiento en el sistema considerado.
o Estudiar el desacoplamiento de sistemas regulares.
o Entender y aplicar la lógica difusa.
o Diseñar un controlador difuso para modificar el grado de acoplamiento del sistema.
- - 3
1.3 Hipótesis
Tomando en cuenta las ventajas de la teoría de la Lógica Difusa, ésta se aplicará al sistema
de tuberías en paralelo, considerado como multivariable acoplado y caso regular, para
lograr el desacoplamiento mediante un Controlador Difuso (CD), que a través del
conocimiento experto del sistema, se formularán un conjunto de reglas difusas para
desacoplarlo, prescindiendo de un modelo matemático.
Una vez propuesta una solución al desacoplamiento, se propondrá la forma de modificar el
factor de acoplamiento del sistema en forma deseada.
1.4 Justificación
El análisis y control de un sistema MIMO es complicado, ya que no es tan sencillo obtener
un modelo matemático preciso del sistema y se vuelve aún más difícil cuando la cantidad
de variables aumenta, además de que está presente el problema de acoplamiento lo cual
hace difícil lograr algún objetivo de control. Por tal razón, la principal ventaja de utilizar la
Lógica Difusa en el control del sistema, es que no es necesario obtener un modelo
matemático, sólo se requiere saber cómo funciona el sistema para conseguir el objetivo de
control que en este caso sería modificar el factor de acoplamiento o lograr el
desacoplamiento. Si es posible conseguir estos objetivos, se puede obtener un conocimiento
experto sobre el funcionamiento del sistema, lo cual permitirá diseñar un conjunto
adecuado de reglas difusas que puedan controlarlo y llevarlo a cumplir con los objetivos.
Es importante resaltar que aún no existe una metodología para modificar el factor de
acoplamiento de manera deseada.
Así mismo, al tratarse de un sistema real, se asume que se está tratando el problema de
desacoplamiento considerando al sistema como variante en el tiempo y no lineal, ya que
para este tipo de sistemas no están contemplados en la solución general dada en [2], pues
está condicionado para Sistemas Lineales Invariantes en el Tiempo. Y es importante
mencionar que de poco sirven las soluciones que restringen en gran medida las condiciones
reales de los sistemas.
- - 4
1.5 Estado del arte
En un sistema MIMO acoplado, las variables de entrada-salida interactúan entre sí hasta
cierto punto, lo que es conocido como el grado de interacción o factor de acoplamiento, el
cual se puede calcular para establecer la magnitud en que una entrada afecta a más de una
salida. Resultados sobre este tema son, [20, 33, 34], siendo el más significativo el propuesto
por Bristol, [34], el cual desarrolla un procedimiento para determinar la respuesta relativa
de cada variable controlada en un proceso, a cada variable manipulada. En método
caracteriza la magnitud y tipo de interacción que debe esperarse y su efecto sobre el
comportamiento del sistema, sin embargo no dice como modificar el grado de interacción a
una forma deseada.
Un caso particular del acoplamiento es cuando una variable de entrada afecta solo una
variable de salida y se le conoce como desacoplamiento, es decir, el factor de interacción
entre las variables se hace nulo. Publicaciones dedicadas al tema de desacoplamiento
abundan en la literatura, por ejemplo, [1-9, 12-14, 15, 17-19, 23, 24], por sólo citar algunas.
El problema de desacoplamiento está totalmente resuelto para el caso especial de sistemas
regulares invariantes en el tiempo, [2, 4, 8, 13, 17, 19, 24], pero no para el caso general de
desacoplamiento no regular, [6, 7, 12, 23], debido a la complejidad de las modificaciones
estructurales que se producen cuando se utiliza retroalimentación no regular.
El primer resultado importante concerniente al desacoplamiento regular mediante
retroalimentación estática de estado lo propuso P. L. Falb et al., [2]. Explicaron su resultado
en términos de la no singularidad de una matriz construida a partir de las matrices del
sistema, y de esta manera dieron las condiciones necesarias y suficientes para que exista
una retroalimentación estática de estado que desacople al sistema. Estos autores también
caracterizaron las clases de retroalimentaciones que desacoplan a un sistema y el número de
polos en lazo cerrado que pueden ser asignados. Sin embargo, las condiciones para
caracterizar estos polos, son difíciles de aplicar y no existe conexión entre estas condiciones
con la estructura del sistema.
- - 5
Morse et al.,[3], dieron otra aportación importante, estos autores generalizaron el problema
de desacoplamiento planteándolo en términos geométricos y obteniendo condiciones para la
solución de dos casos particulares: 𝑟𝑎𝑛𝑘 𝐶=𝑛 y 𝑟𝑎𝑛𝑘 𝐵=𝑘, donde C y B son la matrices de
salida y de entrada respectivamente, k es el número de bloques en la función de
transferencia en lazo cerrado y rank indica el rango de la matriz bajo análisis. Sus
soluciones están dadas en términos de la propiedades de R*, que es el máximo subespacio
de controlabilidad contenido en el Kernel de la matriz C.
Descusse et al., [5], interpretaron el resultado de Falb et al., [2], en términos de la estructura
del sistema, mostrando que la condición de desacoplamiento se reduce a una igualdad entre
la sumatoria de los órdenes de los ceros al infinito del sistema, y la sumatoria de los
órdenes de los ceros al infinito por filas.
Descusse et al., [6], creyeron dar la solución general al problema de desacoplamiento no
regular, pero luego A. N. Herrera et al., [14], demostraron que las condiciones presentadas
no eran suficientes.
Zagalak et al.,[13], propusieron la solución general para el problema de desacoplamiento no
regular utilizando un enfoque polinomial, sin embargo las condiciones que se propusieron
son implícitas y no son directamente comprobables, además dependen de la existencia de
una matriz bipropia que no se dice cómo encontrarla.
A. N. Herrera et al., [12], presentaron la solución general para el caso de desacoplamiento
no regular de sistemas con dos salidas, expresando su resultado en términos de la lista I2 de
Morse, y la información al infinito del sistema.
J.L. Orozco M., [23], propuso la solución de desacoplamiento no regular en el caso
particular de los sistemas decalados, es decir, los sistemas que tienen órdenes esenciales
iguales.
- - 6
El problema de desacoplamiento no regular sigue siendo un problema abierto, debido a que
tiene algunos otros problemas implícitos, como lo es la modificación de la estructura al
infinito, con retroalimentación de estado estática.
Para dar una solución al problema de desacoplamiento, con alguna de las técnicas
mostradas anteriormente, siempre es necesario obtener una representación matemática del
sistema, es decir, se tienen que conocer las ecuaciones dinámicas que aproximen en medida
de lo posible el comportamiento real del sistema. Sin embargo, esta tarea no siempre resulta
fácil para el diseñador, pues cuando en el sistema intervienen una gran cantidad de
variables, obtener una representación será una tarea difícil. Además deben considerarse las
características del sistema, es decir, si el sistema es no lineal o lineal, variante o invariante
en el tiempo.
Es importante mencionar que en los sistemas reales, la gran mayoría, presentan
comportamientos no lineales y también está siempre presente la variación en el tiempo.
Entonces, ante estas dificultades, se dice que las soluciones al problema de
desacoplamiento basadas en sistemas lineales invariantes en el tiempo, no muestran
totalmente una solución al problema de desacoplamiento para los sistemas reales. Por esta
razón, la lógica difusa, presenta una alternativa de solución al problema de
desacoplamiento, ya que esta teoría acerca más la forma de hacer diseño de control con la
forma de pensar humana a pesar de no contar con un modelo matemático y de no saber si el
sistema es no lineal, variante en el tiempo, etc. Así, si en un sistema real, existe un experto
en el manejo del mismo sin tener una representación matemática y además el experto sabe
cómo conseguir un comportamiento desacoplado, entonces, pueden plantearse un conjunto
de reglas heurísticas que logren este objetivo de desacoplamiento.
Hasta ahora, algunos trabajos de desacoplamiento con técnicas difusas ya han sido
presentados. El primer trabajo que abordó el problema de desacoplamiento con técnicas
difusas fue propuesto por Chen Wei Xu et al., [10], presentaron una solución al problema
de desacoplamiento a partir de una descripción de un sistema lineal en tiempo discreto, para
el cual es indispensable un modelado matemático del sistema. Trabajos posteriores,
- - 7
presentan soluciones al problema de desacoplamiento basado en lógica difusa como, [11,
16, 21, 26-29, 32], pero todos estos se basan en el modelado matemático del sistema y
además algunos se apoyan en técnicas del área de inteligencia artificial.
Por lo que en esta tesis se propone una solución al problema de desacoplamiento
prescindiendo del modelo matemático como tal, ya que aquí lo que se utiliza son los
principios básicos de continuidad y de pérdidas de carga para el sistema de referencia, que
son información básica que el experto debe conocer.
1.6 Publicaciones obtenidas y sometidas
Como resultado del trabajo desarrollado en esta tesis, se tiene hasta el momento las
siguientes publicaciones.
J. A. DelgadoA., J. L. Orozco M., E. Ruiz-Beltrán “Regular coupling and
decoupling fuzzy systems”, Poster, en CIIIEE 2010, 10 al 12 de Noviembre,
Aguascalientes, Ags. Mexico.
J. A. Delgado A., J. L. Orozco M., E. Ruiz-Beltrán and J. A. Calderón-Martínez,
“Desacoplamiento mediante un PD difuso aplicado a un sistema de tanques”, en 25
th Reunión de Verano de Potencia y Aplicaciones Industriales (2011). RVP-AI,
Acapulco, Guerrero, México, IEEE, Power Engineering Society and Industry
Aplications Conf., AI-25.
J. A. Delgado A., J. A. Jáuregui A.,E. Ramírez V., S. E. Luna C., J. L. Orozco M.,
“Aplicación del desacoplamiento regular a un circuito eléctrico”, en 13 th Reunión
de Otoño de Potencia, Electrónica y Computación, (2011). ROPEC, Morelia,
Michoacán, México, IEEE.
- - 8
Artículos sometidos a revisión:
J. A. Delgado A., J. L. Orozco M. and E. Ruiz-Beltrán, “Solución al problema de
desacoplamiento mediante un Controlador Proporcional Difuso de un sistema
regular de riego con tuberías en paralelo”, (2012), Revista: Ingeniería,
Investigación y Tecnología UNAM.
J. A. Delgado A., J. L. Orozco M. and E. Ruiz-Beltrán, “Partial decoupling using a
Fuzzy Proportional Controller FPC of a regular system: case parallel pipelines”,
(2012).
- - 9
Capítulo 2. Acoplamiento de sistemas multivariables
Como se ha mencionado, la característica más importante de un sistema MIMO son
acoplamientos o interacciones entre sus variables, es decir, una variable de entrada puede
afectar a todas las variables de salida. Por ejemplo, en un sistema de tuberías en paralelo
está presente el acoplamiento ya que al modificar la apertura de una válvula, los flujos en
cada rama paralela se ven afectados de forma no determinada, pues este tipo de sistemas
cumplen con el principio de continuidad, ver Figura 2.1
Figura 2.1 Sistema de riego con 3 válvulas.
Un sistema acoplado con 2 entradas y 2 salidas, se puede representar con el diagrama de
bloques que se muestra en la Figura 2.2.
Figura 2.2 Diagrama de bloques del sistema acoplado.
- - 10
Cualquier entrada aplicada a un elemento tiene efectos en la salida de varios elementos. El
problema de desacoplamiento es clásico en la teoría del control, éste ha sido resuelto en su
totalidad en términos matemáticos para el caso regular [2, 4, 8, 13, 17, 19, 23, 24] y algunos
casos particulares del caso no regular, [6, 7, 12]. En términos sencillos el desacoplamiento
de un sistema lineal MIMO consiste en hacer que dicho sistema se comporte como muchos
sistemas SISO, ver figura 2.3
Figura 2.3 Diagrama simplificado de un sistema lineal (MIMO) cuadrado desacoplado.
Esto es ideal en sistemas muy grandes puesto que el estudio del mismo se realizaría en
bloques simples de una salida una entrada.
2.1 Desacoplamiento por retroalimentación de estados
2.1.1 Teorema de Falb y Wolovich, sin asignación de modos
Una de las soluciones al problema de desacoplamiento fue introducida en 1967 por Falb y
Wolovich [2] el cual formula una retroalimentación de estado y un cambio en las entradas
que permite alcanzar el desacoplamiento en forma de integradores mediante la siguiente ley
de control, mostrada en la Ec. 2.1:
)()()( tGvtFxtu Ec. 2.1
Considere la siguiente representación del sistema.
)()(
)()()(
tCxty
tButAxtx
Ec. 2.2
- - 11
Donde x es un n vector llamado de estado, u un m vector de entrada, y un m vector de
salida, y A, B y C, son nxn, nxm, y mxn matrices respectivamente. Se asume que m≤n Si F
es una matriz mxn y G una matriz no singular mxm entonces la sustitución de Ec. 2.1 donde
v representa el nuevo m vector de control se conocerá como retroalimentación de estado.
Por simplicidad el sistema descrito en la Ec. 2.2, se citará como (A, B, C).
La metodología para el diseño de la retroalimentación de estado para desacoplar (A, B, C)
es encontrar la ley de control descrita en Ec. 2.1, tal que la matriz de transferencia sea una
diagonal de integradores. En el teorema 1 se establecen las condiciones para obtener el
desacoplamiento del sistema (A, B, C), [2].
Teorema 1.- El problema de desacoplamiento estático por retroalimentación de estado
tiene solución si y sólo si:
a) El par [A, B] es estabilizable
b) El rango [A B;C D] = n + m
Supóngase que las condiciones (a) y (b) en Teorema 1 se cumplen, por tanto el problema
tiene solución. Se parte de la siguiente manera: Si (A, B) es inestable, diséñese un K tal que
el sistema de retroalimentación de estado sea estable, es decir, el determinante de (sI - A +
BK) tenga todas sus raíces en el semiplano izquierdo.
Una vez estabilizado el sistema (A, B, C), diséñese la retroalimentación de estado tal que el
sistema en lazo cerrado tenga una función de transferencia de la forma:
BGBF)AC(sIT 1FG
Ec. 2.3
Tal que TFG está desacoplada. Donde F se construye como:
** 1 ABF Ec. 2.4
Y G como:
1* BG Ec. 2.5
Donde B* es:
- - 12
B
B
B
A
A
A
C
C
C
B
dm
d
d
m
2
1
2
1
Ec. 2.6
Y A* como:
1
12
11
2
1
dm
d
d
m A
A
A
C
C
C
A
Ec. 2.7
Si, det B*≠ 0, el sistema es desacoplable
Con los índices:
0min BACNjd jd
ji Ec. 2.8
Entonces existe un par de matrices F y G las cuales desacoplan el sistema (A, B, C). Y el
nuevo vector de entradas esta dado como
)()()( tFvtKxtu Ec. 2.9
Tal que el sistema sea
)()(
)()()()()(
tCxty
tvBGtxBFAtx
Ec. 2.10
Está desacoplado en integradores, es decir el sistema es críticamente estable.
Ejemplo de desacoplamiento mediante retroalimentación de estados sin asignación de
modos. Considere el siguiente sistema mostrado en la Figura 2.4, [31].
Figura 2.4 Diagrama del circuito RC.
Para ilustrar la metodología mostrada en [2] se utiliza el sistema mostrado en Figura 2.4,
cuya representación en espacio de estado (A, B, C) se muestra a continuación:
- - 13
2
1
2
1
2
1
32
11
2
1
32222
21211
2
1
10
01
10
01
)11
(11
1)
11(
1
x
x
y
y
u
u
RC
RC
x
x
RRCRC
RCRRC
x
x
Las variables de estado son los voltajes en los capacitores C1 y C2, así como las entradas u1
y u2, son los voltajes deseados en los capacitores, y la salida son los voltajes en C1 y C2
Para simplificar los cálculos, se sustituyen los siguientes valores:
R1=R2=R3=100 (Omhs)
C1=C2=0.001 (Faradios)
Sustituyendo los valores en las ecuaciones de estado descritas anteriormente, el sistema (A,
B, C) queda de la siguiente manera:
2
1
2
1
2
1
2
1
2
1
10
01
11
1000
011
100
100
200
11
100
11
100
100
200
x
x
y
y
u
u
x
x
x
x
Para encontrar F y G que desacoplan el sistema se parte de un sistema estable, es decir, el
determinante de (sI - A + BK) tiene todas sus raíces en el semiplano izquierdo, entonces F
será:
1
12
11
2
11
1
1
2
1
dm
d
d
mdm
d
d
m A
A
A
C
C
C
B
BB
A
A
A
C
C
C
F
Ec. 2.11
Entonces, obteniendo los índices di, se calcula B* tal como sigue:
A=nxn= 2X2, 0…n-1=0…2-1=0…1. Los índices a usar son 0 y 1. Ahora la primera fila con
d1=0 de B* es:
11
1000
11
1000
011
100
11
200
11
10011
100
11
200
10
0
- - 14
Como el resultado es distinto de cero, d1 será el siguiente índice a utilizar, entonces la
segunda fila de B* es:
011
100
11
1000
011
100
11
200
11
10011
100
11
200
01
0
Entonces B* es:
11
1000
011
100
*B
Si B* tiene inversa, es decir det B*≠ 0, el sistema es desacoplable, [2]. Como el det B*≠ 0,
entonces el sistema es desacoplable. Ahora para encontrar A*; la primera fila es:
11
100
11
200
11
200
11
10011
100
11
200
01
La segunda fila de A* es:
11
200
11
100
11
200
11
10011
100
11
200
10
Entonces A* es:
11
200
11
10011
100
11
200
*A
Finalmente la retroalimentación de estado es:
21
12
11
200
11
10011
100
11
200
11
1000
011
1001
F
100
110
0100
11
11
1000
011
1001
G
La matriz de transferencia retroalimentada, resulta:
- - 15
0 1 2 3 4 5 6 7 8 9 10-10
-5
0
5
10
15
20u1
Time (sec)
desacoplamiento_space_state/v2 : Group 1
s
s
s
sTFG
10
01
100
110
0100
11
11
1000
011
100
21
12
11
1000
011
100
11
200
11
10011
100
11
200
0
0
10
01
1
Quedando la función de transferencia TFG desacoplada en integradores.
Para ver gráficamente los resultados se desarrollo la simulación en MATLAB eligiéndose
arbitrariamente las entradas sin perder generalidad, las cuales se muestran en Figura 2.5.
Fig. 2.5 Representación en espacio de estados del sistema en MATLAB.
La entrada u1 aplicada al sistema mostrado en la Figura 2.5 es de tipo escalón, la cual se
muestra en Figura 2.6.
Figura 2.6 Entrada u1 al sistema.
- - 16
0 1 2 3 4 5 6 7 8 9 10-20
-15
-10
-5
0
5
10
15
20
25u2
Time (sec)
desacoplamiento_space_state/u2 : Group 1
Y la entrada u2 considerada para el sistema es de forma sinusoidal tal como se muestra en
la Figura. 2.7.
Figura 2.7 Entrada u2 al sistema con una amplitud de 20V y 1 rad/seg en frecuencia.
La salida del sistema representada en la Figura 2.8, muestra un comportamiento
desacoplado del sistema, ya que una entrada solo afecta una salida.
Figura 2.8 Respuesta del sistema ante u1 y u2.
2.1.2 Teorema de Falb y Wolovich, con asignación de modos
La metodología para el diseño de la retroalimentación de estado para desacoplar el sistema
(A, B, C), tal que la matriz de transferencia sea una diagonal
1
11
11)(
nn
nni ssss [14], es decir con estabilidad, asignando los polos en
un lugar deseado, se consigue eligiendo a F como:
- - 17
*** 1 ABF Ec. 2.12
Donde
mmdm
d
d
m C
C
C
A
A
A
C
C
C
A2
1
2
1
1
12
11
1
1
Ec. 2.13
F es:
mmdm
d
d
mdm
d
d
m C
C
C
A
A
A
C
C
C
B
BB
A
A
A
C
C
C
F2
1
2
1
1
12
11
2
11
1
1
2
1
Ec. 2.14
Y G permanece igual, quedando la matriz de transferencia en lazo cerrado como:
)(
10
0)(
1
1
s
s
T
m
FG
Ec. 2.15
Donde el sistema está desacoplado y tiene modos determinados por los polinomios ϕi(s).
Ahora al utilizar la metodología para asignar modos al sistema (A, B, C) la
retroalimentación de estado que asigna modos en -10 y -15 es:
20
71
110
9
1511
200
11
10011
10010
11
200
11
200
11
10011
100
11
200
11
1000
011
1001
F
Teniendo una matriz de transferencia:
15
10
010
1
s
sTFG
- - 18
0 1 2 3 4 5 6 7 8 9 100
2
4
6
8
10
12
14
16
18
20u1
Time (sec)
desacoplamiento_space_state/u1 : Group 1
0 1 2 3 4 5 6 7 8 9 10-20
-15
-10
-5
0
5
10
15
20
25u2
Time (sec)
desacoplamiento_space_state/u2 : Group 1
Aplicando la entrada u1 al sistema retroalimentado (A+BF, BG, C) la cual se describe en la
Figura 2.9.
Figura 2.9 Entrada u1 aplicada al sistema.
Y una entrada u2 mostrada en Figura 2.10.
Figura 2.10 Entrada u2 aplicada al sistema.
Se tiene una respuesta del sistema que se muestra gráficamente en Figura 2.11, donde se
puede apreciar que ante cambios drásticos en u1, la salida y2, no se ve afectada.
Figura 2.11 Respuesta del sistema ante las entradas u1 y u2 con asignación de modos en -10 y -15.
- - 19
Se puede ver en la Figura 2.11 la respuesta del sistema se estabiliza en comparación en la
Figura 2.8, en la cual la salida aumentaba debido al efecto de los integradores puros.
2.2 Factor de acoplamiento
Como se mencionó en el capítulo anterior, en un sistema multivariable acoplado, las
variables de entrada-salida interactúan entre sí hasta cierto punto, lo que es conocido como
el grado de interacción o factor de acoplamiento (véase [20,34]), el cual se puede calcular
para establecer la magnitud en que una entrada afecta a más de una salida, existe un
procedimiento para determinar la respuesta relativa de cada variable controlada en un
proceso, a cada variable manipulada. En método caracteriza la magnitud y tipo de
interacción que debe esperarse y su efecto sobre el comportamiento del sistema. A
continuación se presenta la metodología propuesta en [20], para determinar el grado de
interacción del sistema.
Se propone un caso sencillo de un sistema de tuberías en paralelo para el control de flujos
el cual por su dinámica natural se considera mutivariable acoplado, que se muestra en la
Figura 2.12:
Figura 2.12 Sistema multivariable de flujo de fluidos en tuberías en paralelo.
Primeramente, para el sistema mostrado en Figura 2.12, se analiza el problema de control
en lazo cerrado, véase Figura 2.13.
- - 20
Figura 2.13 Representación esquemática del sistema de tuberías en paralelo.
Como el sistema está acoplado, son necesarias cuatro funciones de transferencia debido a
que existen 2 interacciones, las cuales definen la dinámica del sistema:
)()(
)(
)()(
)(
)()(
)(
)()(
)(
222
2
122
1
211
2
111
1
sGsM
sC
sGsM
sC
sGsM
sC
sGsM
sC
p
p
p
p
Ec. 2.16
Reescribiendo las ecuaciones anteriores se tiene que:
)()()()()(
)()()()()(
2221212
2121111
sMsGsMsGsC
sMsGsMsGsC
pp
pp
Ec. 2.17
O en forma matricial
)()()( sMsGsC p Ec 2.18
En forma general, en la Figura 2.14, se muestra el esquema para un sistema multivariable
de nxn.
Figura 2.14 Esquema de un proceso (MIMO) nxn.
- - 21
Para un problema con n variables podrían plantearse en principio n! interacciones.
Regresando al sistema de 2x2 de la Figura 2.5, la interacción se muestra en la Figura 2.15.
Figura 2.15 Interacción de un sistema de 2X2.
La cual muestra la interconexión de los lazos. Ahora, supongamos que el controlador 2 se
desconecta o se pone de modo que M2(s) = 0. Entonces:
)()(
)(11
1
1 sGsM
sCp Ec. 2.19
Pero en general, se tiene:
222
2112
111
1
1)(
)(
)(
pc
cpp
pGG
GGGsG
sM
sC
Ec. 2.20
El segundo término, es el término de interacción entre los dos lazos. Obsérvese que ambos
lazos no pueden ser ajustados independientemente. Y pueden realizarse las mismas
consideraciones que antes. Un sistema algo más complejo ya incrementa notoriamente el
número de variables a controlar y manipular.
2.2.1 Ganancia relativa
La ganancia relativa es una medida de la influencia que una variable manipulada
seleccionada tiene sobre una variable controlada en particular, con relación a las otras
variables manipuladas que actúan en el sistema. No basta con calcular su ganancia de lazo
abierto con todas las demás variables manipuladas fijas. Si existe interacción en el sistema,
cada variable manipulada influirá sobre más de una de las variables controladas. Entonces
- - 22
la respuesta de una variable controlada en particular a una variable manipulada
seleccionada, dependerá de lo que están haciendo las otras variables manipuladas.
En [20], se sugirió que en primer lugar debe evaluarse la ganancia de cada lazo abierto, con
todos los demás lazos abiertos, es decir, con todas las demás variables manipuladas
constantes y, a continuación, volver a realizar la evaluación con todos los demás lazos
cerrados, es decir, con todas las demás variables controladas constantes. Si una ganancia en
particular de lazo abierto no cambia entre estas dos condiciones, dicho lazo no influye
sobre otros lazos, o bien, éstos no influyen sobre él y, por lo tanto, no interactúa con ellos.
En este caso, su ganancia relativa sería la unidad. Por esta razón, la ganancia relativa de una
variable controlada i a una variable manipulada j se define como:
)cerrado lazo de Ganancia(
)abierto lazo de Ganancia(
cj
i
mj
i
ij
mc
mc
Ec. 2.21
Si ci no responde a mj cuando todas las demás variables manipuladas son constantes, λij es
cero. Si existe alguna interacción, el cambio de mj alterará las otras variables controladas
así como a ci. Entonces, si deben mantenerse constantes, las otras variables manipuladas
tendrán que cambiar durante la segunda evaluación de la ganancia de lazo abierto. El
resultado será una diferencia entre las dos ganancias de lazo abierto, lo que hace que λij no
sea ni 0 ni 1.
La matriz de ganancias relativas se construye como:
nnnn
n
n
n
n
C
C
C
MMM
21
22221
11211
2
1
21
Ec. 2.22
Si se considera el caso más simple de 2X2, las ganancias relativas se proponen enseguida.
2221212
2121111
MKMKC
MKMKC
Ec. 2.23
111
1
2
KM
C
M
Ec. 2.24
- - 23
Para calcular
21
1
CM
C
Ec. 2.25
Como C2=0,
122
212 M
K
KM Ec. 2.26
Entonces
12211
2112111 1 M
KK
KKKC
Ec. 2.27
2211
211211
1
1 1
2
KK
KKK
M
C
C
Ec. 2.28
Por lo tanto
2211
211211
1
1
KK
KK
Ec. 2.29
1122
112112 1
Ec. 2.30
Entonces la matriz de ganancias relativas para un sistema de 2x2 es:
1
1 Ec. 2.31
Donde, se observa que si λ es próximo a 1 la interacción entre C1 y M1 es muy fuerte,
mientras que el segundo lazo no ejerce gran influencia. Si λ es próximo a cero seria lo
contrario. Las mayores interacciones entre los lazos se dan cuando λ = 0.5.
- - 24
Capítulo 3. Lógica difusa
Desde su aparición en la década de los años 60's hasta nuestros días, las aplicaciones de la
Lógica Difusa, se han ido consolidando, paulatinamente al comienzo, y con un desbordado
crecimiento en los últimos cinco años. Se encuentran en soluciones a problemas de control
industrial, en predicción de series de tiempo, como metodologías de archivo y búsqueda de
bases de datos, en estrategias de mantenimiento predictivo y en otros campos más.
Las principales razones para tal proliferación de aplicaciones quizás sean la sencillez
conceptual de los sistemas basados en Lógica Difusa, su facilidad para adaptarse a casos
particulares con pocas variaciones de parámetros, su habilidad para combinar en forma
unificada expresiones lingüísticas con datos numéricos, y el no requerir de algoritmos muy
sofisticados para su implementación.
La lógica difusa es una extensión de la lógica tradicional (Booleana) que utiliza conceptos
de pertenencia de conjuntos más parecidos a la manera de pensar humana. El concepto de
un subconjunto difuso fue introducido por L.A. Zadeh en 1965 como una generalización de
un subconjunto exacto tradicional. Los subconjuntos exactos usan lógica Booleana con
valores exactos como por ejemplo la lógica binaria que usa valores de 1 ó 0 para sus
operaciones.
Lotfi A. Zadeh publicó su trabajó acerca de los conjuntos difusos, el cual propone que los
valores falso o verdadero operen sobre el rango de números reales. Las matemáticas
generadas por estas teorías son consistentes y la lógica difusa puede ser una generalización
de la lógica clásica. La estadística mide la probabilidad que un evento futuro ocurra, cuando
la lógica difusa mide la ambigüedad de eventos que ya han ocurrido.
3.1 Conjuntos difusos
Una estrategia para presentar la teoría de Conjuntos Difusos (véase [22, 35-38]), consiste
en recordar algunos aspectos de la teoría de conjuntos convencionales, y a partir de ahí
hacer una extensión a los conjuntos difusos:
¿Qué es un conjunto?
- - 25
Es una colección de elementos, por ejemplo:
Días _de_ la_ semana = {lunes, martes, miércoles, jueves, viernes, sábado, domingo}.
Números _naturales = {0, 1, 2, 3, 4, 5, 6 ,7 8, 9}.
En la teoría clásica de conjuntos, un elemento puede o no pertenecer a un conjunto.
semanaladeDíasviernes ___
semanaladeDías ___5
naturalesNúmeros _1
naturalesNúmerosSábado _
Lo anterior define un conjunto rígido o duro. Esta clase de conjuntos tienen el problema de
que no pueden lidiar con información parcial, y por lo tanto, la lógica basada en ellos puede
fallar estrepitosamente al enfrentarse a ciertos problemas de la vida real y, peor aún, en
muchas ocasiones ciertas circunstancias de la vida real no pueden representarse con esta
clase de conjuntos.
Por ejemplo, consideremos el siguiente conjunto descrito en forma no enumerativa:
Familias ricas = {ingreso $1Millón anual}. ¿Cómo se clasifica a una familia cuyo
ingreso es $0.999999 de Millón anual? ¿Diferirá su estilo de vida de la que gana apenas
$1.00 más?
En el contexto de la teoría clásica de conjuntos la familia cuyo ingreso es de $0.999999 de
Millón anual no sería rica, sin embargo, este resultado formalmente correcto es
intuitivamente contradictorio.
Estas reflexiones originaron en L. Zadeh una rebeldía en contra de las teorías imperantes en
su época para modelar el mundo real, haciéndole proponer que una nueva matemática debía
surgir. Esto dio lugar a la noción de conjuntos difusos y las teorías y metodologías de
aplicación asociadas a ellos. Se puede desendurecer un conjunto si se considera la vaguedad
difusa que implica la declaración del mismo. Por ejemplo:
C1 = {parejas casadas}
Una persona puede ser o no casada, por lo tanto este es un conjunto duro. En lo sucesivo,
llamado solamente conjunto. Ahora, considérese el siguiente conjunto:
C1f = {parejas felizmente casadas}
- - 26
El calificador felizmente, introduce un elemento subjetivo, por lo tanto los límites o
fronteras del conjunto no están plenamente definidas, se vuelve entonces, un conjunto
difuso. Veamos ahora otro par de conjuntos:
C2 = {todos los gatos}
C2f = {todos los gatos bonitos}
Ahora la palabra bonitos es la que introduce el grado de aspecto indefinido en el conjunto
C2f. Cuando se trata de saber si un gato es bonito o si una pareja está felizmente casada, los
conceptos que validan la pertenencia o no a los respectivos conjuntos han de evaluarse en
términos no duros, es decir, no se puede decir solamente que un gato sea totalmente bonito,
ya que también puede ser regularmente bonito o medio bonito.
Para el caso de una pareja cualquiera, pertenecerá también en un grado variable al conjunto
de las parejas felizmente casadas; inclusive esta noción dependerá de si se le pregunta al
marido o a la esposa… posibles respuestas involucran:
Soy casi felizmente casado(a)
Soy muy felizmente casado(a)
¿Se pueden representar numéricamente estas respuestas?, ¿cómo se describen conjuntos de
esta naturaleza? Un conjunto difuso se representa por medio de un conjunto de pares que
indican el grado de pertenencia de un elemento a dicho conjunto y el elemento mismo. En
general un conjunto difuso se representa de la siguiente manera:
Ec. 3.1
En donde
Es el grado de membrecía del i-ésimo elemento xi al conjunto Cf. El par μCf(xi)/xi
Se conoce como singleton. “/” es un marcador, no el símbolo de división.
En forma breve, el conjunto de pares ordenados de la Ec. 3.1, se representa como:
Ec. 3.2
}/)(
/)( /)( /)( /)( { Cf
11Cf
33Cf22Cf11Cf00Cf
NN xx
xxxxxxxx
)(Cf ix
Xx
iiAi
xx /)(A
- - 27
La expresión Cf es la especificación del conjunto difuso en forma enumerativa o
extensional y se puede graficar en un par de ejes coordenados (xi,mCf(xi)) en forma
discreta.
Figura 3.1 Especificación del conjunto difuso en forma enumerativa en forma discreta.
Otra forma de representar un conjunto difuso es la intencional, en la cual se describe el
conjunto en función de las propiedades comunes a los elementos que lo componen.
Ejemplo:
C1f = {parejas felizmente casadas}
Cuando un conjunto difuso se describe en la forma intencional, dicha representación
conlleva en la mayoría de los casos un continuo en los valores de los elementos xi del
conjunto difuso, por lo que se habla de una función de membrecía o pertenencia continua:
Ec. 3.3
En este caso, es importante que la función pueda ser derivable para que sea
matemáticamente tratable una o hasta dos veces, lo que implica la existencia de:
Ec. 3.4
X
A xx /)(A
21
A
pA
pA
pA
dp
d
N
- - 28
Que además es fundamental para la aplicación de los métodos de optimización implícitos
en las versiones de sistemas difusos que cuentan con aprendizaje. Así, la forma intencional
se representa gráficamente como:
Figura 3.2 Representación en forma intencional de un conjunto difuso.
¿Qué sentido puede tener el pertenecer parcialmente a un conjunto? En muchos casos
puede tener más sentido que pertenecer totalmente a un conjunto; veamos algunos
ejemplos:
Ejemplo 1: Supóngase que se desea definir el conjunto de los estudiantes de la carrera de
Ingeniería Eléctrica del Tecnológico de Aguascalientes que están cursando el quinto
semestre de la carrera. ¿Cómo clasificar a un estudiante que cursa dos materias de cuarto
semestre, tres de quinto y una de sexto? y ¿a otro que toma una materia de quinto semestre,
y cinco de sexto? Evidentemente ambos son en parte miembros del conjunto Estudiantes de
quinto semestre, pero sólo lo son parcialmente.
Ejemplo 2: Supóngase que se desea clasificar a los miembros de un equipo de fútbol según
su estatura en tres conjuntos, Bajos, Medianos y Altos. Podría plantearse que se es Bajo si
se tiene una estatura inferior a, por ejemplo, 160 cm, que se es Mediano si la estatura es
superior o igual a 160 cm e inferior a 180 cm, y se es alto si la estatura es superior o igual a
180 cm, con lo que se lograría una clasificación en conjuntos concretos.
- - 29
Sin embargo, ¿qué tan grande es la diferencia que existe entre dos jugadores del equipo,
uno con estatura de 179.9 cm y otro de 180.0 cm? Ese milímetro de diferencia quizás no
represente en la práctica algo significativo, y sin embargo los dos jugadores han quedado
rotulados con etiquetas distintas: uno es Mediano y el otro es Alto. Si se optase por efectuar
la misma clasificación con conjuntos difusos estos cambios abruptos se evitarían, debidos a
que las fronteras entre los conjuntos permitirían cambios graduales en la clasificación.
Como se muestra en la siguiente Figura.
Figura 3.3 Funciones de pertenencia del ejemplo 2.
La Figura 3.3 muestra cómo podría hacerse tal clasificación: El universo de discurso sería
el conjunto continuo de todas las posibles estaturas (el intervalo [130cm, 210cm] por
ejemplo). Las funciones de pertenencia de cada uno de los tres conjuntos Bajo, Mediano y
Alto se han graficado. La forma de estas funciones de pertenencia no debe ser
necesariamente la de la Figura 3.3, pues depende de lo que se entienda por "Bajo",
"Mediano" y "Alto". Las Figuras 3.4 y 3.5 muestran otras alternativas para definir dichas
funciones.
Figura 3.4 Representación alternativa del ejemplo 2.
- - 30
Figura 3.5 Representación alternativa del ejemplo 2.
3.1.1 Propiedades de los conjuntos difusos
Al igual que los conjuntos convencionales, los conjuntos difusos poseen una serie de
propiedades, [22]:
1. Cardinalidad (Card(A)).
2. Altura (Heigth(A)). Normal y Subnormal.
3. Soporte. Spt(A) = {x en U | mA(x) > 0}
4. Corte de nivel alfa (a-cut).
Aa0 = {x en U | mA(x) >= a0}
5. Resolución identidad.
6. Convexidad.
A continuación se definen cada una de las propiedades.
1. Cardinalidad:
Ec. 3.5
Útil para contestar preguntas como ¿cuántas grandes universidades hay en México?, lo cual
encuentra aplicaciones importantes en bases de datos difusas y sistemas de información.
2. Altura:
Ec. 3.6
La mayor membrecía presente en el conjunto difuso. Un conjunto se llama normal si su
altura es 1, y subnormal si su altura es menor que uno. Un conjunto subnormal es el de: el
conjunto de las personas perfectas.
)()( ix
A xACardi
)(max)( iAx
xAHeighti
- - 31
3. Soporte:
0)(__)( xmUenxASpt A Ec. 3.7
El soporte de A, Es el conjunto de elementos cuyo grado de membrecía en A es mayor que
cero. El soporte de un conjunto difuso es un conjunto clásico (o “duro”, es o no es parte del
soporte).
4. Corte-alfa a-cut:
00 )(__ axmUenxA Aa Ec. 3.8
También llamado nivel alfa; a se define en el rango {0,1}.
5. Resolución identidad:
Se basa en el concepto de corte-alfa; un conjunto difuso puede descomponerse en múltiples
conjunto duros usando diferentes valores de a. Intuitivamente, cada corte-alfa especifica
una porción de las funciones de membrecía; por lo tanto, es razonable suponer que la
función de membrecía puede reconstruirse apilando las porciones una sobre otra. Esta
propiedad establece que:
annaa xAaxAaxAaA 1100 Ec. 3.9
En donde aixAai representa un conjunto difuso como el siguiente:
Ec. 3.10
La función de membrecía original puede verse como la unión de todos los conjuntos
construidos a partir de una lista ordenada de cortes-alfa. El operado max (ver más adelante,
operaciones entre conjuntos difusos) se aplica a los varios cortes-alfa para reconstruir A.
6. Convexidad:
Un conjunto difuso es convexo si su función de membrecía no tiene un valle. Formalmente:
Sea U un universo de discurso de la variable x. Sea A un subconjunto de U. El conjunto A
es convexo si y sólo si:
Ec. 3.11
caso otrocualquier En 0
)( si iAi xxA
ii
10y , todopara
)}(),(min{))1((
Uba
baba AAA
- - 32
Establece que el valor de membrecía de cualquier elemento en el intervalo [A, B] debe ser
mayor que el valor de membrecía de cualquiera de sus extremos. Como ocurre con los
conjuntos tradicionales, los conjuntos difusos soportan una serie de operaciones entre ellos.
3.1.2 Operaciones entre conjuntos difusos
Las tres operaciones básicas entre conjuntos concretos, Unión, Intersección y
Complemento, se definen también para los conjuntos difusos, intentando mantener el
significado de tales operaciones. La definición de estas operaciones se hace empleando el
concepto de función de pertenencia de los conjuntos.
Intersección: el resultado de efectuar la operación de Intersección entre dos conjuntos
difusos A y B definidos sobre el mismo Universo, y con funciones de pertenencia uA(x) y
uB(x) respectivamente es un nuevo conjunto difuso A∩B definido sobre el mismo universo,
y con función de pertenencia uA∩B(x), dada por:
)()()( xuxuxu BABA Ec. 3.12
En donde el operador (*) debe satisfacer las siguientes propiedades:
xx
wyzxentonceswzyyxsi
zyxzyx
xyyx
1(*)
(*)(*)_____
)(*)(*)()(*)(*)
(*)(*)
Todo operador que satisfaga las propiedades anteriores se conoce como una T-Norma, y
representa la Intersección de dos conjuntos difusos. Dos de los operadores más sencillos
son el mínimo y el producto clásico (se denotarán por min y * respectivamente). Las figuras
3.6 y 3.7 muestran la intersección de los conjuntos Bajo y Mediano de la Figura 3.3, cuando
se emplean los operadores mínimo y producto.
Figura 3.6 Operación intersección de los conjuntos BAJO y MEDIANO de la Figura 3.3 empleando el
mínimo.
- - 33
Figura 3.7 Operación intersección de los conjuntos BAJO y MEDIANO de la Figura 3.3 empleando el
producto.
Unión: el resultado de efectuar la operación de Unión entre dos conjuntos difusos A y B
definidos sobre el mismo Universo, y con funciones de pertenencia uA(x) y uB(x)
respectivamente es un nuevo conjunto difuso AUB definido sobre el mismo universo, y con
función de pertenencia uAUB(x), dada por:
)()()( xuxuxu BABA Ec. 3.13
En donde el operador (+) debe satisfacer las siguientes propiedades:
xx
wyzxentonceswzyyxsi
zyxzyx
xyyx
0)(
)()(_____
))()(())()((
)()(
Todo operador que satisfaga las propiedades anteriores se conoce como una S-Norma, y
representa la Unión de dos conjuntos difusos. Uno de los operadores más sencillo es el
máximo (en adelante se denotará por max). La Figura 3.8 muestra la unión de los conjuntos
Bajo y Mediano de la Figura 3.3, cuando se emplea el operador máximo.
Figura 3.8 Operación unión de los conjuntos BAJO y MEDIANO de la Figura 3.3 empleando el
máximo.
- - 34
Complemento: el resultado de efectuar la operación de Complemento sobre un conjunto
difuso A definido sobre un Universo, y con función de pertenencia uA(x) es un nuevo
conjunto difuso A' definido sobre el mismo universo, y con función de pertenencia uA'(x),
dada por:
)(1)´( xuxsA A Ec. 3.14
La Figura 3.9 muestra el complemento del conjunto Bajo de la figura 3.3.
Figura 3.9 Operación complemento del conjunto BAJO de la Figura 3.3.
Otras operaciones como las relaciones entre conjuntos difusos, la composición de
relaciones y el principio de extensión no se incluyen en este capítulo.
3.2 Principios de la lógica difusa
Es bien conocido que la teoría de conjuntos, el álgebra booleana y la lógica tradicional son
isomorfas, bajo transformaciones adecuadas. Esto significa que tienen una estructura
subyacente similar, y que por tanto las definiciones que se hagan en una cualquiera de las
tres teorías se puede llevar a las otras dos, mediante transformaciones adecuadas. La Tabla
3.1 muestra la correspondencia de algunos operadores.
Tabla 3.1 Correspondencia entre operadores de la Teoría de Conjuntos, el Álgebra Booleana y la
Lógica Tradicional.
Teoría de conjuntos Álgebra booleana Lógica tradicional
Intersección Conjunción AND
Unión Disyunción OR
Complemento Negación NOT
- - 35
Ahora bien, el razonamiento lógico consiste en la combinación de proposiciones para
producir nuevas proposiciones; así, la combinación de las proposiciones "X es A" y "Y es
B" mediante el operador AND da como resultado la proposición "X es A AND Y es B". La
tabla 3.1 sugiere que puede representarse esta combinación mediante un operador análogo a
la Intersección de Conjuntos.
Lo anterior es posible porque en la lógica tradicional toda proposición puede tener uno de
dos valores: verdadero o falso, lo que corresponde en la teoría de conjuntos duros a los
únicos dos valores que puede tomar la función de pertenencia para cualquier conjunto: 1 ó
0.
Ahora bien, en lógica difusa una proposición puede representarse por un conjunto difuso:
"X es A" corresponde a un conjunto A con función de pertenencia uA(x), mientras que "Y es
B" corresponde a un conjunto B con función de pertenencia uB(y), y la combinación de estas
dos proposiciones con el operador AND, es decir la proposición "X es A AND Y es B"
corresponde a un nuevo conjunto difuso Aand B con función de pertenencia
))(),(min(),( yuxuyxu BAAandB Ec. 3.15
En donde se ha utilizado el operador min para efectuar la intersección de los dos conjuntos,
pero en general podría haberse utilizado cualquier T-Norma. Nótese que los universos de
discurso sobre los cuales están definidos los conjuntos A y B no son necesariamente el
mismo, son, por ejemplo U y V respectivamente, mientras que el conjunto AandB está
definido sobre el universo U y V, ver Figura 3.10.
Figura 3.10 Operación AND.
- - 36
En forma análoga, al operador lógico OR puede hacerse corresponder a una S-Norma,
mientras que al operador lógico NOT puede hacerse corresponder al complemento.
3.2.1 Reglas de implicación
Las reglas de implicación se utilizan para obtener conclusiones en base al conocimiento
expresado como reglas y hechos; cuentan con la parte antecedente y consecuente. En
general, se expresan de la siguiente manera:
Regla: Si una persona tiene IQ alto, entonces la persona es listo.
Hecho: Jack tiene IQ alto
Inferencia: Jack es listo.
Modus-Ponens: Inferencia en sentido directo. Se tiene información del antecedente y se
infiere sobre el consecuente. Caso de arriba.
Modus-Tollens: Inferencia en sentido inverso. Se tiene información del consecuente y se
infiere sobre el antecedente. Ej.: “Jack no es listo” es un hecho relacionado con el
consecuente, y se infiere en base a la regla y el antecedente es “El IQ de Jack no es alto”.
En la lógica clásica, dada una regla, el hecho debe coincidir totalmente con la parte
antecedente o consecuente de la regla. En este caso, si el IQ de Jack es medianamente alto
no se puede inferir si Jack es listo o no. La implicación difusa permite que una regla se
cumpla parcialmente, membrecía parcial. Tampoco puede la lógica clásica resolver cuando
existe incertidumbre en el hecho (qué tan seguro es el hecho). Zadeh realizó una extensión
a la lógica clásica para manejar el razonamiento de sentido común bajo cumplimiento
parcial de la regla, razonar acerca del grado de certidumbre de una declaración.
Dado:
El IQ de Jack es alto Jack es inteligente
El IQ de Jack es un poco alto Jack es un poco inteligente.
- - 37
3.3 Reglas de mapeo funcional
El primer concepto alrededor del mapeo funcional que se verá es el de partición. La Figura
3.11 es una partición cartesiana; donde el espacio que relaciona dos variables se parte con
fronteras duras.
Figura 3.11 Esquema para el mapeo funcional de las reglas, partición cartesiana.
En contraparte, una partición difusa mostrada en Figura 3.12, genera fronteras que crecen y
caen suavemente en función de los conjuntos difusos que componen las variables que se
relacionan con la regla.
Figura 3.12 Esquema para el mapeo funcional de la reglas, partición difusa.
- - 38
Aquí se relacionan las variables distancia entre TV y observador (d) y brillo de la
habitación (b). La distancia a la TV tiene 3 conjuntos difusos: Cerca, medio, lejos. Y el
brillo de la habitación tiene 2 conjuntos difusos: Brillante, Obscuro. Se generan 6
subregiones difusas. Cada subregión difusa se describe por una declaración (que
posteriormente sería una regla).
d es MEDIO Y b es OBSCURO
d es LEJOS Y b es OBSCURO
En general, se da una aproximación combinacional.
Una partición difusa de un espacio es una colección de subregiones difusas cuyos límites se
traslapan. Una partición difusa de un espacio S es una colección de subregiones Ai que
satisface la condición:
Ec. 3.16
Para cada elemento del espacio, su grado de membrecía a todas las subregiones siempre
suma 1. La expresión anterior es equivalente a:
Ec. 3.17
Una condición relajada de la partición difusa reemplaza la suma a 1 por la condición de que
la suma en todas las subregiones sea mayor que cero pero menor que uno, y se llama una
partición difusa débil. Lo anterior se expresa matemáticamente como:
Ec. 3.18
3.3.1 Mapeando una subregión difusa a un modelo local.
Un modelo local para una subregión del espacio de entrada describe una relación de mapeo
de entrada-salida en la pequeña subregión. Un modelo global describe una relación de
entrada-salida para todo el espacio. Es más fácil ajustar los modelos locales que el global.
Por lo tanto, se aconsejan dos pasos para expresar la relación entrada-salida o mapeo:
i
A Sxxi
1)(
SAii
i
A Sxxi
1)(0
- - 39
1.- Particionar
2.- Mapear localmente.
Generalmente, el mapeo de una subregión difusa a un modelo local es a través de una regla
difusa SI-ENTONCES de la forma:
)(xLMy ENTONCES FS xSI iiiii Ec. 3.19
En donde:
xi, yj, son los vectores de variables de entrada y salida respectivamente,
FSi, LMi son la subregión y el modelo local respectivo.
Las reglas que asocian la misma subregión difusa a dos modelos locales diferentes no son
válidas son contradictorias. Ejemplo:
SI x es pequeño ENTONCES y es largo.
SI x es pequeño ENTONCES y es pequeño.
El modelo local asociado a una subregión difusa puede ser una de cuatro formas:
1.- Constante dura. SI x es pequeño ENTONCES y = 4.5
2.- Constante difusa: SI x es pequeño ENTONCES y es mediana
3.- Modelo Lineal: SI x1 es pequeño Y x2 es largo ENTONCES y=2x1+5x2+3
4.- Modelo No Lineal: Teóricamente se puede realizar, pero en la práctica raramente es
necesario.
3.4 Defuzificación
Una distribución de posibilidad puede interpretarse mediante una aproximación lingüística,
o mediante la desfuzificación. La primera da una interpretación cualitativa, mientras que la
segunda es un resumen cuantitativo y es más usada en aplicaciones de control.
- - 40
3.4.1 Métodos de desfuzificación
La desfuzificación aplica a una distribución de posibilidad y sirve, entonces, para obtener
una interpretación cuantitativa de dicha distribución. No existe una manera única de pasar
de desfuzificar una distribución de posibilidad, sino varias. Se enlistan a continuación.
MOM (Mean of maximum). Calcula el valor promedio de aquellos valores de salida que
tienen los máximos grados de posibilidad. Ejemplo: Supóngase que “y es A” es una
conclusión difusa que desea desfuzificarse; para eso, puede usarse la fórmula:
Ec. 3.20
En donde P es el conjunto de valores de y que tiene el mayor grado de posibilidad en A, es
decir:
Ec.3.21
Una desventaja de este método es que no toma en cuenta la forma global de la distribución
de posibilidad. Dos P con diferente forma pero iguales valores pico pueden desfuzificarse a
la misma cantidad, lo cual es anti-intuitivo. La Figura 3.13 muestra el método MOM
(Medium of maximum), junto con sus derivados SOM (Smallest of maximum) y LOM
(Largest of maximum).
Figura 3.13 Métodos de defuzificación LOM, MOM y SOM.
P
y
AMOMPy
*
*
)(
y
AA yyyP )( sup*)(*
- - 41
COA (Center of Area). Conocido también como Centro de gravedad o Centroide.
Considera la forma de la P a desfuzificar. Se calcula de forma similar al centro de
gravedad en la física. Si P es discreta, la siguiente fórmula aplica:
Ec. 3.22
Figura 3.14 Defuzificación por el método centroide.
La principal desventaja de este método es su alto costo computacional, aunque es la que
más se usa en la práctica.
Bisector. Parte la P en dos regiones de igual área. En ocasiones puede coincidir con el
método del centroide. Ejemplo:
Figura 3.15 Defuzificación por el método bisector.
xA
xA
x
xx
ACOA)(
)(
)(
- - 42
Método de altura (Height). Se realiza en dos pasos:
1.- Se calcula el centro de gravedad (ci) de la P del consecuente (Ci) y,
2.- Se asigna como un valor duro a la salida y (y=ci).
Entonces se aplica desfuzificación por centroide a las reglas con consecuentes duros, con la
ecuación:
Ec. 3.23
En donde wi es el grado en que la i-ésima regla es disparada con el dato de entrada. Los
valores de ci pueden calcularse durante la fase de diseño, por lo que en tiempo de ejecución
sólo se requiere el cálculo de productos acumulados y divisiones, que es mucho más rápido
que el método del centroide.
3.5 Modelo difuso basado en reglas para aproximación de funciones
3.5.1 El modelo de Mamdani
Este modelo utiliza reglas para hacer el mapeo U1xU2x…xUr W, de mediante reglas:
Ri: SI x1 es Ai1 y x2 es Ai2 y … y xr es Air ENTONCES y es Ci
En donde xj, j = 1,2,…,r son las variables de entrada
y es la variable de salida
Aij y Ci son los conjuntos difusos de las entradas y la salida
Dadas las entradas de la forma
x1 es A’1 , x2 es A’2 … xr es A’r
donde A’1, A’2, … A’r, son subconjuntos difusos de U1, U2, … Ur (lo cual implica que son
números difusos), la contribución de la i-ésima regla Ri a la salida y del modelo de
M
ii
M
iii wcwy
11
- - 43
mamdani es un conjutno difuso cuya función de membrecía es calculada mediante, la
siguiente ecuación:
Ec. 3.24
En donde ai es el grado de cumplimiento (o fuerza de disparo) de la regla Ri, y aij es el
grado de cumplimiento entre xj y Ri respecto a la condición xj.
Ec. 3.25
La salida del modelo es la agregación de las salidas de todas las reglas utilizando el
operador “max”:
Ec. 3.26
Esta salida, que es un conjunto difuso debe aún ser desfuzificada para encontrar el valor
numérico inferido por el sistema. En la Figura 3.16 se muestra el proceso de un sistema
difuso
Figura 3.16 Sistema difuso tipo Mamdani.
En una primera etapa, las variables duras son fuzificadas, esto es, se determina el valor de
membrecía (grado de cumplimiento) de la entrada en cada uno de los subespacios difusos.
La fuerza de disparo de la regla depende de estos valores (operación min). En base a las
reglas de inferencia, se crea un conjunto difuso en cada regla. Las reglas de inferencia
deben agregarse para formar un único conjunto de salida, mostrada en la Figura 3.17
Figura 3.17 Variables de salida y defuzificación.
El objetivo es obtener un número duro mediante desfuzificación.
min""operador el como con )),()((sup ' jAjAx
ij xxijj
j
)(,),(),(max)( ''' 21yyyy
LCCCC
)()()( 21' yyii CiniiC
- - 44
Capítulo 4. Resultados sobre desacoplamiento y
cambio en el factor de acoplamiento difuso del
sistema de tuberías en paralelo.
En este capítulo se presentan los resultados obtenidos sobre el desacoplamiento difuso del
sistema de tuberías en paralelo para un sistema de riego agrícola basado en el error entre la
información del gasto deseado y el real. Así mismo, se extiende el resultado del
desacoplamiento a la modificación del factor de acoplamiento en el mismo sistema de
tuberías.
4.1 Interés y utilización de la lógica difusa para el control
4.1.1 Interés
El ser humano resuelve a menudo problemas complejos con la ayuda de datos
aproximados: la precisión de los datos es a menudo inútil; por ejemplo para escoger un
apartamento se podrá tener en cuenta la superficie, la proximidad de los comercios, la
distancia del lugar de trabajo, el alquiler, sin tener necesidad de un valor muy preciso de
cada uno de estos datos. Los conocimientos que el ser humano tiene de una situación
cualquiera es generalmente imperfecta, ello puede ser incierto (duda de su validez), o
impreciso (él tiene dificultad para expresarse claramente).
En la industria donde los técnicos y los operadores resuelven a menudo los problemas
complejos de manera relativamente simple y sin tener necesidad de retocar el sistema. De la
misma manera se sabe que un modelo matemático no es necesario para conducir un
vehículo a pesar de ser un sistema muy complejo, por todas las variables que interactuan.
Cuando la complejidad de un sistema aumenta, hacer afirmaciones precisas sobre su
comportamiento resulta difícil. Antes de conformar el sistema, es a menudo interesante
amoldar el comportamiento de un operador humano cara al sistema, antes de los valores
numéricos precisos, el funcionamiento debe estar descrito por unos calificativos globales
traduciendo el estado aproximado de las variables.
- - 45
4.1.2 Utilización para el control
La lógica difusa es bien conocida en la automatización para aplicaciones en el control de
procesos, conocida como control difuso. El controlador difuso se inserta al sistema y
calcula la ley de control a aplicar al proceso en base a un conjunto de reglas difusas, que
permiten lo siguiente:
o tener en cuenta un conocimiento lingüístico existente de naturaleza cualitativa,
o tener en cuenta las variables que difícilmente se integran en el sistema,
o mejorar el funcionamiento de controladores clásicos, para: control fuera de línea o
en línea de las ganancias de estos controladores, modificación de su salida en
función de sucesos que no pueden ser tenidos en cuenta por una técnica clásica.
4.1.3 La capitalización del saber hacer
Para considerar la utilización de las reglas difusas, se hace necesario que exista un
conocimiento lingüístico, un saber hacer humano. Las bases de las reglas difusas no
aportan solución cuando nadie sabe cómo funciona el sistema o no puede controlarlo
manualmente. Cuando este saber-hacer existe y es transcriptible bajo forma de reglas
difusas, se permite emplear la lógica difusa y el funcionamiento es fácilmente
comprensible para el usuario. Entonces en la colección del conocimiento lingüístico experto
sobre el sistema, el olvido inconsciente de informaciones, la dificultad de explicar, el temor
de divulgar su saber son obstáculos, a menudo, encontrados. Esta etapa debe, entonces,
estar preparada y manejada con cuidado, particularmente en el terreno humano.
En el caso donde un conocimiento lingüístico humano existe, la utilización de las reglas
difusas está considerada, con mayor razón cuando las imperfecciones afecten el
conocimiento del sistema, cuando es muy complejo y su ajuste es difícil o cuando el modo
de abordar pasa por una visión global de ciertos aspectos. Las reglas difusas no sustituyen a
los métodos clásicos de la automatización pero los complementan.
Para aplicar la teoría de control difuso, ver [22], al problema de desacoplamiento es
necesario que exista conocimiento experto sobre el funcionamiento del sistema. En general
si no existe este conocimiento la lógica difusa no puede aportar una solución. Cuando el
- - 46
conocimiento experto existe y es transcriptible en reglas difusas, se permite emplear la
lógica difusa prescindiendo de un modelo matemático del sistema. Cabe mencionar que el
problema de desacoplamiento, como se mostró en el capítulo 1, en todos los casos está
basado en un modelo matemático y la metodología que se utiliza para la solución al
problema de desacoplamiento resulta compleja y en el caso no regular no se ha encontrado
una solución general. Por lo tanto, aplicar la lógica difusa al problema de desacoplamiento
es considerada como una alternativa viable. En este trabajo se considera como caso de
estudio un sistema de riego en paralelo el cual se describe en la siguiente sección.
4.2 Caso de estudio
El sistema de riego en paralelo a considerar, es un sistema MIMO cuadrado, consta de una
tubería principal de la cual se desprenden 3 tuberías secundarias en forma paralela a la
tubería principal, y cada una de estas tuberías secundarias constan de una válvula
proporcional de comportamiento lineal, la cual regula el flujo de agua, ver Figura 4.1.
Figura 4.1 Esquema del sistema de riego de tuberías en paralelo.
El sistema de la Figura 4.1 se aproxima a los sistemas de riego por aspersión y distribución
ampliamente utilizados a nivel agrícola. En este tipo de sistemas de riego la distribución de
agua cumple con el principio básico de continuidad, ver [25], que se representa en la Ec.
4.1.
n
iiT QQ
1 Ec. 4.1
- - 47
Donde:
QT=Caudal total
Qi=Caudal a través de la i-ésima rama paralela
i= 1,2, …, n, número de ramas en paralelo.
Así mismo, las pérdidas de carga total son igual a la pérdida de carga en cada una de las
tuberías del sistema, lo cual se representa en la Ec. 4.2, ver [25].
n ..., 2, 1,i para mifiiT hhhh Ec. 4.2
Donde:
i= Es la i-ésima rama paralela
hji= Pérdidas por fricción en el tramo j de la rama i
hmi= Pérdidas menores en el accesorio m de la rama i
Para entender mejor el sistema de referencia y poderlo simular en MATLAB se estableció
una analogía de este sistema a través de un circuito eléctrico, donde la corriente del circuito
se comporta como el flujo de la tubería, y las válvulas proporcionales lineales, son
potenciómetros lineales. Entonces el circuito que representa el sistema hidráulico se
muestra en Figura 4.2.
Figura 4.2 Circuito eléctrico análogo al sistema de referencia.
- - 48
El comportamiento del sistema real se representa por el circuito eléctrico mostrado en la
Figura 4.2, pues la división de corrientes en circuitos eléctricos se comporta de forma
similar a la ecuación de continuidad, Ec. 4.1 y la división de voltajes a las pérdidas de
carga, Ec. 4.2. Para establecer la analogía del sistema de tuberías y el circuito eléctrico se
considera que las ecuaciones de equilibrio que gobiernan el comportamiento de los sistemas
eléctricos son las leyes de Kirchhoff de voltaje y corriente las cuales establecen lo siguiente:
Ley de Voltaje de Kirchhoff: La suma algebraica de las caídas de tensión a lo largo de una
trayectoria cerrada es cero.
0V Ec. 4.3
Ley de corrientes de Kirchhoff: La suma algebraica de las corrientes en un nodo es igual a
cero, en otras palabras, la suma de las corrientes que entran a un nodo debe ser igual a la
suma de las corrientes que salen del mismo nodo.
saleentra II Ec. 4.4
Ambas leyes pueden ser comparadas con las pérdidas de carga, Ec. 4.3 y la ecuación de
continuidad, Ec. 4.4 en el sistema de tuberías en paralelo, respectivamente.
La regla divisora de voltaje determina como se dividirá la corriente que entra entre los
elementos en grupo de ramificaciones en paralelo. Para dos elementos en paralelo de igual
valor, la corriente se dividirá equitativamente, en el sistema de tuberías en paralelo significa
que si dos válvulas de las tuberías se abren de igual forma el flujo será el mismo en ambas.
Para los elementos en paralelo con valores distintos, entre más pequeña sea la resistencia,
mayor será la corriente de entrada, para el sistema de tuberías, si una válvula ofrece muy
poca resistencia fluídica entonces el flujo será mayor. En la Ec. 4.5 se representa el valor de
la corriente para un elemento en paralelo del circuito eléctrico
IR
RI
i
Ti Ec. 4.5
- - 49
Donde:
Ii=Corriente en la i-ésima rama paralela
RT=Resistencia total en paralelo del circuito
I=Corriente total
Ri=Resistencia en la i-ésima rama paralela
Ambos sistemas se caracterizan por comportarse de manera análoga, pues por ser sistemas
de energía hidráulica y eléctrica respectivamente, cumplen con el principio de conservación
de la energía, la cual es una ley fundamental de la física.
En este trabajo se considera que en el sistema de tuberías la bomba es la fuente de potencial
fluídico ya que impulsa al fluido a través de la tubería, y en el circuito eléctrico esta energía
la proporciona la fuente de voltaje. Una vez que en el sistema de tuberías está fluyendo
agua se establece un gasto deseado para cada rama paralela que depende directamente de la
presión del fluido, la cual es igual para cada rama paralela y de la apertura de la válvula,
ésta última gobernante del paso del líquido. En el circuito eléctrico esta energía de presión
se representa como el voltaje presente en la rama paralela y el potenciómetro es el
gobernante del paso de la corriente. Por lo tanto, se considera que la bomba proporciona un
caudal constante, es decir el voltaje del circuito es constante también, si se desea disminuir
el gasto en alguna de las ramas, es obvio que se tendrá que cerrar la válvula
correspondiente para lograr el objetivo, pero por el principio de continuidad (ver Ec 4.1), el
fluido que deja de circular por la rama que tuvo una disminución, tendrá que ser absorbido
por las demás ramas de cierta forma, afectando el gasto en éstas últimas, lo que es visto
como acoplamiento.
Si el objetivo de control es el desacoplamiento, es necesario determinar de qué manera se
puede conseguir una dinámica del funcionamiento tanto de la bomba como de las válvulas,
de tal manera que se modifiquen los gastos en las ramas paralelas sin afectarse entre sí. La
propuesta de desacoplamiento mediante la lógica difusa, basa su metodología a partir de un
conocimiento experto sobre cómo manipular el sistema de tuberías y conseguir el objetivo
de control. Intuitivamente, se determinó que regulando adecuadamente tanto la presión
- - 50
como a las válvulas, se puede hacer que el sistema tenga cambios en los flujos de cada una
de las ramas paralelas sin afectarse entre sí.
Por ejemplo, sí se disminuye el gasto en alguna rama y se desea no afectar a las demás, la
acción sobre el sistema será disminuir el gasto para que solo satisfaga la demanda necesaria
del sistema, de igual forma si la demanda aumenta, entonces el gasto debe aumentar para
satisfacer lo necesario. Esta forma de control se asemeja a un controlador proporcional.
Para verificar que este comportamiento desacoplado se podía lograr, se simuló en
MATLAB el sistema mostrado en la Figura 4.2, el cual se representa en el bloque llamado
“sistema de tuberías en paralelo” de la figura 4.3. En esta esquema se consideró un bloque
de ganancia unitaria que representa un controlador proporcional y las entradas son señales
de demanda de flujo aleatorias, es decir, existe variación en la demanda de flujo para
ciertos lapsos de tiempo, el bloque que ingresa el valor de la presión es constante para cada
rama paralela, que como ya se comentó en un sistema paralelo, la presión es igual para cada
rama.
El controlador proporcional (P) determina el valor para cada válvula y la información del
error entre el gasto deseado y el real es el conocimiento experto. Entonces, con esta
información, es posible traducir este error en un Controlador Proporcional Difuso (CPD) el
cual puede conseguir el mismo objetivo de control.
Figura 4.3 Simulación del sistema de tuberías en paralelo en lazo cerrado con MATLAB.
- - 51
En la siguiente sección, se propone el CPD diseñado a partir de la información
proporcionada por el experto.
4.3 Sistema de control difuso tipo Mamdani para el sistema de riego
El diagrama de bloques del controlador difuso que utilizado es del tipo Mamdani, que se
muestra en la Figura 4.4, y está compuesto por el fuzzificador, el mecanismo de inferencia,
la base de las reglas y el defuzzificador.
Figura 4.4 Sistema difuso tipo Mamdani.
La entrada de un sistema de lógica difusa tipo Mamdani normalmente es un valor numérico
proveniente, por ejemplo de un sensor, en este caso ese valor proviene del valor real del
gasto en alguna de las 3 tuberías paralelas. Para que este valor pueda ser procesado por el
sistema difuso se hace necesario convertirlo a un lenguaje que el mecanismo de inferencia
pueda procesar. Estos valores difusos son los niveles de pertenencia de los valores de
entrada a los diferentes conjuntos difusos en los cuales se ha dividido el universo de
discurso.
4.3.1 Conjuntos difusos del CPD del sistema de riego
Para definir un conjunto difuso, se puede utilizar cualquier función de membrecía, sin
embargo, existen funciones que son más utilizadas debido a su simplicidad matemática,
entre ellas podemos mencionar las funciones de tipo triangular, trapezoidal, gaussiana,
- - 52
entre otras. En este sistema se eligió la forma triangular por mayor flexibilidad de
programación. Es importante mencionar que dependiendo de la elección de la forma de la
función de membrecía los resultados del controlador pueden variar considerablemente.
Consideremos como universo de discurso de la variable de entrada para el control del gasto
de la bomba el flujo total demandado por el sistema. Para clasificar los conjuntos difusos
del universo de discurso de esta variable de entrada, se proponen 7 conjuntos los cuales se
denotan como: demanda del gasto de 0 al 15%, demanda del gasto de 15 al 30%, demanda
del gasto de 30 al 45%, demanda del gasto de 45 al 60%, demanda del gasto de 60 al 75%,
demanda del gasto de 75 al 90% y demanda del gasto al 100%, los cuales se muestran en la
Figura 4.5.
Figura 4.5 Universo de discurso y conjuntos difusos para la demanda del gasto en el sistema.
El universo de discurso de la variable de salida es la demanda de presión de la bomba. Para
esta salida se proponen 7 conjuntos difusos los cuales son: demanda de presión del 0 al
15%, demanda de presión del 15 al 30 %, demanda de presión del 30 al 45%, demanda de
presión del 45 al 60%, demanda de presión del 60 al 75%, demanda de presión del 75 al
90%, demanda de presión del 90 al 100%. En la Figura 4.6 se aprecian las funciones de
membrecía propuestas.
- - 53
Figura 4.6 Universos de discurso y conjuntos difusos para la demanda de presión requerida por el
sistema.
Ahora, consideremos el universo de discurso del flujo demandado por la tubería gobernada
por la válvula 1. Consideremos también una variable lingüística para clasificar los
conjuntos difusos del universo de discurso de esta variable, la cual se divide en 7 conjuntos
difusos: error negativo alto gasto 1, error negativo medio gasto 1, error negativo pequeño
gasto 1, gasto 1 ideal, error positivo pequeño gasto 1, error positivo medio gasto 1 y error
positivo alto gasto 1, ver Figura 4.7.
Figura 4.7 Universos de discurso y conjuntos difusos para la demanda del gasto 1.
- - 54
El universo de discurso de las variables lingüísticas de apertura de la válvula 1 proporcional
son: Abrir la válvula 1 totalmente, abrir la válvula 1 medianamente, abrir la válvula 1 un
poco, mantener la válvula 1 igual, cerrar la válvula 1 un poco, cerrar la válvula 1
medianamente, cerrar la válvula 1 totalmente. En la Figura 4.8 se aprecia está definición de
variables lingüísticas.
Figura 4.8 Universos de discurso y conjuntos difusos para la apertura de la válvula 1.
Para obtener los universos de discurso para las válvulas 2 y 3 se hace de manera análoga a
lo mostrado para la válvula 1.
4.3.2 Mecanismo de inferencia del CPD
Así, teniendo los diferentes niveles de pertenencia arrojados por el fuzzificador, estos deben
ser procesados para generar una salida difusa. La tarea del sistema de inferencia es tomar
los niveles de pertenencia y apoyado en la base de reglas, generar la salida del sistema
difuso. La base de las reglas es la manera que tiene el sistema difuso de guardar el
conocimiento lingüístico que le permiten resolver el problema para el cual ha sido
diseñado, estas reglas son del tipo SI-ENTONCES (IF-THEN).
Para el CPD que controla la Presión de la bomba, la base de las reglas están dadas en la
Tabla 4.1, la cual contiene siete conjuntos de entrada difusos y siete conjuntos de salida
difusos.
- - 55
Tabla 4.1 Base de las reglas del CPD gasto-presión.
If QT is Smallest then P is Smallest
If QT is Small then P is Small
If QT is Medium then P is Medium
If QT is High then P is High
If QT is High Medium then P is High Medium
If QT is Very High then P is Very High
If QT is highest then P is Highest
Donde QT, es el gasto que demanda el sistema y P, es la presión requerida, la gráfica
generada por esta base de las reglas se muestra en la Figura 4.9.
Figura 4.9 Gráfica generada por la base de las reglas del CPD, Gasto-Presión.
Se puede apreciar, que la demanda de gasto del sistema requiere de una presión en forma
proporcional. Los rangos mostrados en la Figura 4.9, se eligieron arbitrariamente, siendo la
demanda máxima de gasto igual a 1000 lts/min y la demanda máxima de presión igual a
1000kg/cm2.
- - 56
Para el CPD que controla el gasto en cada una de las ramas paralelas de la tubería, se tiene
que la base de las reglas está dada en la Tabla 4.2, la cual contiene siete conjuntos de
entrada difusos y siete conjuntos de salida difusos.
Tabla 4.2 Base de las reglas del CPD para la apertura de las válvulas
If e is NB then O is PB
If e is NM then O is PM
If e is NS then O is PS
If e is ZE then O is ZE
If e is PS then O is NS
If e is PM then O is NM
If e is PB then O is NB
Donde e, es el error de gasto que demanda la rama paralela y O, es la apertura de la
válvula. La gráfica generada por la base de estas reglas se muestra en la Figura 4.10.
Figura 4.10 Gráfica generada por la base de las reglas del CPD para el control de la apertura de las
válvulas.
Como se puede ver en la Figura 4.10, si la demanda de gasto aumenta con respecto a un
valor actual, entonces es necesario reducir el valor de la resistencia hidráulica, es decir, es
necesario abrir la válvula de forma adecuada. Los rangos de la Figura 4.10, corresponden al
comportamiento ante la entrada para el gasto 1, mostrado en la Figura 4.11 (señal en color
rojo).
- - 57
4.3.3 Método de defuzificación del CPD
La defuzzificación es resultado del tipo de funciones de pertenencia y de la base de las
reglas que están dadas en la Tabla 4.1 y 4.2 respectivamente. En este trabajo se utilizó el
método del centroide para la defuzzificación.
4.4 Resultados obtenidos del CPD
Para mostrar los resultados obtenidos en este trabajo, en la Figura 4.11 se muestran las
entradas de referencia para cada rama paralela, las cuales muestran variaciones en
diferentes lapsos de tiempo.
Figura 4.11 Entradas variables de referencia para el gasto de las ramas paralelas.
En la Figura 4.11, se muestra la especificación de gasto propuesta para cada rama paralela.
Se eligieron esas entradas para que el sistema se comporte como desacoplado, esto es, que
ante variaciones de gasto en alguna rama paralela, las demás ramas paralelas no se vean
afectadas en su gasto. La tarea del experto es definir como es el comportamiento del
sistema para cumplir con estas especificaciones. En la Figura 4.12 se muestran los
resultados en la salida por el experto.
- - 58
Figura 4.12 Respuesta del experto ante la entrada de referencia.
Claramente, se aprecia que el experto responde satisfactoriamente, y es posible obtener
información sobre cómo se comportan las válvulas y la bomba del sistema real, teniendo
como objetivo de control el desacoplamiento, basándose en el error. Así mismo es posible
traducir este conocimiento lingüístico a un CPD, utilizando la información del error como
entrada y obteniendo como salida la posición de la válvula adecuada, así como la presión de
la bomba. A continuación se muestra el conocimiento experto o error.
Figura 4.13. Error de gasto para la tubería 1.
- - 59
Figura 4.14 Error de gasto para la tubería 2.
Figura 4.15 Error de gasto para la tubería 3.
Con este conocimiento experto del comportamiento de cada tubería mostrado en las Figuras
4.13, 4.14 y 4.15, es posible diseñar un controlador proporcional que consiga desacoplar el
sistema. A continuación se muestra el resultado del CPD, en donde se aprecia claramente
que el sistema está desacoplado, ver Figura 4.16.
- - 60
Figura 4.16 Resultados del controlador CPD.
Las entradas de referencia muestran cambios de demanda de gasto en cada rama paralela
mostrados en la Figura 4.11, de esta manera, el experto P, determina el comportamiento de
las válvulas y la bomba, lo cual se aprecia en la Figura 4.12, y por último, en la Figura 4.16,
se observa el buen funcionamiento del CPD, el cual consigue un comportamiento
desacoplado. También, en la siguiente Figura 4.17 se muestra la demanda de gasto - presión
determinada por el CPD.
Figura 4.17 Demanda Gasto-Presión, determinados por el CPD.
- - 61
En la Figura 4.17, se observa que la demanda de gasto requiere de una presión
proporcional suministrada por la bomba, es decir, la demanda de gasto se satisface en
proporción a la demanda, así el sistema cumple con el objetivo de desacoplamiento,
conseguido por el CPD. Por último, se muestran en la Figura 4.18, las referencias de gasto
para cada rama paralela, la respuesta del experto y el desempeño del CPD.
Figura 4.18 Respuesta del experto y CPD ante las entradas de referencia.
El diseño del CPD que logra el objetivo de desacoplar el sistema de riego está basado en la
extracción de información del comportamiento desacoplado del sistema de referencia que
es controlado por un control proporcional convencional, el cual determina el
comportamiento de las válvulas y el comportamiento de la bomba para cumplir con el
objetivo de control que en este caso es el flujo deseado en cada una de las tuberías.
El CPD logra el objetivo de desacoplar el sistema a partir de un conocimiento experto del
funcionamiento basado en el error entre el flujo deseado y el real. Lo anterior es importante
porque implica que se puede aplicar esta metodología para otro tipo de sistemas como los
no regulares, variantes en el tiempo, entre otros.
4.5 Factor de acoplamiento
Como se mencionó en el capítulo 1, en un sistema multivariable acoplado, las variables de
entrada-salida interactúan entre sí hasta cierto punto, lo que es conocido como el grado de
- - 62
interacción o factor de acoplamiento, el cual se puede calcular para establecer la magnitud
en que una entrada afecta a más de una salida, sin embargo no es posible modificar este
factor de acoplamiento en forma deseada. En esta sección se propone una forma de
modificar el grado de interacción en forma deseada basado en el conocimiento experto del
funcionamiento del sistema. Cabe mencionar, que la base del diseño del controlador no cambia,
solo cambia el informe experto.
4.5.1 Informe experto para el cambio del factor de acoplamiento
De igual manera, para diseñar un controlador difuso es necesario saber como es el
funcionamiento del sistema para lograr un objetivo específico de control que en este caso es
el cambio en el factor de acoplamiento. En la Figura 4.19 se muestran las referencias del
sistema.
Figura 4.19 Entradas propuestas de referencia para los gastos en cada rama paralela, la cual muestra
un cambio en la entrada de referencia 1.
La entrada de referencia 1 cambia de 400 lt/min a 500 lt/min, la cual tiene un incremento de
100 lt/min. Se desea afectar de manera deseada a todas las salidas debido a este cambio en
la entrada de referencia 1, eligiéndose los factores de acoplamiento como: Referencia 1 es
de 50 %, es decir 0.5; Referencia 2 es de 30 %, es decir, 0.3; Referencia 3 es de 20 %, es
decir 0.2. De acuerdo a lo anterior todas las referencias se modifican de la siguiente
- - 63
manera de acuerdo a los factores de acoplamiento propuestos, tal que el experto define la
siguiente respuesta a la salida, ver Figura 4.20.
Figura 4.20 Respuesta del experto ante los factores de acoplamiento propuestos.
De la respuesta del experto mostrada en la Figura 4.20, en la Figura 4.21, es posible extraer
la información del comportamiento del sistema en forma de error, y es posible diseñar un
CPD que consiga el objetivo de modificar el factor de acoplamiento. En la Figura 4.22,
4.23 y 4.24, se muestra el error de cada tubería.
Figura 4.21 Error de gasto para la tubería 1.
- - 64
Figura 4.22 Error de gasto para la tubería 2.
Figura 4.23 Error de gasto para la tubería 3.
Como se mencionó al principio de este capítulo, la base de las reglas del CPD que asigna
un factor de acoplamiento deseado al sistema, no cambia, lo único que cambia es el informe
experto el cual se mostró en las Figuras 4.21, 4.22 y 4.23. En la Figura 4.24, se muestra la
respuesta del CPD, el cual logra el objetivo de modificar en forma deseada el factor de
acoplamiento.
- - 65
Figura 4.24 Respuesta del Controlador Proporcional Difuso ante el factor de acoplamiento.
En la Figura 4.24 se puede ver que el CPD, desacopla parcialmente el sistema de tuberías
con un grado predeterminado, así mismo la base de las reglas del controlador no cambió,
solo fue necesario obtener el informe experto que lograba este objetivo de control. En la
Figura 4.25 se muestra la demanda gasto-presión del sistema, ante este requerimiento.
Figura 4.25 Demanda Gasto-Presión del sistema.
En esta sección se mostró la forma de modificar el grado del factor de acoplamiento de
forma deseada mediante un CPD teniendo resultados satisfactorios. El caso extremo del
grado de interacción es lograr el desacoplamiento, es decir, que una entrada afecta una sola
salida, en la siguiente sección se muestra la aplicación del desacoplamiento a un sistema de
riego por aspersión.
- - 66
4.6 Desacoplamiento de un sistema de riego por aspersión mediante un CPD
Las necesidades de agua en los sistemas de riego dependen del tipo de cultivo, clima
(lluvia, humedad, calor, etc.) y tipo de suelo (características físicas y químicas). Estos
aspectos representan las necesidades básicas, porque establecen entre sí las relaciones
fundamentales en lo que respecta al uso del agua por las plantas. Cada cultivo tiene sus
características particulares. La demanda de agua es variable con el cultivo, con el ciclo
vegetativo de la planta y el tiempo, y el espacio o cobertura que hace superficialmente la
planta. El clima fija la demanda de transporte de agua y maneja la necesidad de agua de las
plantas por medio de la lluvia, la humedad y el calor. El suelo de acuerdo a sus
características físicas y químicas, retendrá el agua con mayor o menor cantidad y rapidez.
De esta forma, para aumentar la eficiencia en el uso del agua y al mismo tiempo mejorar el
desarrollo de la siembra, se hace necesario adaptarse a las necesidades del cultivo,
condiciones climáticas y características del suelo, proporcionando de manera adecuada la
cantidad de agua que se requiere.
En la Figura 4.26, se muestra como ejemplo una superficie con varios cultivos, en donde las
necesidades de agua son variables.
Figura 4.26 Superficie de varios cultivos con diferentes necesidades de agua.
- - 67
Al avanzar el sistema de riego por dicha superficie, las necesidades de suministros en cada
cultivo son variables y es necesario que el sistema de riego se adapte a estos
requerimientos. En esta aplicación se puede ver que el sistema de riego debe funcionar de
manera desacoplada para cumplir con los requerimientos del cultivo, en este sistema se
propuso un CPD para no depender de un modelo matemático del sistema, si no únicamente
basarse en la información del error entre el flujo deseado y el real. De esta manera se logra
un mejor uso del agua y los cultivos se verán favorecidos ya que solo se administrará el
agua requerida.
- - 68
Capítulo 5. Conclusiones y trabajo a futuro
5.1 Conclusiones
Se diseñó un Controlador Proporcional Difuso (CPD) a partir del conocimiento experto del
error entre el flujo deseado y el real, para desacoplar el sistema de riego en paralelo
prescindiendo de un modelo matemático del sistema, obteniéndose un comportamiento
satisfactorio. Así mismo, con la misma base del controlador se logró modificar el factor de
acoplamiento en forma deseada. Es importante mencionar, que la metodología propuesta se
puede aplicar a otros sistemas siempre y cuando se cuente con la información del experto.
Actualmente los trabajos en lineales, no lineales, difusos, invariantes en el tiempo logran
desacoplar los sistemas basándose en el modelo matemático, es decir, se tienen que conocer
las ecuaciones dinámicas que aproximen en medida de lo posible el comportamiento real
del sistema. Sin embargo, esta tarea no siempre resulta fácil para el diseñador, pues cuando
en el sistema intervienen una gran cantidad de variables, obtener una representación será
una tarea difícil, e incluso en algunos casos la solución general no existe. Por lo tanto, el
enfoque propuesto basado en la lógica difusa presenta una alternativa de solución viable al
problema de desacoplamiento.
5.2 Trabajo a futuro
La alternativa presentada para modificar el factor de acoplamiento, así como lograr el
desacoplamiento, puede ser implementada en sistemas de control en los cuales, conseguir
alguno de los objetivos mencionados, pueda causar dificultad matemática. Asi mismo, con
la base del CPD, queda pendiente tratar a sistemas multivariables no regulares.
- - 69
REFERENCIAS
[1] B.S Morgan Jr., The synthesis of linear multivariable systems by state-variable
feedback. IEEE trans. Automat. Contr., vol. AC-9, pp. 405-411,1964.
[2] P.L. Falb and W.A. Wolovich. Decoupling in the desing and synthesis of
multivariable control systems. SIAM Journal Contr. Optimiz., vol. AC-12, (no. 6),
pp.651-669,1967.
[3] W.M. Wonham, and A.S Morse, Decoupling and pole assignment in linear
multivariable systems: A geometric approach. SIAM J. Contr. 8, 1-18, 1970.
[4] A.S. Morse, W.M. Wonham. Status of Noninteracting Control. IEEE Trans. Automat.
Ctrl., Vol. AC-16, No. 6, pp. 568-581, 1971.
[5] J. Descusse and J.M Dion. On the structure at infinity of linear square decoupled
systems. IEEE Trans. Automat. Contr., vol. AC-27, pp. 971-974, 1982.
[6] J. Descusse, J.F. Lafay, M. Malabre, Solution of the static-state feedback decoupling
problem for linear systems with two outputs. IEEE Trans. Automat. Ctrl., vol. AC-30,
no. 9, pp. 914-918, 1985.
[7] J. Descusse, J.F. Lafay and M. Malabre. Solution to Morgan’s problem. IEEE trans.
Automat. Contr., vol. 33, no. 8, pp. 732-739, 1988.
[8] J.M. Dion, C. Commault. The Minimal Delay Decoupling Problem: Feedback
Implementation with Stability. SIAM J. Contr. Optimiz., Vol. 26, No. 1, pp. 66-82,
1988.
[9] J.J. Loiseau. Sur la modification de la structure a` l’infini par un retour d’etat statique.
SIAM J. Contr. Optimiz. vol. 26, no. 2, pp. 251-273, 1988.
[10] Xu, C.W.; , "Decoupling fuzzy relational systems-an output feedback approach,"
Systems, Man and Cybernetics, IEEE Transactions on , vol.19, no.2, pp.414-418,
Mar/Apr 1989
[11] Foster, G.T.; Kambhampati, C.; Warwick, K.; , "Quasi-decoupled fuzzy logic
controller," Intelligent Control, 1992., Proceedings of the 1992 IEEE International
Symposium on , vol., no., pp.366-371, 11-13 Aug 1992
[12] A.N. Herrera, J. Torres y J. Ruiz. The nonregular Morgan’s problem: a polinomial
solution for the case of two outputs. Proc. 2nd. ECC, vol. 4, pp. 2275-2278,
Groningen, The Netherlands, 1993.
- - 70
[13] P. Zagalak, J.F Lafay and A.Herrera. The row by row Decoupling via State Feedback:
A Polynomial Approach. Automatica, vol. 29, no. 6, pp. 1491-1499, 1993.
[14] A.N. Herrera and J.F. Lafay New results about the Morgan’s problem. IEEE Trans.
Automat. Contr., vol. 38, no. 12, pp. 1834-1838, 1993.
[15] A.N. Herrera, Static realization of dynamic precompensators. IEEE Trns Automat.
Contr., vol. 38, no. 12, pp. 1834-1838, 1993.
[16] de Silva, Clarence W., "Knowledge Base Decoupling in Fuzzy-Logic Control
Systems," American Control Conference, 1993, San Francisco, California, U.S.A.,
vol., no., pp.760-764, 2-4 June 1993
[17] J. Ruiz, P. Zagalak, V. Eldem. On the Problem of Decoupling. Proc. 3rd IFAC
Conference on System Structure and Control, pp. 611-616, Nantes, France, 1995.
[18] A.N. Herrera, J.F. Lafay y P. Zagalak. A semi-canonical form for a class of right
invertible systems. Proc. 3rd IFAC Conf. on System Structure and Control, pp. 590-
594, 1995.
[19] J. Ruiz. Decoupling of Linear Systems. PhD dissertation, Czech Technical University,
Czech Republic, 1996.
[20] F.G. Shinskey, Sistemas de control de procesos, Aplicación, diseño y sintonización,
Mc Graw Hill, 1996
[21] Nie, J.; "Fuzzy control of multivariable nonlinear servomechanisms with explicit
decoupling scheme," Fuzzy Systems, IEEE Transactions on , vol.5, no.2, pp.304-311,
May 1997
[22] Kevin M. Passino, Stephen Yurkovich, Fuzzy Control. Addison Wesley Longman
1998.
[23] J.L. Orozco M. Desacoplamiento de sistemas lineales: el caso de sistemas decalados
y el caso general. Tesis de doctorado, CINVESTAV Unidad Guadalajara, Jalisco,
México 2005.
[24] J. Ruiz-León, Jorge Luis Orozco, and Ofelia Begovich, Closed-loop structure of
decouplable linear multivariable systems. Kybernetika, Vol. 41 No. 1, pag. 33-45,
2005.
[25] Juan Saldarriaga, Hidráulica de tuberías, abastecimiento de agua, redes, riegos, 1ra
ed., Bogotá, D. C. Alfaomega, 2007, p.p. 273 y 274.
- - 71
[26] Jie-sheng Wang; , "Self-Tuning Multivariable PID Decoupling Controller of Ball Mill
Pulverizing System," Natural Computation, 2007. ICNC 2007. IEEE Conference
Publications, Third International Conference on, vol.4, no., pp.738-742, 24-27 Aug.
2007
[27] Yongqiang Guo; Kangling Fang; Hongjun Zhou; , "Design of fuzzy feed-forward
decoupling controller based on error," Intelligent Control and Automation, 2008.
WCICA 2008, Chongqing, China. 7th World Congress on, vol., no., pp.6101-6106,
25-27 June 2008
[28] Gao Qiang; Pan Hongxia; , "Leveling control technology of hydraulic system based
on fuzzy decoupling algorithm," Networking and Information Technology (ICNIT),
2010 International Conference on , vol., no., pp.314-318, 11-12 June 2010
[29] Jia Wang; Chao-Ying Liu; Xue-Ling Song; Zhe-Ying Song; , "A realization method
for fuzzy decoupling control of the Circulating Fluidized Bed Boiler," Machine
Learning and Cybernetics (ICMLC), 2011 International Conference on , vol.1, no.,
pp.166-171, 10-13 July 2011
[30] J. A. Delgado A., J. L. Orozco M., E. Ruiz-Beltrán and J. A. Calderón-Martínez,
“Desacoplamiento mediante un PD difuso aplicado a un sistema de tanques”, en
Reunión de Verano de Potencia y Aplicaciones Industriales (25th, 2011, Guerrero,
México). RVP-AI, IEEE, Power Engineering Society and Industry Aplications Conf.,
AI-25.
[31] J. A. Delgado A., J. A. Jáuregui A.,E. Ramírez V., S. E. Luna C., J. L. Orozco M.,
“Aplicación del desacoplamiento regular a un circuito eléctrico”, en 13 th Reunión de
Otoño de Potencia, Electrónica y Computación, (2011).ROPEC, Morelia, Michoacán,
México, IEEE.
[32] J. A. Delgado A., J. L. Orozco M. and E. Ruiz-Beltrán, “Solución al problema de
desacoplamiento mediante un Controlador Proporcional Difuso de un sistema regular
de riego con tuberías en paralelo”, (2012), Revista: Ingeniería, Investigación y
Tecnología UNAM. En revisión.
[33] Liu Chen Hui, General decoupling theory of multivariable process control systems,
springer-Verlag, 1983.
- - 72
[34] Edgar H. Bristol, On a new measure of interaction for multivariable process control,
IEEE, Transaction on Automatic control, vol.11, no.1, pp.133-134, June 1966.
[35] Fuzzy Logic. Intelligence, Control and Information. John Yen & Reza Langari.
Prentice Hall. 1999.
[36] Neuro-Fuzzy and Soft Computing. J.-S. R. Jang, C.-T. Sun & E. Mizutani. Prentice
Hall. Matlab Curriculum Series. 1997.
[37] Fuzzy and Neural Approaches in Engineering. Lefteri H. Tsoukalas, Robert E. Uhrig.
John Wiley & Sons, Inc. 1997.
[38] Pattern Recognition. S. Theodoridis & K. Koutroumbas. Academic Press. 1999.
- - 73
Anexo 1
“Programa en MATLAB para el desacoplamiento y
cambio del factor de acoplamiento del sistema de
tuberías” %------------------------------------------------------------------------
% MAESTRÍA EN CIENCIAS EN INGENIERÍA ELÉCTRICA
% Alumno: Jorge Alejandro Delgado Aguiñaga
% Tesis: Acoplamiento y desacoplamiento difuso de sistemas
% regulares
% PROGRAMA PARA EL DESACOPLAMIENTO Y CAMBIO DEL FACTOR DE
% ACOPLAMIENTO CON UN CONTROLADOR PROPORCIONAL DIFUSO DE 7
% FUNCIONES DE PERTENENCIA Y 7 REGLAS.
%
%------------------------------------------------------------------------
clear all
close all
clc
%------------------------------------------------------------------------
% Constantes del sistema para el desacoplamiento total
%------------------------------------------------------------------------
%------------------------------------------------------------------------
% Determinación de los gastos
%------------------------------------------------------------------------
it=input('ingrese el valor del gasto maximo deseado, maximo 1000: ');
if it>1000
it=input('ingrese el valor del gasto máximo deseado, maximo 1000: ');
else
it=it
end
ia=input('valor maximo del gasto 1: ');
if ia<it
ia=ia
else
disp('el valor maximo del gasto 1 debe ser menor a la capacidad total, ingrese otro valor')
ia=input('valor maximo del gasto 1: ');
end
ib=input('valor maximo del gasto 2: ');
if ib<(it-ia)
ib=ib
else
disp('el valor maximo del gasto 2 debe ser menor, ingrese otro valor: ')
ib=input('valor maximo del gasto 2: ');
end
ic=input('valor maximo del gasto 3: ');
if ic<=(it-ia-ib)
ic=ic
else
disp('el valor maximo del gasto 3 debe ser menor, ingrese otro valor: ')
- - 74
ic=input('valor maximo del gasto 3: ');
end
%------------------------------------------------------------------------
% Ganacias para el experto
%------------------------------------------------------------------------
kp1=1;
ki1=0;
kd1=0;
kn1=0;
kp2=1;
ki2=0;
kd2=0;
kn2=0;
kp3=1;
ki3=0;
kd3=0;
kn3=0;
v1max=input('ingrese el valor maximo de la presión total: ')
if v1max>it
v1max=input('ingrese otro valor de la presión total: ')
else
v1max=v1max;
end
v1min=0;
c1min=0;
%------------------------------------------------------------------------
disp('ejecute el programa desacoplamiento total del sistema para extraer los universos de discurso para el
control fuzzy')
%------------------------------------------------------------------------
corriente_total=corriente1+corriente2+corriente3;
c1max=max(corriente_total);
%------------------------------------------------------------------------
% Diseño del CPD para la demanda gasto-presión
%------------------------------------------------------------------------
v=newfis('voltaje_fuzzy');
v.input(1).name='GASTO TOTAL DEMANDADO';
v.input(1).range=[c1min c1max];
v.input(1).mf(1).name='al 15%';
v.input(1).mf(1).type='trimf';
v.input(1).mf(1).params=[-((c1max-c1min)/6) c1min c1min+((c1max-c1min)/6)];
v.input(1).mf(2).name='al 30%';
v.input(1).mf(2).type='trimf';
v.input(1).mf(2).params=[c1min c1min+((c1max-c1min)/6) c1min+((c1max-c1min)/6)*2];
v.input(1).mf(3).name='al 45%';
v.input(1).mf(3).type='trimf';
v.input(1).mf(3).params=[c1min+((c1max-c1min)/6) c1min+((c1max-c1min)/6)*2 c1min+((c1max-
c1min)/6)*3];
v.input(1).mf(4).name='al 60%';
- - 75
v.input(1).mf(4).type='trimf';
v.input(1).mf(4).params=[c1min+((c1max-c1min)/6)*2 c1min+((c1max-c1min)/6)*3 c1min+((c1max-
c1min)/6)*4];
v.input(1).mf(5).name='al 75%';
v.input(1).mf(5).type='trimf';
v.input(1).mf(5).params=[c1min+((c1max-c1min)/6)*3 c1min+((c1max-c1min)/6)*4 c1min+((c1max-
c1min)/6)*5];
v.input(1).mf(6).name='al 90%';
v.input(1).mf(6).type='trimf';
v.input(1).mf(6).params=[c1min+((c1max-c1min)/6)*4 c1min+((c1max-c1min)/6)*5 c1min+((c1max-
c1min)/6)*6];
v.input(1).mf(7).name='al 100%';
v.input(1).mf(7).type='trimf';
v.input(1).mf(7).params=[c1min+((c1max-c1min)/6)*5 c1max c1max+((c1max-c1min)/6)];
figure(1)
plotmf(v,'input',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DE GASTO DEL SISTEMA')
v.output(1).name='PRESIÓN TOTAL REQUERIDA';
v.output(1).range=[v1min v1max];
v.output(1).mf(1).name='al 15%';
v.output(1).mf(1).type='trimf';
v.output(1).mf(1).params=[-((v1max-v1min)/6) v1min v1min+((v1max-v1min)/6)];
v.output(1).mf(2).name='al 30%';
v.output(1).mf(2).type='trimf';
v.output(1).mf(2).params=[v1min v1min+((v1max-v1min)/6) v1min+((v1max-v1min)/6)*2];
v.output(1).mf(3).name='al 45%';
v.output(1).mf(3).type='trimf';
v.output(1).mf(3).params=[v1min+((v1max-v1min)/6) v1min+((v1max-v1min)/6)*2 v1min+((v1max-
v1min)/6)*3];
v.output(1).mf(4).name='al 60%';
v.output(1).mf(4).type='trimf';
v.output(1).mf(4).params=[v1min+((v1max-v1min)/6)*2 v1min+((v1max-v1min)/6)*3 v1min+((v1max-
v1min)/6)*4];
v.output(1).mf(5).name='al 75%';
v.output(1).mf(5).type='trimf';
v.output(1).mf(5).params=[v1min+((v1max-v1min)/6)*3 v1min+((v1max-v1min)/6)*4 v1min+((v1max-
v1min)/6)*5];
v.output(1).mf(6).name='al 90%';
v.output(1).mf(6).type='trimf';
v.output(1).mf(6).params=[v1min+((v1max-v1min)/6)*4 v1min+((v1max-v1min)/6)*5 v1min+((v1max-
v1min)/6)*6];
v.output(1).mf(7).name='al 100%';
v.output(1).mf(7).type='trimf';
v.output(1).mf(7).params=[v1min+((v1max-v1min)/6)*5 v1max v1max+((v1max-v1min)/6)];
figure(2)
plotmf(v,'output',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DE PRESIÓN PARA LA BOMBA')
v.rule(1).antecedent=[1];
v.rule(1).consequent=[1];
v.rule(1).weight=1;
v.rule(1).connection=1;
v.rule(2).antecedent=[2];
- - 76
v.rule(2).consequent=[2];
v.rule(2).weight=1;
v.rule(2).connection=1;
v.rule(3).antecedent=[3];
v.rule(3).consequent=[3];
v.rule(3).weight=1;
v.rule(3).connection=1
v.rule(4).antecedent=[4];
v.rule(4).consequent=[4];
v.rule(4).weight=1;
v.rule(4).connection=1
v.rule(5).antecedent=[5];
v.rule(5).consequent=[5];
v.rule(5).weight=1;
v.rule(5).connection=1
v.rule(6).antecedent=[6];
v.rule(6).consequent=[6];
v.rule(6).weight=1;
v.rule(6).connection=1
v.rule(7).antecedent=[7];
v.rule(7).consequent=[7];
v.rule(7).weight=1;
v.rule(7).connection=1
ruleedit(v);
%------------------------------------------------------------------------
% Elección de los universos de discurso para el control fuzzy
%------------------------------------------------------------------------
e1min=min(e1);
e1max=max(e1);
e2min=min(e2);
e2max=max(e2);
e3min=min(e3);
e3max=max(e3);
r1min=min(valvula_pid_1);
r1max=max(valvula_pid_1);
r2min=min(valvula_pid_2);
r2max=max(valvula_pid_2);
r3min=min(valvula_pid_3);
r3max=max(valvula_pid_3);
%------------------------------------------------------------------------
% Definición del CPD para la apertura de las válvulas
%------------------------------------------------------------------------
a=newfis('fuzzy_proporcional_1');
a.input(1).name='FLOW ERROR 1';
a.input(1).range=[e1min e1max];
a.input(1).mf(1).name='high negative';
a.input(1).mf(1).type='trimf';
a.input(1).mf(1).params=[-((e1max-e1min)/6) e1min e1min+((e1max-e1min)/6)];
- - 77
a.input(1).mf(2).name='medium negative';
a.input(1).mf(2).type='trimf';
a.input(1).mf(2).params=[e1min e1min+((e1max-e1min)/6) e1min+((e1max-e1min)/6)*2];
a.input(1).mf(3).name='small negative';
a.input(1).mf(3).type='trimf';
a.input(1).mf(3).params=[e1min+((e1max-e1min)/6) e1min+((e1max-e1min)/6)*2 e1min+((e1max-
e1min)/6)*3];
a.input(1).mf(4).name='ideal flow';
a.input(1).mf(4).type='trimf';
a.input(1).mf(4).params=[e1min+((e1max-e1min)/6)*2 e1min+((e1max-e1min)/6)*3 e1min+((e1max-
e1min)/6)*4];
a.input(1).mf(5).name='small positive';
a.input(1).mf(5).type='trimf';
a.input(1).mf(5).params=[e1min+((e1max-e1min)/6)*3 e1min+((e1max-e1min)/6)*4 e1min+((e1max-
e1min)/6)*5];
a.input(1).mf(6).name='medium positive';
a.input(1).mf(6).type='trimf';
a.input(1).mf(6).params=[e1min+((e1max-e1min)/6)*4 e1min+((e1max-e1min)/6)*5 e1min+((e1max-
e1min)/6)*6];
a.input(1).mf(7).name='high positive';
a.input(1).mf(7).type='trimf';
a.input(1).mf(7).params=[e1min+((e1max-e1min)/6)*5 e1max e1max+((e1max-e1min)/6)];
figure(3)
plotmf(a,'input',1)
title('UNIVERSE OF DISCURSE FOR FLOW ERROR 1')
a.output(1).name='OPENING VALVE 1';
a.output(1).range=[r1min r1max];
a.output(1).mf(1).name='close completely'
a.output(1).mf(1).type='trimf';
a.output(1).mf(1).params=[-((r1max-r1min)/6) r1min r1min+((r1max-r1min)/6)];
a.output(1).mf(2).name='medium close';
a.output(1).mf(2).type='trimf';
a.output(1).mf(2).params=[r1min r1min+((r1max-r1min)/6) r1min+((r1max-r1min)/6)*2];
a.output(1).mf(3).name='close a little';
a.output(1).mf(3).type='trimf';
a.output(1).mf(3).params=[r1min+((r1max-r1min)/6) r1min+((r1max-r1min)/6)*2 r1min+((r1max-
r1min)/6)*3];
a.output(1).mf(4).name='maintain';
a.output(1).mf(4).type='trimf';
a.output(1).mf(4).params=[r1min+((r1max-r1min)/6)*2 r1min+((r1max-r1min)/6)*3 r1min+((r1max-
r1min)/6)*4];
a.output(1).mf(5).name='open a little';
a.output(1).mf(5).type='trimf';
a.output(1).mf(5).params=[r1min+((r1max-r1min)/6)*3 r1min+((r1max-r1min)/6)*4 r1min+((r1max-
r1min)/6)*5];
a.output(1).mf(6).name='medium open';
a.output(1).mf(6).type='trimf';
a.output(1).mf(6).params=[r1min+((r1max-r1min)/6)*4 r1min+((r1max-r1min)/6)*5 r1min+((r1max-
r1min)/6)*6];
a.output(1).mf(7).name='open completely';
a.output(1).mf(7).type='trimf';
a.output(1).mf(7).params=[r1min+((r1max-r1min)/6)*5 r1max r1max+((r1max-r1min)/6)];
figure(4)
- - 78
plotmf(a,'output',1)
title('UNIVERSE OF DISCURSE FOR OPENING VALVE 1')
a.rule(1).antecedent=[1];
a.rule(1).consequent=[7];
a.rule(1).weight=1;
a.rule(1).connection=1;
a.rule(2).antecedent=[2];
a.rule(2).consequent=[6];
a.rule(2).weight=1;
a.rule(2).connection=1;
a.rule(3).antecedent=[3];
a.rule(3).consequent=[5];
a.rule(3).weight=1;
a.rule(3).connection=1
a.rule(4).antecedent=[4];
a.rule(4).consequent=[4];
a.rule(4).weight=1;
a.rule(4).connection=1
a.rule(5).antecedent=[5];
a.rule(5).consequent=[3];
a.rule(5).weight=1;
a.rule(5).connection=1
a.rule(6).antecedent=[6];
a.rule(6).consequent=[2];
a.rule(6).weight=1;
a.rule(6).connection=1
a.rule(7).antecedent=[7];
a.rule(7).consequent=[1];
a.rule(7).weight=1;
a.rule(7).connection=1
ruleedit(a);
%------------------------------------------------------------------------
% El CPD para la válvula 2:
%------------------------------------------------------------------------
b=newfis('fuzzy_proporcional_2');
b.input(1).name='FLOW ERROR 2';
b.input(1).range=[e2min e2max];
b.input(1).mf(1).name='high negative';
b.input(1).mf(1).type='trimf';
b.input(1).mf(1).params=[-((e2max-e2min)/6) e2min e2min+((e2max-e2min)/6)];
b.input(1).mf(2).name='medium negative';
b.input(1).mf(2).type='trimf';
b.input(1).mf(2).params=[e2min e2min+((e2max-e2min)/6) e2min+((e2max-e2min)/6)*2];
b.input(1).mf(3).name='small negative';
b.input(1).mf(3).type='trimf';
b.input(1).mf(3).params=[e2min+((e2max-e2min)/6) e2min+((e2max-e2min)/6)*2 e2min+((e2max-
e2min)/6)*3];
b.input(1).mf(4).name='ideal flow';
b.input(1).mf(4).type='trimf';
b.input(1).mf(4).params=[e2min+((e2max-e2min)/6)*2 e2min+((e2max-e2min)/6)*3 e2min+((e2max-
e2min)/6)*4];
b.input(1).mf(5).name='small positive';
b.input(1).mf(5).type='trimf';
- - 79
b.input(1).mf(5).params=[e2min+((e2max-e2min)/6)*3 e2min+((e2max-e2min)/6)*4 e2min+((e2max-
e2min)/6)*5];
b.input(1).mf(6).name='medium positive';
b.input(1).mf(6).type='trimf';
b.input(1).mf(6).params=[e2min+((e2max-e2min)/6)*4 e2min+((e2max-e2min)/6)*5 e2min+((e2max-
e2min)/6)*6];
b.input(1).mf(7).name='high positive';
b.input(1).mf(7).type='trimf';
b.input(1).mf(7).params=[e2min+((e2max-e2min)/6)*5 e2max e2max+((e2max-e2min)/6)];
figure(5)
plotmf(b,'input',1)
title('UNIVERSE OF DISCURSE FOR FLOW ERROR 2')
b.output(1).name='OPENING VALVE 2';
b.output(1).range=[r2min r2max];
b.output(1).mf(1).name='close completely'
b.output(1).mf(1).type='trimf';
b.output(1).mf(1).params=[-((r2max-r2min)/6) r2min r2min+((r2max-r2min)/6)];
b.output(1).mf(2).name='medium close';
b.output(1).mf(2).type='trimf';
b.output(1).mf(2).params=[r2min r2min+((r2max-r2min)/6) r2min+((r2max-r2min)/6)*2];
b.output(1).mf(3).name='close a little';
b.output(1).mf(3).type='trimf';
b.output(1).mf(3).params=[r2min+((r2max-r2min)/6) r2min+((r2max-r2min)/6)*2 r2min+((r2max-
r2min)/6)*3];
b.output(1).mf(4).name='maintain';
b.output(1).mf(4).type='trimf';
b.output(1).mf(4).params=[r2min+((r2max-r2min)/6)*2 r2min+((r2max-r2min)/6)*3 r2min+((r2max-
r2min)/6)*4];
b.output(1).mf(5).name='open a little';
b.output(1).mf(5).type='trimf';
b.output(1).mf(5).params=[r2min+((r2max-r2min)/6)*3 r2min+((r2max-r2min)/6)*4 r2min+((r2max-
r2min)/6)*5];
b.output(1).mf(6).name='medium open';
b.output(1).mf(6).type='trimf';
b.output(1).mf(6).params=[r2min+((r2max-r2min)/6)*4 r2min+((r2max-r2min)/6)*5 r2min+((r2max-
r2min)/6)*6];
b.output(1).mf(7).name='open completely';
b.output(1).mf(7).type='trimf';
b.output(1).mf(7).params=[r2min+((r2max-r2min)/6)*5 r2max r2max+((r2max-r2min)/6)];
figure(6)
plotmf(b,'output',1)
title('UNIVERSE OF DISCURSE FOR OPENING VALVE 2')
b.rule(1).antecedent=[1];
b.rule(1).consequent=[7];
b.rule(1).weight=1;
b.rule(1).connection=1;
b.rule(2).antecedent=[2];
b.rule(2).consequent=[6];
b.rule(2).weight=1;
b.rule(2).connection=1;
b.rule(3).antecedent=[3];
b.rule(3).consequent=[5];
- - 80
b.rule(3).weight=1;
b.rule(3).connection=1
b.rule(4).antecedent=[4];
b.rule(4).consequent=[4];
b.rule(4).weight=1;
b.rule(4).connection=1
b.rule(5).antecedent=[5];
b.rule(5).consequent=[3];
b.rule(5).weight=1;
b.rule(5).connection=1
b.rule(6).antecedent=[6];
b.rule(6).consequent=[2];
b.rule(6).weight=1;
b.rule(6).connection=1
b.rule(7).antecedent=[7];
b.rule(7).consequent=[1];
b.rule(7).weight=1;
b.rule(7).connection=1
ruleedit(b);
%------------------------------------------------------------------------
% El CPD para la válvula 3 es:
%------------------------------------------------------------------------
c=newfis('fuzzy_proporcional_3');
c.input(1).name='FLOW ERROR 3';
c.input(1).range=[e3min e3max];
c.input(1).mf(1).name='high negative';
c.input(1).mf(1).type='trimf';
c.input(1).mf(1).params=[-((e3max-e3min)/6) e3min e3min+((e3max-e3min)/6)];
c.input(1).mf(2).name='medium negative';
c.input(1).mf(2).type='trimf';
c.input(1).mf(2).params=[e3min e3min+((e3max-e3min)/6) e3min+((e3max-e3min)/6)*2];
c.input(1).mf(3).name='small negative';
c.input(1).mf(3).type='trimf';
c.input(1).mf(3).params=[e3min+((e3max-e3min)/6) e3min+((e3max-e3min)/6)*2 e3min+((e3max-
e3min)/6)*3];
c.input(1).mf(4).name='ideal flow';
c.input(1).mf(4).type='trimf';
c.input(1).mf(4).params=[e3min+((e3max-e3min)/6)*2 e3min+((e3max-e3min)/6)*3 e3min+((e3max-
e3min)/6)*4];
c.input(1).mf(5).name='small positive';
c.input(1).mf(5).type='trimf';
c.input(1).mf(5).params=[e3min+((e3max-e3min)/6)*3 e3min+((e3max-e3min)/6)*4 e3min+((e3max-
e3min)/6)*5];
c.input(1).mf(6).name='medium positive';
c.input(1).mf(6).type='trimf';
c.input(1).mf(6).params=[e3min+((e3max-e3min)/6)*4 e3min+((e3max-e3min)/6)*5 e3min+((e3max-
e3min)/6)*6];
c.input(1).mf(7).name='high positive';
c.input(1).mf(7).type='trimf';
c.input(1).mf(7).params=[e3min+((e3max-e3min)/6)*5 e3max e3max+((e3max-e3min)/6)];
figure(7)
plotmf(c,'input',1)
- - 81
title('UNIVERSE OF DISCURSE FOR FLOW ERROR 3')
c.output(1).name='OPENING VALVE 3';
c.output(1).range=[r3min r3max];
c.output(1).mf(1).name='close completely'
c.output(1).mf(1).type='trimf';
c.output(1).mf(1).params=[-((r3max-r3min)/6) r3min r3min+((r3max-r3min)/6)];
c.output(1).mf(2).name='medium close';
c.output(1).mf(2).type='trimf';
c.output(1).mf(2).params=[r3min r3min+((r3max-r3min)/6) r3min+((r3max-r3min)/6)*2];
c.output(1).mf(3).name='close a little';
c.output(1).mf(3).type='trimf';
c.output(1).mf(3).params=[r3min+((r3max-r3min)/6) r3min+((r3max-r3min)/6)*2 r3min+((r3max-
r3min)/6)*3];
c.output(1).mf(4).name='maintain';
c.output(1).mf(4).type='trimf';
c.output(1).mf(4).params=[r3min+((r3max-r3min)/6)*2 r3min+((r3max-r3min)/6)*3 r3min+((r3max-
r3min)/6)*4];
c.output(1).mf(5).name='open a little';
c.output(1).mf(5).type='trimf';
c.output(1).mf(5).params=[r3min+((r3max-r3min)/6)*3 r3min+((r3max-r3min)/6)*4 r3min+((r3max-
r3min)/6)*5];
c.output(1).mf(6).name='medium open';
c.output(1).mf(6).type='trimf';
c.output(1).mf(6).params=[r3min+((r3max-r3min)/6)*4 r3min+((r3max-r3min)/6)*5 r3min+((r3max-
r3min)/6)*6];
c.output(1).mf(7).name='open completely';
c.output(1).mf(7).type='trimf';
c.output(1).mf(7).params=[r3min+((r3max-r3min)/6)*5 r3max r3max+((r3max-r3min)/6)];
figure(8)
plotmf(c,'output',1)
title('UNIVERSE OF DISCURSE FOR THE OPENING OF THE VALVE 3')
c.rule(1).antecedent=[1];
c.rule(1).consequent=[7];
c.rule(1).weight=1;
c.rule(1).connection=1;
c.rule(2).antecedent=[2];
c.rule(2).consequent=[6];
c.rule(2).weight=1;
c.rule(2).connection=1;
c.rule(3).antecedent=[3];
c.rule(3).consequent=[5];
c.rule(3).weight=1;
c.rule(3).connection=1
c.rule(4).antecedent=[4];
c.rule(4).consequent=[4];
c.rule(4).weight=1;
c.rule(4).connection=1
c.rule(5).antecedent=[5];
c.rule(5).consequent=[3];
c.rule(5).weight=1;
c.rule(5).connection=1
c.rule(6).antecedent=[6];
c.rule(6).consequent=[2];
- - 82
c.rule(6).weight=1;
c.rule(6).connection=1
c.rule(7).antecedent=[7];
c.rule(7).consequent=[1];
c.rule(7).weight=1;
c.rule(7).connection=1
ruleedit(c);
%------------------------------------------------------------------------
disp('ejecute el programa en simulink elección de la valvula fuzzy, elección del voltaje fuzzy y corriente fuzzy
')
%------------------------------------------------------------------------
%------------------------------------------------------------------------
% FACTOR DE ACOPLAMIENTO
%------------------------------------------------------------------------
factor_total=1;
factor1=input('ingrese factor de acoplamiento para gasto 1 entre 0 y 1: ')
if factor1>factor_total
factor1=input('ingrese otro valor: ')
else
factor1=factor1
end
factor2=input('ingrese factor de acoplamiento para gasto 2 entre 0 y 1: ')
if factor2>(factor_total-factor1)
factor2=input('ingrese otro valor: ')
else
factor2=factor2
end
factor3=input('ingrese factor de acoplamiento para gasto 3 entre 0 y 1: ')
if factor3>(factor_total-factor1-factor2)
factor3=input('ingrese otro valor')
else
factor3=factor3
end
%------------------------------------------------------------------------
% Cambio de las salidas por un factor de acoplamiento en el gasto 1
%------------------------------------------------------------------------
cambio_ia=input('ingrese el cambio en la corriente 1: ')
if cambio_ia>0
iafc=400
ia_fc=iafc+(cambio_ia*factor1);
ibfc=300
ib_fc=ibfc+(cambio_ia*factor2);
icfc=100
ic_fc=icfc+(cambio_ia*factor3);
else
cambio_ia=0
end
%------------------------------------------------------------------------
% Cambio de las salidas por un factor de acoplamiento en el gasto 2
- - 83
%------------------------------------------------------------------------
cambio_ib=input('ingrese el cambio en la gasto 2: ')
if cambio_ib>0
iafc=400
ia_fc=iafc+(cambio_ib*factor1);
ibfc=300
ib_fc=ibfc+(cambio_ib*factor2);
icfc=100
ic_fc=icfc+(cambio_ib*factor3);
else
cambio_ib=0
end
%------------------------------------------------------------------------
% Cambio de las salidas por un factor de acoplamiento en el gasto 3
%------------------------------------------------------------------------
cambio_ic=input('ingrese el cambio en la gasto 3: ')
if cambio_ic>0
iafc=400
ia_fc=iafc+(cambio_ic*factor1);
ibfc=300
ib_fc=ibfc+(cambio_ic*factor2);
icfc=100
ic_fc=icfc+(cambio_ic*factor3);
else
cambio_ic=0
it_fc=ia_fc+ib_fc+ic_fc;
end
%------------------------------------------------------------------------
% Determinación gasto_presión, factor de acoplamiento
%------------------------------------------------------------------------
v1_fcmax=ia_fc+ib_fc+ic_fc;
v1_fcmin=0;
c1_fcmin=0;
%------------------------------------------------------------------------
disp('ejecute el programa para extraer los universos de discurso para el control fuzzy, factor de acoplamiento')
%------------------------------------------------------------------------
corriente_total_fc=corriente1_fc+corriente2_fc+corriente3_fc;
c1_fcmax=max(corriente_total_fc);
%------------------------------------------------------------------------
% CPD gasto-presión, factor de acoplamiento
%------------------------------------------------------------------------
v_fc=newfis('voltaje_fuzzy_factor_coupling');
v_fc.input(1).name='TOTAL FLOW REQUIRED, FACTOR COUPLING';
v_fc.input(1).range=[c1_fcmin c1_fcmax];
v_fc.input(1).mf(1).name='to 15%';
v_fc.input(1).mf(1).type='trimf';
v_fc.input(1).mf(1).params=[-((c1_fcmax-c1_fcmin)/6) c1_fcmin c1_fcmin+((c1_fcmax-c1_fcmin)/6)];
v_fc.input(1).mf(2).name='to 30%';
v_fc.input(1).mf(2).type='trimf';
v_fc.input(1).mf(2).params=[c1_fcmin c1_fcmin+((c1_fcmax-c1_fcmin)/6) c1_fcmin+((c1_fcmax-
c1_fcmin)/6)*2];
v_fc.input(1).mf(3).name='to 45%';
- - 84
v_fc.input(1).mf(3).type='trimf';
v_fc.input(1).mf(3).params=[c1_fcmin+((c1_fcmax-c1_fcmin)/6) c1_fcmin+((c1_fcmax-c1_fcmin)/6)*2
c1_fcmin+((c1_fcmax-c1_fcmin)/6)*3];
v_fc.input(1).mf(4).name='to 60%';
v_fc.input(1).mf(4).type='trimf';
v_fc.input(1).mf(4).params=[c1_fcmin+((c1_fcmax-c1_fcmin)/6)*2 c1_fcmin+((c1_fcmax-c1_fcmin)/6)*3
c1_fcmin+((c1_fcmax-c1_fcmin)/6)*4];
v_fc.input(1).mf(5).name='to 75%';
v_fc.input(1).mf(5).type='trimf';
v_fc.input(1).mf(5).params=[c1_fcmin+((c1_fcmax-c1_fcmin)/6)*3 c1_fcmin+((c1_fcmax-c1_fcmin)/6)*4
c1_fcmin+((c1_fcmax-c1_fcmin)/6)*5];
v_fc.input(1).mf(6).name='to 90%';
v_fc.input(1).mf(6).type='trimf';
v_fc.input(1).mf(6).params=[c1_fcmin+((c1_fcmax-c1_fcmin)/6)*4 c1_fcmin+((c1_fcmax-c1_fcmin)/6)*5
c1_fcmin+((c1_fcmax-c1_fcmin)/6)*6];
v_fc.input(1).mf(7).name='to 100%';
v_fc.input(1).mf(7).type='trimf';
v_fc.input(1).mf(7).params=[c1_fcmin+((c1_fcmax-c1_fcmin)/6)*5 c1_fcmax c1_fcmax+((c1_fcmax-
c1_fcmin)/6)];
figure(9)
plotmf(v_fc,'input',1)
title('UNIVERSE OF DISCURSE FOR DEMAND FLOW SYSTEM, FACTOR COUPLING')
v_fc.output(1).name='TOTAL VOLTAGE REQUIRED, FACTOR COUPLING';
v_fc.output(1).range=[v1_fcmin v1_fcmax];
v_fc.output(1).mf(1).name='to 15%';
v_fc.output(1).mf(1).type='trimf';
v_fc.output(1).mf(1).params=[-((v1_fcmax-v1_fcmin)/6) v1_fcmin v1_fcmin+((v1_fcmax-v1_fcmin)/6)];
v_fc.output(1).mf(2).name='to 30%';
v_fc.output(1).mf(2).type='trimf';
v_fc.output(1).mf(2).params=[v1_fcmin v1_fcmin+((v1_fcmax-v1_fcmin)/6) v1_fcmin+((v1_fcmax-
v1_fcmin)/6)*2];
v_fc.output(1).mf(3).name='to 45%';
v_fc.output(1).mf(3).type='trimf';
v_fc.output(1).mf(3).params=[v1_fcmin+((v1_fcmax-v1_fcmin)/6) v1_fcmin+((v1_fcmax-v1_fcmin)/6)*2
v1_fcmin+((v1_fcmax-v1_fcmin)/6)*3];
v_fc.output(1).mf(4).name='to 60%';
v_fc.output(1).mf(4).type='trimf';
v_fc.output(1).mf(4).params=[v1_fcmin+((v1_fcmax-v1_fcmin)/6)*2 v1_fcmin+((v1_fcmax-v1_fcmin)/6)*3
v1_fcmin+((v1_fcmax-v1_fcmin)/6)*4];
v_fc.output(1).mf(5).name='to 75%';
v_fc.output(1).mf(5).type='trimf';
v_fc.output(1).mf(5).params=[v1_fcmin+((v1_fcmax-v1_fcmin)/6)*3 v1_fcmin+((v1_fcmax-v1_fcmin)/6)*4
v1_fcmin+((v1_fcmax-v1_fcmin)/6)*5];
v_fc.output(1).mf(6).name='to 90%';
v_fc.output(1).mf(6).type='trimf';
v_fc.output(1).mf(6).params=[v1_fcmin+((v1_fcmax-v1_fcmin)/6)*4 v1_fcmin+((v1_fcmax-v1_fcmin)/6)*5
v1_fcmin+((v1_fcmax-v1_fcmin)/6)*6];
v_fc.output(1).mf(7).name='to 100%';
v_fc.output(1).mf(7).type='trimf';
v_fc.output(1).mf(7).params=[v1_fcmin+((v1_fcmax-v1_fcmin)/6)*5 v1_fcmax v1_fcmax+((v1_fcmax-
v1_fcmin)/6)];
figure(10)
plotmf(v_fc,'output',1)
- - 85
title('UNIVERSE OF DISCURSE FOR DEMAND PUMP VOLTAGE, FACTOR COUPLING')
v_fc.rule(1).antecedent=[1];
v_fc.rule(1).consequent=[1];
v_fc.rule(1).weight=1;
v_fc.rule(1).connection=1;
v_fc.rule(2).antecedent=[2];
v_fc.rule(2).consequent=[2];
v_fc.rule(2).weight=1;
v_fc.rule(2).connection=1;
v_fc.rule(3).antecedent=[3];
v_fc.rule(3).consequent=[3];
v_fc.rule(3).weight=1;
v_fc.rule(3).connection=1
v_fc.rule(4).antecedent=[4];
v_fc.rule(4).consequent=[4];
v_fc.rule(4).weight=1;
v_fc.rule(4).connection=1
v_fc.rule(5).antecedent=[5];
v_fc.rule(5).consequent=[5];
v_fc.rule(5).weight=1;
v_fc.rule(5).connection=1
v_fc.rule(6).antecedent=[6];
v_fc.rule(6).consequent=[6];
v_fc.rule(6).weight=1;
v_fc.rule(6).connection=1
v_fc.rule(7).antecedent=[7];
v_fc.rule(7).consequent=[7];
v_fc.rule(7).weight=1;
v_fc.rule(7).connection=1
ruleedit(v_fc);
%------------------------------------------------------------------------
% Universos de discurso para el control fuzzy
%------------------------------------------------------------------------
e1_fcmin=min(e1_fc);
e1_fcmax=max(e1_fc);
e2_fcmin=min(e2_fc);
e2_fcmax=max(e2_fc);
e3_fcmin=min(e3_fc);
e3_fcmax=max(e3_fc);
r1_fcmin=min(valvula_pid_1_fc);
r1_fcmax=max(valvula_pid_1_fc);
r2_fcmin=min(valvula_pid_2_fc);
r2_fcmax=max(valvula_pid_2_fc);
r3_fcmin=min(valvula_pid_3_fc);
r3_fcmax=max(valvula_pid_3_fc);
%------------------------------------------------------------------------
% CPD para la vávula 1, factor de acoplamiento
- - 86
%------------------------------------------------------------------------
a_fc=newfis('fuzzy_proporcional_1_factor_coupling');
a_fc.input(1).name='FLOW ERROR 1, FACTOR COUPLING';
a_fc.input(1).range=[e1_fcmin e1_fcmax];
a_fc.input(1).mf(1).name='high negative';
a_fc.input(1).mf(1).type='trimf';
a_fc.input(1).mf(1).params=[-((e1_fcmax-e1_fcmin)/6) e1_fcmin e1_fcmin+((e1_fcmax-e1_fcmin)/6)];
a_fc.input(1).mf(2).name='medium negative';
a_fc.input(1).mf(2).type='trimf';
a_fc.input(1).mf(2).params=[e1_fcmin e1_fcmin+((e1_fcmax-e1_fcmin)/6) e1_fcmin+((e1_fcmax-
e1_fcmin)/6)*2];
a_fc.input(1).mf(3).name='small negative';
a_fc.input(1).mf(3).type='trimf';
a_fc.input(1).mf(3).params=[e1_fcmin+((e1_fcmax-e1_fcmin)/6) e1_fcmin+((e1_fcmax-e1_fcmin)/6)*2
e1_fcmin+((e1_fcmax-e1_fcmin)/6)*3];
a_fc.input(1).mf(4).name='ideal flow';
a_fc.input(1).mf(4).type='trimf';
a_fc.input(1).mf(4).params=[e1_fcmin+((e1_fcmax-e1_fcmin)/6)*2 e1_fcmin+((e1_fcmax-e1_fcmin)/6)*3
e1_fcmin+((e1_fcmax-e1_fcmin)/6)*4];
a_fc.input(1).mf(5).name='small positive';
a_fc.input(1).mf(5).type='trimf';
a_fc.input(1).mf(5).params=[e1_fcmin+((e1_fcmax-e1_fcmin)/6)*3 e1_fcmin+((e1_fcmax-e1_fcmin)/6)*4
e1_fcmin+((e1_fcmax-e1_fcmin)/6)*5];
a_fc.input(1).mf(6).name='medium positive';
a_fc.input(1).mf(6).type='trimf';
a_fc.input(1).mf(6).params=[e1_fcmin+((e1_fcmax-e1_fcmin)/6)*4 e1_fcmin+((e1_fcmax-e1_fcmin)/6)*5
e1_fcmin+((e1_fcmax-e1_fcmin)/6)*6];
a_fc.input(1).mf(7).name='high positive';
a_fc.input(1).mf(7).type='trimf';
a_fc.input(1).mf(7).params=[e1_fcmin+((e1_fcmax-e1_fcmin)/6)*5 e1_fcmax e1_fcmax+((e1_fcmax-
e1_fcmin)/6)];
figure(11)
plotmf(a_fc,'input',1)
title('UNIVERSE OF DISCURSE FOR FLOW ERROR 1, FACTOR COUPLING')
a_fc.output(1).name='OPENING VALVE 1, FACTOR COUPLING';
a_fc.output(1).range=[r1_fcmin r1_fcmax];
a_fc.output(1).mf(1).name='close completely'
a_fc.output(1).mf(1).type='trimf';
a_fc.output(1).mf(1).params=[-((r1_fcmax-r1_fcmin)/6) r1_fcmin r1_fcmin+((r1_fcmax-r1_fcmin)/6)];
a_fc.output(1).mf(2).name='medium close';
a_fc.output(1).mf(2).type='trimf';
a_fc.output(1).mf(2).params=[r1_fcmin r1_fcmin+((r1_fcmax-r1_fcmin)/6) r1_fcmin+((r1_fcmax-
r1_fcmin)/6)*2];
a_fc.output(1).mf(3).name='close a little';
a_fc.output(1).mf(3).type='trimf';
a_fc.output(1).mf(3).params=[r1_fcmin+((r1_fcmax-r1_fcmin)/6) r1_fcmin+((r1_fcmax-r1_fcmin)/6)*2
r1_fcmin+((r1_fcmax-r1_fcmin)/6)*3];
a_fc.output(1).mf(4).name='maintain';
a_fc.output(1).mf(4).type='trimf';
a_fc.output(1).mf(4).params=[r1_fcmin+((r1_fcmax-r1_fcmin)/6)*2 r1_fcmin+((r1_fcmax-r1_fcmin)/6)*3
r1_fcmin+((r1_fcmax-r1_fcmin)/6)*4];
a_fc.output(1).mf(5).name='open a little';
a_fc.output(1).mf(5).type='trimf';
- - 87
a_fc.output(1).mf(5).params=[r1_fcmin+((r1_fcmax-r1_fcmin)/6)*3 r1_fcmin+((r1_fcmax-r1_fcmin)/6)*4
r1_fcmin+((r1_fcmax-r1_fcmin)/6)*5];
a_fc.output(1).mf(6).name='medium open';
a_fc.output(1).mf(6).type='trimf';
a_fc.output(1).mf(6).params=[r1_fcmin+((r1_fcmax-r1_fcmin)/6)*4 r1_fcmin+((r1_fcmax-r1_fcmin)/6)*5
r1_fcmin+((r1_fcmax-r1_fcmin)/6)*6];
a_fc.output(1).mf(7).name='open completely';
a_fc.output(1).mf(7).type='trimf';
a_fc.output(1).mf(7).params=[r1_fcmin+((r1_fcmax-r1_fcmin)/6)*5 r1_fcmax r1_fcmax+((r1_fcmax-
r1_fcmin)/6)];
figure(12)
plotmf(a_fc,'output',1)
title('UNIVERSE OF DISCURSE FOR OPENING VALVE 1, FACTOR COUPLING')
a_fc.rule(1).antecedent=[1];
a_fc.rule(1).consequent=[1];
a_fc.rule(1).weight=1;
a_fc.rule(1).connection=1;
a_fc.rule(2).antecedent=[2];
a_fc.rule(2).consequent=[2];
a_fc.rule(2).weight=1;
a_fc.rule(2).connection=1;
a_fc.rule(3).antecedent=[3];
a_fc.rule(3).consequent=[3];
a_fc.rule(3).weight=1;
a_fc.rule(3).connection=1
a_fc.rule(4).antecedent=[4];
a_fc.rule(4).consequent=[4];
a_fc.rule(4).weight=1;
a_fc.rule(4).connection=1
a_fc.rule(5).antecedent=[5];
a_fc.rule(5).consequent=[5];
a_fc.rule(5).weight=1;
a_fc.rule(5).connection=1
a_fc.rule(6).antecedent=[6];
a_fc.rule(6).consequent=[6];
a_fc.rule(6).weight=1;
a_fc.rule(6).connection=1
a_fc.rule(7).antecedent=[7];
a_fc.rule(7).consequent=[7];
a_fc.rule(7).weight=1;
a_fc.rule(7).connection=1
ruleedit(a_fc);
%------------------------------------------------------------------------
% CPD para la válvula 2, factor de acoplamiento
%------------------------------------------------------------------------
b_fc=newfis('fuzzy_proporcional_2_factor_coupling');
b_fc.input(1).name='FLOW ERROR 2, FACTOR COUPLING';
b_fc.input(1).range=[e2_fcmin e2_fcmax];
b_fc.input(1).mf(1).name='high negative';
b_fc.input(1).mf(1).type='trimf';
b_fc.input(1).mf(1).params=[-((e2_fcmax-e2_fcmin)/6) e2_fcmin e2_fcmin+((e2_fcmax-e2_fcmin)/6)];
b_fc.input(1).mf(2).name='medium negative';
- - 88
b_fc.input(1).mf(2).type='trimf';
b_fc.input(1).mf(2).params=[e2_fcmin e2_fcmin+((e2_fcmax-e2_fcmin)/6) e2_fcmin+((e2_fcmax-
e2_fcmin)/6)*2];
b_fc.input(1).mf(3).name='small negative';
b_fc.input(1).mf(3).type='trimf';
b_fc.input(1).mf(3).params=[e2_fcmin+((e2_fcmax-e2_fcmin)/6) e2_fcmin+((e2_fcmax-e2_fcmin)/6)*2
e2_fcmin+((e2_fcmax-e2_fcmin)/6)*3];
b_fc.input(1).mf(4).name='ideal flow';
b_fc.input(1).mf(4).type='trimf';
b_fc.input(1).mf(4).params=[e2_fcmin+((e2_fcmax-e2_fcmin)/6)*2 e2_fcmin+((e2_fcmax-e2_fcmin)/6)*3
e2_fcmin+((e2_fcmax-e2_fcmin)/6)*4];
b_fc.input(1).mf(5).name='small positive';
b_fc.input(1).mf(5).type='trimf';
b_fc.input(1).mf(5).params=[e2_fcmin+((e2_fcmax-e2_fcmin)/6)*3 e2_fcmin+((e2_fcmax-e2_fcmin)/6)*4
e2_fcmin+((e2_fcmax-e2_fcmin)/6)*5];
b_fc.input(1).mf(6).name='medium positive';
b_fc.input(1).mf(6).type='trimf';
b_fc.input(1).mf(6).params=[e2_fcmin+((e2_fcmax-e2_fcmin)/6)*4 e2_fcmin+((e2_fcmax-e2_fcmin)/6)*5
e2_fcmin+((e2_fcmax-e2_fcmin)/6)*6];
b_fc.input(1).mf(7).name='high positive';
b_fc.input(1).mf(7).type='trimf';
b_fc.input(1).mf(7).params=[e2_fcmin+((e2_fcmax-e2_fcmin)/6)*5 e2_fcmax e2_fcmax+((e2_fcmax-
e2_fcmin)/6)];
figure(13)
plotmf(b_fc,'input',1)
title('UNIVERSE OF DISCURSE FOR FLOW ERROR 2, FACTOR COUPLING')
b_fc.output(1).name='OPENING VALVE 2, FACTOR COUPLING';
b_fc.output(1).range=[r2_fcmin r2_fcmax];
b_fc.output(1).mf(1).name='open completely'
b_fc.output(1).mf(1).type='trimf';
b_fc.output(1).mf(1).params=[-((r2_fcmax-r2_fcmin)/6) r2_fcmin r2_fcmin+((r2_fcmax-r2_fcmin)/6)];
b_fc.output(1).mf(2).name='medium open';
b_fc.output(1).mf(2).type='trimf';
b_fc.output(1).mf(2).params=[r2_fcmin r2_fcmin+((r2_fcmax-r2_fcmin)/6) r2_fcmin+((r2_fcmax-
r2_fcmin)/6)*2];
b_fc.output(1).mf(3).name='open a little';
b_fc.output(1).mf(3).type='trimf';
b_fc.output(1).mf(3).params=[r2_fcmin+((r2_fcmax-r2_fcmin)/6) r2_fcmin+((r2_fcmax-r2_fcmin)/6)*2
r2_fcmin+((r2_fcmax-r2_fcmin)/6)*3];
b_fc.output(1).mf(4).name='maintain';
b_fc.output(1).mf(4).type='trimf';
b_fc.output(1).mf(4).params=[r2_fcmin+((r2_fcmax-r2_fcmin)/6)*2 r2_fcmin+((r2_fcmax-r2_fcmin)/6)*3
r2_fcmin+((r2_fcmax-r2_fcmin)/6)*4];
b_fc.output(1).mf(5).name='close a little';
b_fc.output(1).mf(5).type='trimf';
b_fc.output(1).mf(5).params=[r2_fcmin+((r2_fcmax-r2_fcmin)/6)*3 r2_fcmin+((r2_fcmax-r2_fcmin)/6)*4
r2_fcmin+((r2_fcmax-r2_fcmin)/6)*5];
b_fc.output(1).mf(6).name='medium close';
b_fc.output(1).mf(6).type='trimf';
b_fc.output(1).mf(6).params=[r2_fcmin+((r2_fcmax-r2_fcmin)/6)*4 r2_fcmin+((r2_fcmax-r2_fcmin)/6)*5
r2_fcmin+((r2_fcmax-r2_fcmin)/6)*6];
b_fc.output(1).mf(7).name='close completely';
b_fc.output(1).mf(7).type='trimf';
- - 89
b_fc.output(1).mf(7).params=[r2_fcmin+((r2_fcmax-r2_fcmin)/6)*5 r2_fcmax r2_fcmax+((r2_fcmax-
r2_fcmin)/6)];
figure(14)
plotmf(b_fc,'output',1)
title('UNIVERSE OF DISCURSE FOR OPENING VALVE 2, FACTOR COUPLING')
b_fc.rule(1).antecedent=[1];
b_fc.rule(1).consequent=[1];
b_fc.rule(1).weight=1;
b_fc.rule(1).connection=1;
b_fc.rule(2).antecedent=[2];
b_fc.rule(2).consequent=[2];
b_fc.rule(2).weight=1;
b_fc.rule(2).connection=1;
b_fc.rule(3).antecedent=[3];
b_fc.rule(3).consequent=[3];
b_fc.rule(3).weight=1;
b_fc.rule(3).connection=1
b_fc.rule(4).antecedent=[4];
b_fc.rule(4).consequent=[4];
b_fc.rule(4).weight=1;
b_fc.rule(4).connection=1
b_fc.rule(5).antecedent=[5];
b_fc.rule(5).consequent=[5];
b_fc.rule(5).weight=1;
b_fc.rule(5).connection=1
b_fc.rule(6).antecedent=[6];
b_fc.rule(6).consequent=[6];
b_fc.rule(6).weight=1;
b_fc.rule(6).connection=1
b_fc.rule(7).antecedent=[7];
b_fc.rule(7).consequent=[7];
b_fc.rule(7).weight=1;
b_fc.rule(7).connection=1
ruleedit(b_fc);
%------------------------------------------------------------------------
% CPD para la válvula 3 es:
%------------------------------------------------------------------------
c_fc=newfis('fuzzy_proporcional_3_factor_coupling');
c_fc.input(1).name='FLOW ERROR 3, FACTOR COUPLING';
c_fc.input(1).range=[e3_fcmin e3_fcmax];
c_fc.input(1).mf(1).name='high negative';
c_fc.input(1).mf(1).type='trimf';
c_fc.input(1).mf(1).params=[-((e3_fcmax-e3_fcmin)/6) e3_fcmin e3_fcmin+((e3_fcmax-e3_fcmin)/6)];
c_fc.input(1).mf(2).name='medium negative';
c_fc.input(1).mf(2).type='trimf';
c_fc.input(1).mf(2).params=[e3_fcmin e3_fcmin+((e3_fcmax-e3_fcmin)/6) e3_fcmin+((e3_fcmax-
e3_fcmin)/6)*2];
c_fc.input(1).mf(3).name='small negative';
c_fc.input(1).mf(3).type='trimf';
c_fc.input(1).mf(3).params=[e3_fcmin+((e3_fcmax-e3_fcmin)/6) e3_fcmin+((e3_fcmax-e3_fcmin)/6)*2
e3_fcmin+((e3_fcmax-e3_fcmin)/6)*3];
- - 90
c_fc.input(1).mf(4).name='ideal flow';
c_fc.input(1).mf(4).type='trimf';
c_fc.input(1).mf(4).params=[e3_fcmin+((e3_fcmax-e3_fcmin)/6)*2 e3_fcmin+((e3_fcmax-e3_fcmin)/6)*3
e3_fcmin+((e3_fcmax-e3_fcmin)/6)*4];
c_fc.input(1).mf(5).name='small positive';
c_fc.input(1).mf(5).type='trimf';
c_fc.input(1).mf(5).params=[e3_fcmin+((e3_fcmax-e3_fcmin)/6)*3 e3_fcmin+((e3_fcmax-e3_fcmin)/6)*4
e3_fcmin+((e3_fcmax-e3_fcmin)/6)*5];
c_fc.input(1).mf(6).name='medium positive';
c_fc.input(1).mf(6).type='trimf';
c_fc.input(1).mf(6).params=[e3_fcmin+((e3_fcmax-e3_fcmin)/6)*4 e3_fcmin+((e3_fcmax-e3_fcmin)/6)*5
e3_fcmin+((e3_fcmax-e3_fcmin)/6)*6];
c_fc.input(1).mf(7).name='high positive';
c_fc.input(1).mf(7).type='trimf';
c_fc.input(1).mf(7).params=[e3_fcmin+((e3_fcmax-e3_fcmin)/6)*5 e3_fcmax e3_fcmax+((e3_fcmax-
e3_fcmin)/6)];
figure(15)
plotmf(c_fc,'input',1)
title('UNIVERSE OF DISCURSE FOR FLOW ERROR 3, FACTOR COUPLING')
c_fc.output(1).name='OPENING VALVE 3, FACTOR COUPLING';
c_fc.output(1).range=[r3_fcmin r3_fcmax];
c_fc.output(1).mf(1).name='open completely'
c_fc.output(1).mf(1).type='trimf';
c_fc.output(1).mf(1).params=[-((r3_fcmax-r3_fcmin)/6) r3_fcmin r3_fcmin+((r3_fcmax-r3_fcmin)/6)];
c_fc.output(1).mf(2).name='medium open';
c_fc.output(1).mf(2).type='trimf';
c_fc.output(1).mf(2).params=[r3_fcmin r3_fcmin+((r3_fcmax-r3_fcmin)/6) r3_fcmin+((r3_fcmax-
r3_fcmin)/6)*2];
c_fc.output(1).mf(3).name='open a little';
c_fc.output(1).mf(3).type='trimf';
c_fc.output(1).mf(3).params=[r3_fcmin+((r3_fcmax-r3_fcmin)/6) r3_fcmin+((r3_fcmax-r3_fcmin)/6)*2
r3_fcmin+((r3_fcmax-r3_fcmin)/6)*3];
c_fc.output(1).mf(4).name='maintain';
c_fc.output(1).mf(4).type='trimf';
c_fc.output(1).mf(4).params=[r3_fcmin+((r3_fcmax-r3_fcmin)/6)*2 r3_fcmin+((r3_fcmax-r3_fcmin)/6)*3
r3_fcmin+((r3_fcmax-r3_fcmin)/6)*4];
c_fc.output(1).mf(5).name='close a little';
c_fc.output(1).mf(5).type='trimf';
c_fc.output(1).mf(5).params=[r3_fcmin+((r3_fcmax-r3_fcmin)/6)*3 r3_fcmin+((r3_fcmax-r3_fcmin)/6)*4
r3_fcmin+((r3_fcmax-r3_fcmin)/6)*5];
c_fc.output(1).mf(6).name='medium close';
c_fc.output(1).mf(6).type='trimf';
c_fc.output(1).mf(6).params=[r3_fcmin+((r3_fcmax-r3_fcmin)/6)*4 r3_fcmin+((r3_fcmax-r3_fcmin)/6)*5
r3_fcmin+((r3_fcmax-r3_fcmin)/6)*6];
c_fc.output(1).mf(7).name='close completely';
c_fc.output(1).mf(7).type='trimf';
c_fc.output(1).mf(7).params=[r3_fcmin+((r3_fcmax-r3_fcmin)/6)*5 r3_fcmax r3_fcmax+((r3_fcmax-
r3_fcmin)/6)];
figure(16)
plotmf(c_fc,'output',1)
title('UNIVERSE OF DISCURSE FOR THE OPENING OF THE VALVE 3, FACTOR COUPLING')
c_fc.rule(1).antecedent=[1];
- - 91
c_fc.rule(1).consequent=[1];
c_fc.rule(1).weight=1;
c_fc.rule(1).connection=1;
c_fc.rule(2).antecedent=[2];
c_fc.rule(2).consequent=[2];
c_fc.rule(2).weight=1;
c_fc.rule(2).connection=1;
c_fc.rule(3).antecedent=[3];
c_fc.rule(3).consequent=[3];
c_fc.rule(3).weight=1;
c_fc.rule(3).connection=1
c_fc.rule(4).antecedent=[4];
c_fc.rule(4).consequent=[4];
c_fc.rule(4).weight=1;
c_fc.rule(4).connection=1
c_fc.rule(5).antecedent=[5];
c_fc.rule(5).consequent=[5];
c_fc.rule(5).weight=1;
c_fc.rule(5).connection=1
c_fc.rule(6).antecedent=[6];
c_fc.rule(6).consequent=[6];
c_fc.rule(6).weight=1;
c_fc.rule(6).connection=1
c_fc.rule(7).antecedent=[7];
c_fc.rule(7).consequent=[7];
c_fc.rule(7).weight=1;
c_fc.rule(7).connection=1
ruleedit(c_fc);
%------------------------------------------------------------------------
disp('ejecute el programa en simulink elección de la valvula fuzzy, elección del voltaje fuzzy y corriente
fuzzy_factor coupling así como gráficas del error')
disp('ejecute el programa en simulink referencias factor coupling y total decoupling')
%------------------------------------------------------------------------
%------------------------------------------------------------------------
% PROGRAMA PARA LA DETERMINACIÓN REAL DE LOS GASTOS
%------------------------------------------------------------------------
ent1min=0
ent1max=max(entrada1)
ent2min=0
ent2max=max(entrada2)
ent3min=0
ent3max=max(entrada3)
g1min=0
g1max=max(entrada1)
g2min=0
g2max=max(entrada2)
g3min=0
g3max=max(entrada3)
%------------------------------------------------------------------------
- - 92
% CPD para el gasto 1
%------------------------------------------------------------------------
f=newfis('gasto1_fuzzy');
f.input(1).name='GASTO 1 REQUERIDO';
f.input(1).range=[ent1min ent1max];
f.input(1).mf(1).name='al 15%';
f.input(1).mf(1).type='trimf';
f.input(1).mf(1).params=[-((ent1max-ent1min)/6) ent1min ent1min+((ent1max-ent1min)/6)];
f.input(1).mf(2).name='al 30%';
f.input(1).mf(2).type='trimf';
f.input(1).mf(2).params=[ent1min ent1min+((ent1max-ent1min)/6) ent1min+((ent1max-ent1min)/6)*2];
f.input(1).mf(3).name='al 45%';
f.input(1).mf(3).type='trimf';
f.input(1).mf(3).params=[ent1min+((ent1max-ent1min)/6) ent1min+((ent1max-ent1min)/6)*2
ent1min+((ent1max-ent1min)/6)*3];
f.input(1).mf(4).name='al 60%';
f.input(1).mf(4).type='trimf';
f.input(1).mf(4).params=[ent1min+((ent1max-ent1min)/6)*2 ent1min+((ent1max-ent1min)/6)*3
ent1min+((ent1max-ent1min)/6)*4];
f.input(1).mf(5).name='al 75%';
f.input(1).mf(5).type='trimf';
f.input(1).mf(5).params=[ent1min+((ent1max-ent1min)/6)*3 ent1min+((ent1max-ent1min)/6)*4
ent1min+((ent1max-ent1min)/6)*5];
f.input(1).mf(6).name='al 90%';
f.input(1).mf(6).type='trimf';
f.input(1).mf(6).params=[ent1min+((ent1max-ent1min)/6)*4 ent1min+((ent1max-ent1min)/6)*5
ent1min+((ent1max-ent1min)/6)*6];
f.input(1).mf(7).name='al 100%';
f.input(1).mf(7).type='trimf';
f.input(1).mf(7).params=[ent1min+((ent1max-ent1min)/6)*5 ent1max ent1max+((ent1max-ent1min)/6)];
figure(17)
plotmf(f,'input',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DEL GASTO 1 DEL SISTEMA')
f.output(1).name='GASTO 1 REAL';
f.output(1).range=[g1min g1max];
f.output(1).mf(1).name='al 15%';
f.output(1).mf(1).type='trimf';
f.output(1).mf(1).params=[-((g1max-g1min)/6) g1min g1min+((g1max-g1min)/6)];
f.output(1).mf(2).name='al 30%';
f.output(1).mf(2).type='trimf';
f.output(1).mf(2).params=[g1min g1min+((g1max-g1min)/6) g1min+((g1max-g1min)/6)*2];
f.output(1).mf(3).name='al 45%';
f.output(1).mf(3).type='trimf';
f.output(1).mf(3).params=[g1min+((g1max-g1min)/6) g1min+((g1max-g1min)/6)*2 g1min+((g1max-
g1min)/6)*3];
f.output(1).mf(4).name='al 60%';
f.output(1).mf(4).type='trimf';
f.output(1).mf(4).params=[g1min+((g1max-g1min)/6)*2 g1min+((g1max-g1min)/6)*3 g1min+((g1max-
g1min)/6)*4];
f.output(1).mf(5).name='al 75%';
f.output(1).mf(5).type='trimf';
f.output(1).mf(5).params=[g1min+((g1max-g1min)/6)*3 g1min+((g1max-g1min)/6)*4 g1min+((g1max-
g1min)/6)*5];
- - 93
f.output(1).mf(6).name='al 90%';
f.output(1).mf(6).type='trimf';
f.output(1).mf(6).params=[g1min+((g1max-g1min)/6)*4 g1min+((g1max-g1min)/6)*5 g1min+((g1max-
g1min)/6)*6];
f.output(1).mf(7).name='al 100%';
f.output(1).mf(7).type='trimf';
f.output(1).mf(7).params=[g1min+((g1max-g1min)/6)*5 g1max g1max+((g1max-g1min)/6)];
figure(18)
plotmf(f,'output',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DE GASTO TUBERIA 1')
f.rule(1).antecedent=[1];
f.rule(1).consequent=[1];
f.rule(1).weight=1;
f.rule(1).connection=1;
f.rule(2).antecedent=[2];
f.rule(2).consequent=[2];
f.rule(2).weight=1;
f.rule(2).connection=1;
f.rule(3).antecedent=[3];
f.rule(3).consequent=[3];
f.rule(3).weight=1;
f.rule(3).connection=1
f.rule(4).antecedent=[4];
f.rule(4).consequent=[4];
f.rule(4).weight=1;
f.rule(4).connection=1
f.rule(5).antecedent=[5];
f.rule(5).consequent=[5];
f.rule(5).weight=1;
f.rule(5).connection=1
f.rule(6).antecedent=[6];
f.rule(6).consequent=[6];
f.rule(6).weight=1;
f.rule(6).connection=1
f.rule(7).antecedent=[7];
f.rule(7).consequent=[7];
f.rule(7).weight=1;
f.rule(7).connection=1
ruleedit(f);
%------------------------------------------------------------------------
% CPD para el gasto 2
%------------------------------------------------------------------------
h=newfis('gasto2_fuzzy');
h.input(1).name='GASTO 2 REQUERIDO';
h.input(1).range=[ent2min ent2max];
h.input(1).mf(1).name='al 15%';
h.input(1).mf(1).type='trimf';
h.input(1).mf(1).params=[-((ent2max-ent2min)/6) ent2min ent2min+((ent2max-ent2min)/6)];
h.input(1).mf(2).name='al 30%';
h.input(1).mf(2).type='trimf';
h.input(1).mf(2).params=[ent2min ent2min+((ent2max-ent2min)/6) ent2min+((ent2max-ent2min)/6)*2];
- - 94
h.input(1).mf(3).name='al 45%';
h.input(1).mf(3).type='trimf';
h.input(1).mf(3).params=[ent2min+((ent2max-ent2min)/6) ent2min+((ent2max-ent2min)/6)*2
ent2min+((ent2max-ent2min)/6)*3];
h.input(1).mf(4).name='al 60%';
h.input(1).mf(4).type='trimf';
h.input(1).mf(4).params=[ent2min+((ent2max-ent2min)/6)*2 ent2min+((ent2max-ent2min)/6)*3
ent2min+((ent2max-ent2min)/6)*4];
h.input(1).mf(5).name='al 75%';
h.input(1).mf(5).type='trimf';
h.input(1).mf(5).params=[ent2min+((ent2max-ent2min)/6)*3 ent2min+((ent2max-ent2min)/6)*4
ent2min+((ent2max-ent2min)/6)*5];
h.input(1).mf(6).name='al 90%';
h.input(1).mf(6).type='trimf';
h.input(1).mf(6).params=[ent2min+((ent2max-ent2min)/6)*4 ent2min+((ent2max-ent2min)/6)*5
ent2min+((ent2max-ent2min)/6)*6];
h.input(1).mf(7).name='al 100%';
h.input(1).mf(7).type='trimf';
h.input(1).mf(7).params=[ent2min+((ent2max-ent2min)/6)*5 ent2max ent2max+((ent2max-ent2min)/6)];
figure(19)
plotmf(h,'input',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DEL GASTO 2 DEL SISTEMA')
h.output(1).name='GASTO 2 REAL';
h.output(1).range=[g2min g2max];
h.output(1).mf(1).name='al 15%';
h.output(1).mf(1).type='trimf';
h.output(1).mf(1).params=[-((g2max-g2min)/6) g2min g2min+((g2max-g2min)/6)];
h.output(1).mf(2).name='al 30%';
h.output(1).mf(2).type='trimf';
h.output(1).mf(2).params=[g2min g2min+((g2max-g2min)/6) g2min+((g2max-g2min)/6)*2];
h.output(1).mf(3).name='al 45%';
h.output(1).mf(3).type='trimf';
h.output(1).mf(3).params=[g2min+((g2max-g2min)/6) g2min+((g2max-g2min)/6)*2 g2min+((g2max-
g2min)/6)*3];
h.output(1).mf(4).name='al 60%';
h.output(1).mf(4).type='trimf';
h.output(1).mf(4).params=[g2min+((g2max-g2min)/6)*2 g2min+((g2max-g2min)/6)*3 g2min+((g2max-
g2min)/6)*4];
h.output(1).mf(5).name='al 75%';
h.output(1).mf(5).type='trimf';
h.output(1).mf(5).params=[g2min+((g2max-g2min)/6)*3 g2min+((g2max-g2min)/6)*4 g2min+((g2max-
g2min)/6)*5];
h.output(1).mf(6).name='al 90%';
h.output(1).mf(6).type='trimf';
h.output(1).mf(6).params=[g2min+((g2max-g2min)/6)*4 g2min+((g2max-g2min)/6)*5 g2min+((g2max-
g2min)/6)*6];
h.output(1).mf(7).name='al 100%';
h.output(1).mf(7).type='trimf';
h.output(1).mf(7).params=[g2min+((g2max-g2min)/6)*5 g2max g2max+((g2max-g2min)/6)];
figure(20)
plotmf(h,'output',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DE GASTO TUBERIA 1')
- - 95
h.rule(1).antecedent=[1];
h.rule(1).consequent=[1];
h.rule(1).weight=1;
h.rule(1).connection=1;
h.rule(2).antecedent=[2];
h.rule(2).consequent=[2];
h.rule(2).weight=1;
h.rule(2).connection=1;
h.rule(3).antecedent=[3];
h.rule(3).consequent=[3];
h.rule(3).weight=1;
h.rule(3).connection=1
h.rule(4).antecedent=[4];
h.rule(4).consequent=[4];
h.rule(4).weight=1;
h.rule(4).connection=1
h.rule(5).antecedent=[5];
h.rule(5).consequent=[5];
h.rule(5).weight=1;
h.rule(5).connection=1
h.rule(6).antecedent=[6];
h.rule(6).consequent=[6];
h.rule(6).weight=1;
h.rule(6).connection=1
h.rule(7).antecedent=[7];
h.rule(7).consequent=[7];
h.rule(7).weight=1;
h.rule(7).connection=1
ruleedit(h);
%------------------------------------------------------------------------
% CPD para el gasto 3
%------------------------------------------------------------------------
j=newfis('gasto3_fuzzy');
j.input(1).name='GASTO 3 REQUERIDO';
j.input(1).range=[ent3min ent3max];
j.input(1).mf(1).name='al 15%';
j.input(1).mf(1).type='trimf';
j.input(1).mf(1).params=[-((ent3max-ent3min)/6) ent3min ent3min+((ent3max-ent3min)/6)];
j.input(1).mf(2).name='al 30%';
j.input(1).mf(2).type='trimf';
j.input(1).mf(2).params=[ent3min ent3min+((ent3max-ent3min)/6) ent3min+((ent3max-ent3min)/6)*2];
j.input(1).mf(3).name='al 45%';
j.input(1).mf(3).type='trimf';
j.input(1).mf(3).params=[ent3min+((ent3max-ent3min)/6) ent3min+((ent3max-ent3min)/6)*2
ent3min+((ent3max-ent3min)/6)*3];
j.input(1).mf(4).name='al 60%';
j.input(1).mf(4).type='trimf';
j.input(1).mf(4).params=[ent3min+((ent3max-ent3min)/6)*2 ent3min+((ent3max-ent3min)/6)*3
ent3min+((ent3max-ent3min)/6)*4];
j.input(1).mf(5).name='al 75%';
j.input(1).mf(5).type='trimf';
j.input(1).mf(5).params=[ent3min+((ent3max-ent3min)/6)*3 ent3min+((ent3max-ent3min)/6)*4
ent3min+((ent3max-ent3min)/6)*5];
- - 96
j.input(1).mf(6).name='al 90%';
j.input(1).mf(6).type='trimf';
j.input(1).mf(6).params=[ent3min+((ent3max-ent3min)/6)*4 ent3min+((ent3max-ent3min)/6)*5
ent3min+((ent3max-ent3min)/6)*6];
j.input(1).mf(7).name='al 100%';
j.input(1).mf(7).type='trimf';
j.input(1).mf(7).params=[ent3min+((ent3max-ent3min)/6)*5 ent3max ent3max+((ent3max-ent3min)/6)];
figure(21)
plotmf(j,'input',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DEL GASTO 3 DEL SISTEMA')
j.output(1).name='GASTO 3 REAL';
j.output(1).range=[g3min g3max];
j.output(1).mf(1).name='al 15%';
j.output(1).mf(1).type='trimf';
j.output(1).mf(1).params=[-((g3max-g3min)/6) g3min g3min+((g3max-g3min)/6)];
j.output(1).mf(2).name='al 30%';
j.output(1).mf(2).type='trimf';
j.output(1).mf(2).params=[g3min g3min+((g3max-g3min)/6) g3min+((g3max-g3min)/6)*2];
j.output(1).mf(3).name='al 45%';
j.output(1).mf(3).type='trimf';
j.output(1).mf(3).params=[g3min+((g3max-g3min)/6) g3min+((g3max-g3min)/6)*2 g3min+((g3max-
g3min)/6)*3];
j.output(1).mf(4).name='al 60%';
j.output(1).mf(4).type='trimf';
j.output(1).mf(4).params=[g3min+((g3max-g3min)/6)*2 g3min+((g3max-g3min)/6)*3 g3min+((g3max-
g3min)/6)*4];
j.output(1).mf(5).name='al 75%';
j.output(1).mf(5).type='trimf';
j.output(1).mf(5).params=[g3min+((g3max-g3min)/6)*3 g3min+((g3max-g3min)/6)*4 g3min+((g3max-
g3min)/6)*5];
j.output(1).mf(6).name='al 90%';
j.output(1).mf(6).type='trimf';
j.output(1).mf(6).params=[g3min+((g3max-g3min)/6)*4 g3min+((g3max-g3min)/6)*5 g3min+((g3max-
g3min)/6)*6];
j.output(1).mf(7).name='al 100%';
j.output(1).mf(7).type='trimf';
j.output(1).mf(7).params=[g3min+((g3max-g3min)/6)*5 g3max g3max+((g3max-g3min)/6)];
figure(22)
plotmf(j,'output',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DE GASTO TUBERIA 3')
j.rule(1).antecedent=[1];
j.rule(1).consequent=[1];
j.rule(1).weight=1;
j.rule(1).connection=1;
j.rule(2).antecedent=[2];
j.rule(2).consequent=[2];
j.rule(2).weight=1;
j.rule(2).connection=1;
j.rule(3).antecedent=[3];
j.rule(3).consequent=[3];
j.rule(3).weight=1;
j.rule(3).connection=1
- - 97
j.rule(4).antecedent=[4];
j.rule(4).consequent=[4];
j.rule(4).weight=1;
j.rule(4).connection=1
j.rule(5).antecedent=[5];
j.rule(5).consequent=[5];
j.rule(5).weight=1;
j.rule(5).connection=1
j.rule(6).antecedent=[6];
j.rule(6).consequent=[6];
j.rule(6).weight=1;
j.rule(6).connection=1
j.rule(7).antecedent=[7];
j.rule(7).consequent=[7];
j.rule(7).weight=1;
j.rule(7).connection=1
ruleedit(j);
%------------------------------------------------------------------------
% Determinación real de los gastos factor de acoplamiento
%------------------------------------------------------------------------
ent1min_fc=min(entrada1_fc)
ent1max_fc=max(entrada1_fc)
ent2min_fc=min(entrada2_fc)
ent2max_fc=max(entrada2_fc)
ent3min_fc=min(entrada3_fc)
ent3max_fc=max(entrada3_fc)
g1min_fc=min(entrada1_fc)
g1max_fc=max(entrada1_fc)
g2min_fc=min(entrada2_fc)
g2max_fc=max(entrada2_fc)
g3min_fc=min(entrada3_fc)
g3max_fc=max(entrada3_fc)
%------------------------------------------------------------------------
% CPD para el gasto 1 factor de acoplamiento
%------------------------------------------------------------------------
k=newfis('gasto1_fuzzy_fc');
k.input(1).name='GASTO 1 REQUERIDO, FACTOR DE ACOPLAMIENTO';
k.input(1).range=[ent1min_fc ent1max_fc];
k.input(1).mf(1).name='al 15%';
k.input(1).mf(1).type='trimf';
k.input(1).mf(1).params=[-((ent1max_fc-ent1min_fc)/6) ent1min_fc ent1min_fc+((ent1max_fc-
ent1min_fc)/6)];
k.input(1).mf(2).name='al 30%';
k.input(1).mf(2).type='trimf';
k.input(1).mf(2).params=[ent1min_fc ent1min_fc+((ent1max_fc-ent1min_fc)/6) ent1min_fc+((ent1max_fc-
ent1min_fc)/6)*2];
k.input(1).mf(3).name='al 45%';
- - 98
k.input(1).mf(3).type='trimf';
k.input(1).mf(3).params=[ent1min_fc+((ent1max_fc-ent1min_fc)/6) ent1min_fc+((ent1max_fc-
ent1min_fc)/6)*2 ent1min_fc+((ent1max_fc-ent1min_fc)/6)*3];
k.input(1).mf(4).name='al 60%';
k.input(1).mf(4).type='trimf';
k.input(1).mf(4).params=[ent1min_fc+((ent1max_fc-ent1min_fc)/6)*2 ent1min_fc+((ent1max_fc-
ent1min_fc)/6)*3 ent1min_fc+((ent1max_fc-ent1min_fc)/6)*4];
k.input(1).mf(5).name='al 75%';
k.input(1).mf(5).type='trimf';
k.input(1).mf(5).params=[ent1min_fc+((ent1max_fc-ent1min_fc)/6)*3 ent1min_fc+((ent1max_fc-
ent1min_fc)/6)*4 ent1min_fc+((ent1max_fc-ent1min_fc)/6)*5];
k.input(1).mf(6).name='al 90%';
k.input(1).mf(6).type='trimf';
k.input(1).mf(6).params=[ent1min_fc+((ent1max_fc-ent1min_fc)/6)*4 ent1min_fc+((ent1max_fc-
ent1min_fc)/6)*5 ent1min_fc+((ent1max_fc-ent1min_fc)/6)*6];
k.input(1).mf(7).name='al 100%';
k.input(1).mf(7).type='trimf';
k.input(1).mf(7).params=[ent1min_fc+((ent1max_fc-ent1min_fc)/6)*5 ent1max_fc
ent1max_fc+((ent1max_fc-ent1min_fc)/6)];
figure(23)
plotmf(k,'input',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DEL GASTO 1 DEL SISTEMA, FACTOR DE
ACOPLAMIENTO')
k.output(1).name='GASTO 1 REAL, FACTOR DE ACOPLAMIENTO';
k.output(1).range=[g1min_fc g1max_fc];
k.output(1).mf(1).name='al 15%';
k.output(1).mf(1).type='trimf';
k.output(1).mf(1).params=[-((g1max_fc-g1min_fc)/6) g1min_fc g1min_fc+((g1max_fc-g1min_fc)/6)];
k.output(1).mf(2).name='al 30%';
k.output(1).mf(2).type='trimf';
k.output(1).mf(2).params=[g1min_fc g1min_fc+((g1max_fc-g1min_fc)/6) g1min_fc+((g1max_fc-
g1min_fc)/6)*2];
k.output(1).mf(3).name='al 45%';
k.output(1).mf(3).type='trimf';
k.output(1).mf(3).params=[g1min_fc+((g1max_fc-g1min_fc)/6) g1min_fc+((g1max_fc-g1min_fc)/6)*2
g1min_fc+((g1max_fc-g1min_fc)/6)*3];
k.output(1).mf(4).name='al 60%';
k.output(1).mf(4).type='trimf';
k.output(1).mf(4).params=[g1min_fc+((g1max_fc-g1min_fc)/6)*2 g1min_fc+((g1max_fc-g1min_fc)/6)*3
g1min_fc+((g1max_fc-g1min_fc)/6)*4];
k.output(1).mf(5).name='al 75%';
k.output(1).mf(5).type='trimf';
k.output(1).mf(5).params=[g1min_fc+((g1max_fc-g1min_fc)/6)*3 g1min_fc+((g1max_fc-g1min_fc)/6)*4
g1min_fc+((g1max_fc-g1min_fc)/6)*5];
k.output(1).mf(6).name='al 90%';
k.output(1).mf(6).type='trimf';
k.output(1).mf(6).params=[g1min_fc+((g1max_fc-g1min_fc)/6)*4 g1min_fc+((g1max_fc-g1min_fc)/6)*5
g1min_fc+((g1max_fc-g1min_fc)/6)*6];
k.output(1).mf(7).name='al 100%';
k.output(1).mf(7).type='trimf';
k.output(1).mf(7).params=[g1min_fc+((g1max_fc-g1min_fc)/6)*5 g1max_fc g1max_fc+((g1max_fc-
g1min_fc)/6)];
figure(24)
- - 99
plotmf(k,'output',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DE GASTO TUBERIA 1, FACTOR DE
ACOPLAMIENTO')
k.rule(1).antecedent=[1];
k.rule(1).consequent=[1];
k.rule(1).weight=1;
k.rule(1).connection=1;
k.rule(2).antecedent=[2];
k.rule(2).consequent=[2];
k.rule(2).weight=1;
k.rule(2).connection=1;
k.rule(3).antecedent=[3];
k.rule(3).consequent=[3];
k.rule(3).weight=1;
k.rule(3).connection=1
k.rule(4).antecedent=[4];
k.rule(4).consequent=[4];
k.rule(4).weight=1;
k.rule(4).connection=1
k.rule(5).antecedent=[5];
k.rule(5).consequent=[5];
k.rule(5).weight=1;
k.rule(5).connection=1
k.rule(6).antecedent=[6];
k.rule(6).consequent=[6];
k.rule(6).weight=1;
k.rule(6).connection=1
k.rule(7).antecedent=[7];
k.rule(7).consequent=[7];
k.rule(7).weight=1;
k.rule(7).connection=1
ruleedit(k);
%------------------------------------------------------------------------
% CPD para el gasto 2 factor de acoplamiento
%------------------------------------------------------------------------
l=newfis('gasto2_fuzzy_fc');
l.input(1).name='GASTO 2 REQUERIDO, FACTOR DE ACOPLAMIENTO';
l.input(1).range=[ent2min_fc ent2max_fc];
l.input(1).mf(1).name='al 15%';
l.input(1).mf(1).type='trimf';
l.input(1).mf(1).params=[-((ent2max_fc-ent2min_fc)/6) ent2min_fc ent2min_fc+((ent2max_fc-
ent2min_fc)/6)];
l.input(1).mf(2).name='al 30%';
l.input(1).mf(2).type='trimf';
l.input(1).mf(2).params=[ent2min_fc ent2min_fc+((ent2max_fc-ent2min_fc)/6) ent2min_fc+((ent2max_fc-
ent2min_fc)/6)*2];
l.input(1).mf(3).name='al 45%';
l.input(1).mf(3).type='trimf';
l.input(1).mf(3).params=[ent2min_fc+((ent2max_fc-ent2min_fc)/6) ent2min_fc+((ent2max_fc-
ent2min_fc)/6)*2 ent2min_fc+((ent2max_fc-ent2min_fc)/6)*3];
l.input(1).mf(4).name='al 60%';
l.input(1).mf(4).type='trimf';
- - 100
l.input(1).mf(4).params=[ent2min_fc+((ent2max_fc-ent2min_fc)/6)*2 ent2min_fc+((ent2max_fc-
ent2min_fc)/6)*3 ent2min_fc+((ent2max_fc-ent2min_fc)/6)*4];
l.input(1).mf(5).name='al 75%';
l.input(1).mf(5).type='trimf';
l.input(1).mf(5).params=[ent2min_fc+((ent2max_fc-ent2min_fc)/6)*3 ent2min_fc+((ent2max_fc-
ent2min_fc)/6)*4 ent2min_fc+((ent2max_fc-ent2min_fc)/6)*5];
l.input(1).mf(6).name='al 90%';
l.input(1).mf(6).type='trimf';
l.input(1).mf(6).params=[ent2min_fc+((ent2max_fc-ent2min_fc)/6)*4 ent2min_fc+((ent2max_fc-
ent2min_fc)/6)*5 ent2min_fc+((ent2max_fc-ent2min_fc)/6)*6];
l.input(1).mf(7).name='al 100%';
l.input(1).mf(7).type='trimf';
l.input(1).mf(7).params=[ent2min_fc+((ent2max_fc-ent2min_fc)/6)*5 ent2max_fc
ent2max_fc+((ent2max_fc-ent2min_fc)/6)];
figure(25)
plotmf(l,'input',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DEL GASTO 2 DEL SISTEMA, FACTOR DE
ACOPLAMIENTO')
l.output(1).name='GASTO 2 REAL, FACTOR DE ACOPLAMIENTO';
l.output(1).range=[g2min_fc g2max_fc];
l.output(1).mf(1).name='al 15%';
l.output(1).mf(1).type='trimf';
l.output(1).mf(1).params=[-((g2max_fc-g2min_fc)/6) g2min_fc g2min_fc+((g2max_fc-g2min_fc)/6)];
l.output(1).mf(2).name='al 30%';
l.output(1).mf(2).type='trimf';
l.output(1).mf(2).params=[g2min_fc g2min_fc+((g2max_fc-g2min_fc)/6) g2min_fc+((g2max_fc-
g2min_fc)/6)*2];
l.output(1).mf(3).name='al 45%';
l.output(1).mf(3).type='trimf';
l.output(1).mf(3).params=[g2min_fc+((g2max_fc-g2min_fc)/6) g2min_fc+((g2max_fc-g2min_fc)/6)*2
g2min_fc+((g2max_fc-g2min_fc)/6)*3];
l.output(1).mf(4).name='al 60%';
l.output(1).mf(4).type='trimf';
l.output(1).mf(4).params=[g2min_fc+((g2max_fc-g2min_fc)/6)*2 g2min_fc+((g2max_fc-g2min_fc)/6)*3
g2min_fc+((g2max_fc-g2min_fc)/6)*4];
l.output(1).mf(5).name='al 75%';
l.output(1).mf(5).type='trimf';
l.output(1).mf(5).params=[g2min_fc+((g2max_fc-g2min_fc)/6)*3 g2min_fc+((g2max_fc-g2min_fc)/6)*4
g2min_fc+((g2max_fc-g2min_fc)/6)*5];
l.output(1).mf(6).name='al 90%';
l.output(1).mf(6).type='trimf';
l.output(1).mf(6).params=[g2min_fc+((g2max_fc-g2min_fc)/6)*4 g2min_fc+((g2max_fc-g2min_fc)/6)*5
g2min_fc+((g2max_fc-g2min_fc)/6)*6];
l.output(1).mf(7).name='al 100%';
l.output(1).mf(7).type='trimf';
l.output(1).mf(7).params=[g2min_fc+((g2max_fc-g2min_fc)/6)*5 g2max_fc g2max_fc+((g2max_fc-
g2min_fc)/6)];
figure(26)
plotmf(l,'output',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DE GASTO TUBERIA 1, FACTOR DE
ACOPLAMIENTO')
l.rule(1).antecedent=[1];
- - 101
l.rule(1).consequent=[1];
l.rule(1).weight=1;
l.rule(1).connection=1;
l.rule(2).antecedent=[2];
l.rule(2).consequent=[2];
l.rule(2).weight=1;
l.rule(2).connection=1;
l.rule(3).antecedent=[3];
l.rule(3).consequent=[3];
l.rule(3).weight=1;
l.rule(3).connection=1
l.rule(4).antecedent=[4];
l.rule(4).consequent=[4];
l.rule(4).weight=1;
l.rule(4).connection=1
l.rule(5).antecedent=[5];
l.rule(5).consequent=[5];
l.rule(5).weight=1;
l.rule(5).connection=1
l.rule(6).antecedent=[6];
l.rule(6).consequent=[6];
l.rule(6).weight=1;
l.rule(6).connection=1
l.rule(7).antecedent=[7];
l.rule(7).consequent=[7];
l.rule(7).weight=1;
l.rule(7).connection=1
ruleedit(l);
%------------------------------------------------------------------------
% CPD para el gasto 3 factor de acoplamiento
%------------------------------------------------------------------------
m=newfis('gasto3_fuzzy_fc');
m.input(1).name='GASTO 3 REQUERIDO, FACTOR DE ACOPLAMIENTO';
m.input(1).range=[ent3min_fc ent3max_fc];
m.input(1).mf(1).name='al 15%';
m.input(1).mf(1).type='trimf';
m.input(1).mf(1).params=[-((ent3max_fc-ent3min_fc)/6) ent3min_fc ent3min_fc+((ent3max_fc-
ent3min_fc)/6)];
m.input(1).mf(2).name='al 30%';
m.input(1).mf(2).type='trimf';
m.input(1).mf(2).params=[ent3min_fc ent3min_fc+((ent3max_fc-ent3min_fc)/6) ent3min_fc+((ent3max_fc-
ent3min_fc)/6)*2];
m.input(1).mf(3).name='al 45%';
m.input(1).mf(3).type='trimf';
m.input(1).mf(3).params=[ent3min_fc+((ent3max_fc-ent3min_fc)/6) ent3min_fc+((ent3max_fc-
ent3min_fc)/6)*2 ent3min_fc+((ent3max_fc-ent3min_fc)/6)*3];
m.input(1).mf(4).name='al 60%';
m.input(1).mf(4).type='trimf';
m.input(1).mf(4).params=[ent3min_fc+((ent3max_fc-ent3min_fc)/6)*2 ent3min_fc+((ent3max_fc-
ent3min_fc)/6)*3 ent3min_fc+((ent3max_fc-ent3min_fc)/6)*4];
m.input(1).mf(5).name='al 75%';
m.input(1).mf(5).type='trimf';
- - 102
m.input(1).mf(5).params=[ent3min_fc+((ent3max_fc-ent3min_fc)/6)*3 ent3min_fc+((ent3max_fc-
ent3min_fc)/6)*4 ent3min_fc+((ent3max_fc-ent3min_fc)/6)*5];
m.input(1).mf(6).name='al 90%';
m.input(1).mf(6).type='trimf';
m.input(1).mf(6).params=[ent3min_fc+((ent3max_fc-ent3min_fc)/6)*4 ent3min_fc+((ent3max_fc-
ent3min_fc)/6)*5 ent3min_fc+((ent3max_fc-ent3min_fc)/6)*6];
m.input(1).mf(7).name='al 100%';
m.input(1).mf(7).type='trimf';
m.input(1).mf(7).params=[ent3min_fc+((ent3max_fc-ent3min_fc)/6)*5 ent3max_fc
ent3max_fc+((ent3max_fc-ent3min_fc)/6)];
figure(27)
plotmf(m,'input',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DEL GASTO 3 DEL SISTEMA, FACTOR DE
ACOPLAMIENTO')
m.output(1).name='GASTO 3 REAL, FACTOR DE ACOPLAMIENTO';
m.output(1).range=[g3min_fc g3max_fc];
m.output(1).mf(1).name='al 15%';
m.output(1).mf(1).type='trimf';
m.output(1).mf(1).params=[-((g3max_fc-g3min_fc)/6) g3min_fc g3min_fc+((g3max_fc-g3min_fc)/6)];
m.output(1).mf(2).name='al 30%';
m.output(1).mf(2).type='trimf';
m.output(1).mf(2).params=[g3min_fc g3min_fc+((g3max_fc-g3min_fc)/6) g3min_fc+((g3max_fc-
g3min_fc)/6)*2];
m.output(1).mf(3).name='al 45%';
m.output(1).mf(3).type='trimf';
m.output(1).mf(3).params=[g3min_fc+((g3max_fc-g3min_fc)/6) g3min_fc+((g3max_fc-g3min_fc)/6)*2
g3min_fc+((g3max_fc-g3min_fc)/6)*3];
m.output(1).mf(4).name='al 60%';
m.output(1).mf(4).type='trimf';
m.output(1).mf(4).params=[g3min_fc+((g3max_fc-g3min_fc)/6)*2 g3min_fc+((g3max_fc-g3min_fc)/6)*3
g3min_fc+((g3max_fc-g3min_fc)/6)*4];
m.output(1).mf(5).name='al 75%';
m.output(1).mf(5).type='trimf';
m.output(1).mf(5).params=[g3min_fc+((g3max_fc-g3min_fc)/6)*3 g3min_fc+((g3max_fc-g3min_fc)/6)*4
g3min_fc+((g3max_fc-g3min_fc)/6)*5];
m.output(1).mf(6).name='al 90%';
m.output(1).mf(6).type='trimf';
m.output(1).mf(6).params=[g3min_fc+((g3max_fc-g3min_fc)/6)*4 g3min_fc+((g3max_fc-g3min_fc)/6)*5
g3min_fc+((g3max_fc-g3min_fc)/6)*6];
m.output(1).mf(7).name='al 100%';
m.output(1).mf(7).type='trimf';
m.output(1).mf(7).params=[g3min_fc+((g3max_fc-g3min_fc)/6)*5 g3max_fc g3max_fc+((g3max_fc-
g3min_fc)/6)];
figure(28)
plotmf(m,'output',1)
title('UNIVERSO DE DISCURSO PARA LA DEMANDA DE GASTO TUBERIA 3, FACTOR DE
ACOPLAMIENTO')
m.rule(1).antecedent=[1];
m.rule(1).consequent=[1];
m.rule(1).weight=1;
m.rule(1).connection=1;
m.rule(2).antecedent=[2];
- - 103
m.rule(2).consequent=[2];
m.rule(2).weight=1;
m.rule(2).connection=1;
m.rule(3).antecedent=[3];
m.rule(3).consequent=[3];
m.rule(3).weight=1;
m.rule(3).connection=1
m.rule(4).antecedent=[4];
m.rule(4).consequent=[4];
m.rule(4).weight=1;
m.rule(4).connection=1
m.rule(5).antecedent=[5];
m.rule(5).consequent=[5];
m.rule(5).weight=1;
m.rule(5).connection=1
m.rule(6).antecedent=[6];
m.rule(6).consequent=[6];
m.rule(6).weight=1;
m.rule(6).connection=1
m.rule(7).antecedent=[7];
m.rule(7).consequent=[7];
m.rule(7).weight=1;
m.rule(7).connection=1
ruleedit(m);
disp('ejecute el programa de gastos y gastos fc')
%------------------------------------------------------------------------
% RESULTADOS FACTOR DE ACOPLAMIENTO
%------------------------------------------------------------------------
%------------------------------------------------------------------------
% DEMANDA GASTO PRESIÓN, FACTOR DE ACOPLAMIENTO
%------------------------------------------------------------------------
figure(29)
subplot(311)
plot(corriente_total_fc,'r')
axis([0, 51, 0, 1000])
xlabel('Tiempo')
ylabel('Demanda de gasto')
title('DEMANDA DE GASTO DEL SISTEMA, FACTOR DE ACOPLAMIENTO CON CPD')
grid on
subplot(312)
voltreq_fc=voltaje_requerido_fc(:,1:51);
plot(voltreq_fc,'b'), hold on
axis([0, 51, 0, 1000])
xlabel('Tiempo')
Ylabel('Demanda de presión')
title('DEMANDA DE PRESIÓN DEL SISTEMA, FACTOR DE ACOPLAMIENTO CON CPD')
grid on
subplot(313)
plot(corriente_total_fc,'r'), hold on
plot(voltreq_fc,'b'), hold on
axis([0, 51, 0 1000])
- - 104
xlabel('Tiempo')
ylabel('Demanda Gasto-Presión')
title('DEMANDA GASTO PRESIÓN, FACTOR DE ACOPLAMIENTO CON CPD')
grid on
%------------------------------------------------------------------------
% Valvula 1 Factor coupling
%------------------------------------------------------------------------
figure(30)
subplot(231);
graval1_fc=valvula1_fc(:,1:51);
plot(graval1_fc,'g')
title('VÁLVULA 1 DEFINIDA POR EL CPD, "FACTOR DE ACOPLAMIENTO')
xlabel('Tiempo')
ylabel('Comportamiento de la valvula 1, factor de acoplamiento')
grid on
subplot(232);
plot(valvula_pid_1_fc,'r')
title('VÁLVULA 1 DEFINIDA POR EL EXPERTO, FACTOR DE ACOPLAMIENTO')
xlabel('Tiempo')
ylabel('Comportamiento de la válvula 1, factor de acoplamiento')
grid on
subplot(233)
plot(graval1_fc,'r'), hold on
plot(valvula_pid_1_fc,'b')
title('VÁLVULA 1 CON AMBOS CONTROLADORES, FACTOR DE ACOPLAMIENTO')
xlabel('Tiempo')
ylabel('Comportamiento de la valvula 1, factor de acoplamiento')
grid on
subplot(234);
gracor1_fc=corriente1_fuzzy_fc(:,1:51);
plot(gracor1_fc,'g')
title('GASTO 1 DEFINIDO POR EL CPD')
xlabel('Tiempo')
ylabel('Comportamiento del gasto 1')
grid on
subplot(235);
plot(corriente1_fc,'r')
title('GASTO 1 DEFINIDO POR EL EXPERTO')
xlabel('Tiempo')
ylabel('Comportamiento del gasto 1')
grid on
subplot(236)
plot(gracor1_fc,'r'), hold on
plot(corriente1_fc,'b')
title('GASTO 1 DEFINIDO POR EL CPD Y EL EXPERTO')
xlabel('Tiempo')
ylabel('Comportamiento de la válvula 1')
grid on
- - 105
%------------------------------------------------------------------------
% Valvula 2 Factor coupling
%------------------------------------------------------------------------
figure(31)
subplot(231);
graval2_fc=valvula2_fc(:,1:51);
plot(graval2_fc,'r')
title('VÁLVULA 2 DEFINIDA POR EL CPD, "FACTOR DE ACOPLAMIENTO')
xlabel('Tiempo')
ylabel('Comportamiento de la valvula 2, factor de acoplamiento')
axis([0 50 3 3.4])
grid on
subplot(232);
plot(valvula_pid_2_fc,'b')
title('VÁLVULA 2 DEFINIDA POR EL EXPERTO, FACTOR DE ACOPLAMIENTO')
xlabel('Tiempo')
ylabel('Comportamiento de la valvula 2, factor de acoplamiento')
axis([0 50 3 3.4])
grid on
subplot(233)
plot(graval2_fc,'r'), hold on
plot(valvula_pid_2_fc,'b')
title('VÁLVULA 2 CON AMBOS CONTROLADORES, FACTOR DE ACOPLAMIENTO')
xlabel('Tiempo')
ylabel('Comportamiento de la valvula 2, factor de acoplamiento')
axis([0 50 3 3.4])
grid on
subplot(234);
gracor2_fc=corriente2_fuzzy_fc(:,1:51);
plot(gracor2_fc,'r')
title('GASTO 2 DEFINIDO POR EL CPD')
xlabel('Tiempo')
ylabel('Comportamiento del gasto 2')
axis([0 50 290 330])
grid on
subplot(235);
plot(corriente2_fc,'b')
title('GASTO 2 DEFINIDO POR EL EXPERTO')
xlabel('Tiempo')
ylabel('Comportamiento del gasto 2')
axis([0 50 290 330])
grid on
subplot(236)
plot(gracor2_fc,'r'), hold on
plot(corriente2_fc,'b')
title('GASTO 2 DEFINIDO POR EL CPD Y EXPERTO')
xlabel('Tiempo')
ylabel('Comportamiento de la valvula 2')
axis([0 50 290 330])
grid on
- - 106
%------------------------------------------------------------------------
% Valvula 3 Factor coupling
%------------------------------------------------------------------------
figure(32)
subplot(231);
graval3_fc=valvula3_fc(:,1:51);
plot(graval3_fc,'g')
title('VÁLVULA 3 DEFINIDA POR EL CPD, "FACTOR DE ACOPLAMIENTO')
xlabel('Tiempo')
ylabel('Comportamiento de la valvula 3, factor de acoplamiento')
grid on
subplot(232);
plot(valvula_pid_3_fc,'r')
title('VÁLVULA 3 DEFINIDA POR EL EXPERTO, FACTOR DE ACOPLAMIENTO')
xlabel('Tiempo')
ylabel('Comportamiento de la valvula 3, factor de acoplamiento')
grid on
subplot(233)
plot(graval3_fc,'r'), hold on
plot(valvula_pid_3_fc,'b')
title('VÁLVULA 3 CON AMBOS CONTROLADORES, FACTOR DE ACOPLAMIENTO')
xlabel('Tiempo')
ylabel('Comportamiento de la valvula 3, factor de acoplamiento')
grid on
subplot(234);
gracor3_fc=corriente3_fuzzy_fc(:,1:51);
plot(gracor3_fc,'g')
title('GASTO 3 DEFINIDO POR EL CPD')
xlabel('Tiempo')
ylabel('Comportamiento del gasto 3')
grid on
subplot(235);
plot(corriente3_fc,'r')
title('GASTO 3 DEFINIDO POR EL EXPERTO')
xlabel('Tiempo')
ylabel('Comportamiento del gasto 3')
grid on
subplot(236)
plot(gracor3_fc,'r'), hold on
plot(corriente3_fc,'b')
title('GASTO 3 DEFINIDO POR EL CPD Y EL EXPERTO')
xlabel('Tiempo')
ylabel('Comportamiento de la válvula 3')
grid on
%------------------------------------------------------------------------
% Resultados del experto y del CPD factor coupling
%------------------------------------------------------------------------
figure(33)
%subplot(311)
- - 107
plot(referencia1,'r'), hold on
plot(referencia2,'b'), hold on
plot(referencia3,'g'), hold on
axis([0 51 0 550])
xlabel('Tiempo')
ylabel('Gasto requerido, lts/min')
title('REFERENCIA DE GASTO DEL SISTEMA, CAMBIO EN LA REFERENCIA 1')
grid on
figure(34)
%subplot(312)
plot(entrada1_fc,'r'), hold on
plot(entrada2_fc,'b'), hold on
plot(entrada3_fc,'g'), hold on
axis([0 51 0 550])
xlabel('Tiempo')
ylabel('Flujo requerido, lts/min')
title('RESPUESTA DEL EXPERTO ANTE EL FACTOR DE ACOPLAMIENTO PROPUESTO')
grid on
figure(35)
%subplot(313)
gasto1fc=gasto1_fc(:,1:51);
gasto2fc=gasto2_fc(:,1:51);
gasto3fc=gasto3_fc(:,1:51);
plot(gasto1fc,'r'), hold on
plot(gasto2fc,'b'), hold on
plot(gasto3fc,'g'), hold on
axis([0 51 0 550])
xlabel('Tiempo')
ylabel('Flujo requerido, lts/min')
title('RESPUESTA DE CPD ANTE EL FACTOR DE ACOPLAMIENTO PROPUESTO')
grid on
%------------------------------------------------------------------------
% RESULTADOS DEL DESACOPLAMIENTO TOTAL
%------------------------------------------------------------------------
%------------------------------------------------------------------------
% Demanda de gasto-presión del sistema DESACOPLAMIENTO TOTAL
%------------------------------------------------------------------------
figure(36)
subplot(311)
plot(corriente_total,'r')
axis([0, 51, 0, 1000])
xlabel('tiempo')
ylabel('lts/min')
title('DEMANDA DE GASTO DEL SISTEMA, DESACOPLAMIENTO TOTAL')
grid on
subplot(312)
voltreq=voltaje_requerido(:,1:51);
plot(voltreq,'b')
axis([0, 51, 0, 1000])
xlabel('tiempo')
Ylabel('Presión requerida')
title('PRESIÓN REQUERIDA')
- - 108
grid on
subplot(313)
plot(corriente_total,'r'), hold on
plot(voltreq,'b')
axis([0, 51, 0, 1000])
xlabel('tiempo')
ylabel('Demanda Gasto-Presión')
title('DEMANDA GASTO PRESIÓN')
grid on
%------------------------------------------------------------------------
% ENTRADAS DE REFERENCIA, RESPUESTA DEL EXPERTO
%------------------------------------------------------------------------
figure (37)
%subplot(121)
plot(entrada1,'r'), hold on
plot(entrada2,'b'), hold on
plot(entrada3,'g'), hold on
axis([0, 51, 50, 550])
xlabel('Tiempo')
ylabel('Gasto requerido, lts/min')
title('REFERENCIA DE GASTO DEL SISTEMA, lts/min')
grid on
figure(38)
%subplot(122)
plot(corriente1,'r'), hold on
plot(corriente2,'b'), hold on
plot(corriente3,'g'), hold on
axis([0, 51, 50, 550])
xlabel('Tiempo')
ylabel('Gasto requerido')
title('RESPUESTA DEL "EXPERTO"')
grid on
%------------------------------------------------------------------------
% Informe experto factor de acoplamiento
%------------------------------------------------------------------------
figure(39)
plot(E1_fc,'r')
xlabel('Tiempo')
ylabel('Error de gasto 1 ante factor de acoplamiento')
title('ERROR DE GASTO 1 ANTE FACTOR DE ACOPLAMIENTO DEL 50%')
grid on
figure(40)
plot(E2_fc,'g')
xlabel('Tiempo')
ylabel('Error de gasto 2 ante factor de acoplamiento')
title('ERROR DE GASTO 2 ANTE FACTOR DE ACOPLAMIENTO DEL 30 %')
grid on
figure(41)
plot(E3_fc,'b')
xlabel('Tiempo')
- - 109
ylabel('Error de gasto 3 ante factor de acoplamiento')
title('ERROR DE GASTO 3 ANTE FACTOR DE ACOPLAMIENTO DEL 20%')
grid on
%------------------------------------------------------------------------
% Conocimiento experto ERROR desacoplamiento total
%------------------------------------------------------------------------
figure(42)
plot(E1_td,'r')
xlabel('Tiempo')
ylabel('Error de gasto 1')
axis([0 51 -0.5 3.5])
title('ERROR DE GASTO 1')
grid on
figure(43)
plot(E2_td,'g')
xlabel('Tiempo')
ylabel('Error de gasto 2')
axis([0 51 -0.5 1])
title('ERROR DE GASTO 2')
grid on
figure(44)
plot(E3_td,'b')
xlabel('Tiempo')
ylabel('Error de gasto 3')
axis([0 51 -0.5 1])
title('ERROR DE GASTO 3')
grid on
%------------------------------------------------------------------------
% Deamanda gasto-presión desacoplamiento total
%------------------------------------------------------------------------
figure(60)
subplot(311)
plot(entrada1,'r'), hold on
plot(entrada2,'b'), hold on
plot(entrada3,'m'), hold on
axis([0, 51, 0, 550])
xlabel('Tiempo')
ylabel('Referencia de gasto, lts/min')
title('REFERENCIA DE GASTO DEL SISTEMA, lts/min')
grid on
subplot(312)
voltreq=voltaje_requerido(:,1:51);
plot(corriente1,'r'), hold on
plot(corriente2,'b'), hold on
plot(corriente3,'m'), hold on
axis([0, 51, 0, 550])
xlabel('Tiempo')
Ylabel('Respuesta del "experto", lts/min')
title('RESPUESTA DEL "EXPERTO, lts/min"')
grid on
- - 110
subplot(313)
tub1=gasto1(:,1:51);
tub2=gasto2(:,1:51);
tub3=gasto3(:,1:51);
plot(tub1,'r'), hold on
plot(tub2,'b'), hold on
plot(tub3,'m'), hold on
axis([0, 51, 0, 550])
xlabel('Tiempo')
ylabel('Respuesta CPD, lts/min')
title('RESPUESTA DEL CPD, lts/min')
grid on
figure(61)
tub1=gasto1(:,1:51);
tub2=gasto2(:,1:51);
tub3=gasto3(:,1:51);
plot(tub1,'r'), hold on
plot(tub2,'b'), hold on
plot(tub3,'m'), hold on
axis([0, 51, 0, 550])
xlabel('Tiempo')
ylabel('Respuesta CPD, lts/min')
title('RESPUESTA DEL CPD, lts/min')
grid on
%------------------------------------------------------------------------
% Respuestas para el desacoplamiento parcial
%------------------------------------------------------------------------
figure(62)
subplot(311)
plot(entrada1_fc,'r'), hold on
plot(entrada2_fc,'b'), hold on
plot(entrada3_fc,'m'), hold on
axis([0, 51, 0, 550])
xlabel('time')
ylabel('lts/seg ')
title('FLOW REFERENCE, COUPLING FACTOR')
grid on
subplot(312)
plot(corriente1_fc,'r'), hold on
plot(corriente2_fc,'b'), hold on
plot(corriente3_fc,'m'), hold on
axis([0, 51, 0, 550])
xlabel('time')
Ylabel('Proportional response, coupling factor')
title('EXPERT RESPONSE, COUPLING FACTOR"')
grid on
subplot (313)
tub1=gasto1_fc(:,1:51);
tub2=gasto2_fc(:,1:51);
tub3=gasto3_fc(:,1:51);
plot(tub1,'r'), hold on
plot(tub2,'b'), hold on
- - 111
plot(tub3,'m'), hold on
axis([0, 51, 0, 550])
xlabel('tiempo')
ylabel('lts/seg')
title('RESPUESTA CPD, FACTOR DE ACOPLAMIENTO')
grid on
top related