viernes, 29 de mayo de 2015
jueves, 28 de mayo de 2015
FUNCIÓN SUGENO PARA LEVITADOR MAGNETICO
A continuación presentamos todas las programaciones y gráficas de la función sugeno del proceso del levitado magnético:
Función Complemento de Caído con su respectiva programación.
Función Complemento de Lejos con su respectiva programación.
Función Complemento de Centrado con su respectiva programación.
Función Complemento de pegado con su respectiva programación.
Se genera la gráfica de todos los complementos.
FUNCIÓN YAGER PARA LEVITADOR MAGNÉTICO
La función yager esta dada para cada función miembro de la siguiente forma:
Función Complemento de Caído con su respectiva programación.
Función Complemento de Lejos con su respectiva programación.
Función Complemento de Centrado con su respectiva programación.
Función Complemento de Pegado con su respectiva programación.
Se genera la gráfica de todos los complementos.
viernes, 8 de mayo de 2015
Grafica Triangulo Python
A continuación se presenta el programa para realizar satisfactoriamente la función de un triangulo en Python, en este nuevo programa se incorpora la unión de dos funciones, graficando de mejor manera la parte fuzzy de un controlador difuso.
import triangulo
caido = triangulo(center=0, b1=0, b2=3, name='Caido')
lejos = triangulo(center=5, b1=3, b2=1, name='Lejos')
centra = triangulo(center=6, b1=5, b2=1, name='Centrado')
pegado = triangulo(center=9, b1=(2.8), b2=3, name='Pegado')
rimport union f = union.fuzzyunion(ca,le,ce,pe)
ca.fastplot()
le.fastplot()
ce.fastplot()
pe.fastplot()
f.fastplot()
Unión de funciones.
domingo, 8 de marzo de 2015
Funciones Matemáticas en Python.
¿Que es Python?
Python es un gran lenguaje que puede servir para desarrollar fácilmente tanto aplicaciones pequeñas como aplicaciones de gran embergadura. Entre muchas características que hacen de Python un gran lenguaje de programación acá encontramos las tres principales:
- Alto nivel - Ya que su sintaxis es sencilla, lo hace un gran lenguaje para aprender a programar por primera vez. A su vez facilita el desarrollo de aplicaciones, ya que acorta el número de líneas de código a desarrollar con respecto a otros lenguajes de programación.
- Multipropósito - Puede ser usado para desarrollar tanto scripts sencillos como para desarrollar sitios web dinámicos.
- Posee una gran librería pre-instalada de apoyo - Cabe la posibilidad que dentro de la librería ya estén desarrolladas muchas de las cosas comunes que quieras hacer, así nos evitamos programar un módulo desde cero.
Funciones.
Los programas.
Cosenoidal.
In [1]: import numpy as np
...: import matplotlib.pyplot as plt
...:
...: x=np.arange(0,10,0.1)
...: y=25*np.cos(2*x)-x**2+20*x #f(x)=25cos(2x)-x^2+10x
...: plt.plot(x,y)
...: plt.show()
...:
In [2]: import numpy as np
...: import matplotlib.pyplot as plt
...:
...: x=np.arange(0,10,0.1)
...: y=25*np.cos(2*x)-x**2+10*x #f(x)=25cos(2x)-x^2+10x
...: plt.plot(x,y)
...: plt.show()
...:
In [3]:
Gaussiana.
In [1]: import numpy as np
...: import matplotlib.pyplot as plt
...:
...: x=np.arange(0,10,0.1)
...: y=1*np.sin(1*x)-x**2+10*x #f(x)=1sin(1x)-x^2+10x
...: plt.plot(x,y)
...: plt.show()
...:
In [2]: import numpy as np
...: import matplotlib.pyplot as plt
...:
...: x=np.arange(0,10,0.1)
...: y=1*np.sin(1*x)-x**2+10*x #f(x)=1sin(1x)-x^2+10x
...: plt.plot(x,y,'r')
...: plt.show()
...:
In [3]:
Trapecio.
In [1]: from pylab import *
...: import matplotlib.pyplot as plt
...:
...:
...: def plot_trapecio(lista_de_x,h,a,b,c,d):
...:
...: pendiente_1 = h/(b-a)
...: pendiente_2 = -h/(d-c)
...:
...: y = []
...: for x in lista_de_x:
...:
...:
...: if x<=a:
...: y.append(0)
...: elif x>a and x<b:
...: y.append( (x-a)*pendiente_1 ) # (h*(x-a)) / (b-a)
...: elif x>=b and x<=c:
...: y.append(h)
...: elif x>c and x<d:
...: y.append((x-d)*pendiente_2) # (-h*(x-d)) / (d-c)
...: else:
...: y.append(0)
...:
...: figure()
...: plot(lista_de_x,y,'r')
...: xlabel('X')
...: if b!=c:
...: ylabel('Trapecio')
...: title('Función Miembro Trapezoidal')
...: else:
...: ylabel('Triángulo')
...: title('Función Miembro Triangular')
...: show()
...:
...: def plot_triangulo(lista_de_x,h,a,b,d):
...: plot_trapecio(lista_de_x,h,a,b,b,d) #El triangulo es un caso especial de trapecio donde B == C
...:
...:
...:
...: #EL PROGRAMA ARRANCA AQUI!
...: puntos_en_x = linspace (0,10,100)
...:
...:
...:
...: h = 1
...: a = 2
...: b = 4
...: c = 5.5
...: d = 8.3
...:
...: plot_trapecio(puntos_en_x,h,a,b,c,d)
...: plot_triangulo(puntos_en_x,h,a,b,d)
...:
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-1-625d61e7da31> in <module>()
50 d = 8.3
51
---> 52 plot_trapecio(puntos_en_x,h,a,b,c,d)
53 plot_triangulo(puntos_en_x,h,a,b,d)
54
<ipython-input-1-625d61e7da31> in plot_trapecio(lista_de_x, h, a, b, c, d)
28 if b!=c:
29 ylabel('Trapecio')
---> 30 title('Función Miembro Trapezoidal')
31 else:
32 ylabel('Triángulo')
C:\Anaconda\lib\site-packages\matplotlib\pyplot.pyc in title(s, *args, **kwargs)
1342
1343 """
-> 1344 l = gca().set_title(s, *args, **kwargs)
1345 draw_if_interactive()
1346 return l
C:\Anaconda\lib\site-packages\matplotlib\axes\_axes.pyc in set_title(self, label, fontdict, loc, **kwargs)
140 'verticalalignment': 'baseline',
141 'horizontalalignment': loc.lower()}
--> 142 title.set_text(label)
143 title.update(default)
144 if fontdict is not None:
C:\Anaconda\lib\site-packages\matplotlib\text.pyc in set_text(self, s)
967 ACCEPTS: string or anything printable with '%s' conversion.
968 """
--> 969 self._text = '%s' % (s,)
970
971 @staticmethod
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)
In [2]: from pylab import *
...: import matplotlib.pyplot as plt
...: import math
...:
...:
...:
...:
...: def plot_pico(lista_de_x,h,b,c):
...: y = []
...:
...: for x in lista_de_x:
...: y.append(math.e ** -abs( c * (x - b)))
...:
...: figure()
...: plot(lista_de_x,y,'r')
...: xlabel('x')
...: ylabel('pico')
...: title('Funcion pico')
...: show()
...:
...:
...:
...:
...: #EL PROGRAMA ARRANCA AQUI!
...: puntos_en_x = linspace (0,10,100)
...:
...: h = 1
...: b = 6
...: c = 2
...:
...: plot_pico(puntos_en_x,h,b,c)
...:
Sigmoide.
In [1]: import numpy as np
...: import pylab
...: from scipy.optimize import curve_fit
...:
...: def sigmoid(x, x0, k, a, c):
...: y = a / (1 + np.exp(-k*(x-x0))) + c
...: return y
...:
...: xdata = np.array([0.0, 1.0, 3.0, 4.3, 7.0, 8.0, 8.5, 10.0,
...: 12.0, 14.0])
...: ydata = np.array([0.11, 0.12, 0.14, 0.21, 0.83, 1.45, 1.78, 1.9,
...: 1.98, 2.02])
...:
...: popt, pcov = curve_fit(sigmoid, xdata, ydata)
...: print "Fit:"
...: print "x0 =", popt[0]
...: print "k =", popt[1]
...: print "a =", popt[2]
...: print "c =", popt[3]
...: print "Asymptotes are", popt[3], "and", popt[3] + popt[2]
...:
...: x = np.linspace(-1, 15, 50)
...: y = sigmoid(x, *popt)
...:
...:
...: pylab.plot(xdata, ydata, 'o', label='data')
...: pylab.plot(x,y, label='fit')
...: pylab.ylim(0, 2.05)
...: pylab.legend(loc='upper left')
...: pylab.grid(True)
...: pylab.show()
...:
Gráficas.
Trapecio.
Pico.
Gausiana.
Coseniodal.
Sigmoide.
miércoles, 4 de marzo de 2015
Simulaciones
Empezamos entrando las variables de entrada y de salida en FIS de MatLab.
Una vez definidas nuestras variables de entrada y salida, procedemos a dar las reglas y condiciones de nuestro control fuzzy.
Ya definido las condiciones y reglas de nuestro controlador, y las variables de entradas y salidas podemos visualizar la simulación correspondiente.
INTEGRANTES DEL GRUPO
BRIAN ESTIVEN BULLA CARO
- Encargado de
la investigación, la fusificación y una parte de la exposición
-
Como líder, organizo las labores que debíancumplir
los integrantes del equipo.
LUIS ANDRES ALVAREZ SALGUERO
- Encargado de hacer simulaciones y aproximaciones para encontrar el punto de equilibrio del sistema.
CARLOS FERNANDO CANGREJO PARRA
- Encargado del diseño y organización del blog, definir las reglas del controlador y simulaciones .
ANDREA MARCELA
ESCOBAR H (Lider)
- Encargada de investigación, diseño inicial del blog y colaboradora en el diseño de la fusificación.
CAROLINA RUIZ ARTEAGA.
- Definir las variables de entrada y porcentajes de salida, ayudar a definir las reglas del controlador.
BRIAN ESTIVEN BULLA CARO
- Encargado de la investigación, la fusificación y una parte de la exposición
- Como líder, organizo las labores que debíancumplir los integrantes del equipo.
LUIS ANDRES ALVAREZ SALGUERO
- Encargado de hacer simulaciones y aproximaciones para encontrar el punto de equilibrio del sistema.
CARLOS FERNANDO CANGREJO PARRA
- Encargado del diseño y organización del blog, definir las reglas del controlador y simulaciones .
ANDREA MARCELA
ESCOBAR H (Lider)
ESCOBAR H (Lider)
- Encargada de investigación, diseño inicial del blog y colaboradora en el diseño de la fusificación.
CAROLINA RUIZ ARTEAGA.
- Definir las variables de entrada y porcentajes de salida, ayudar a definir las reglas del controlador.
martes, 3 de marzo de 2015
LEVITADOR MAGNÉTICO
PLANTEAMIENTO DEL PROBLEMA
Se desea
controlar la levitacion de una esfera.
La levitacion magnética es el proceso por el
cual se hace flotar un objeto metálico utilizando un campo electromagnético.
¿Cómo
lograr que la esfera flotante se
mantenga en un punto específico?
Para desarrollar nuestro levitador magnético se debe tener en cuenta las variables que afectan el sistema, una vez identificadas podremos entender que variables podemos controlar para el correcto sistema de control a implementar.
Variables Generales.
En la siguiente tabla se muestran cada una de las variables generales a las que estará expuesto el sistema.
Variables de Entrada y Salida.
En la siguiente tabla se aprecia tanto las variables de entrada como las de salida a tener en cuenta dentro del sistema.
Proceso.
A continuación se describirá el proceso paso a paso del funcionamiento ideal del levitador:
- Inicia su proceso teniendo un amplio rango de voltaje y corriente para poder elevar la esfera a una altura determinada.
- Baja el voltaje y la corriente para buscar la altura ideal.
- Suponiendo que el voltaje y la corriente son muy bajos, la esfera va a descender del punto ideal.
- Si por el contrario, la corriente y el voltaje son muy elevados, la esfera corre el riesgo de pegarse a la bobina.
- Teniendo el voltaje y la corriente ideal, la esfera se mantendrá en la altura ideal.
Fusificación.
Para llegar a la siguiente tabla de fusificacion, se tuvo que llevar a cabo diversas consultas acerca del comportamiento de estos sistemas, y así definir cuales son los porcentajes ideales para cada distancia.
viernes, 27 de febrero de 2015
Seminario Técnico Universidad Agraria de Colombia.
Este blog es creado con el fin de mostrar nuestros avances en la materia Seminario Técnico dictada por el docente Julian Andres Guarin Reyes.Centrándonos en el control de un levitador magnético usando un control por lógica difusa.
¿Que es la lógica difusa?
La lógica difusa es una extensión de la lógica tradicional, con la diferencia que maneja conceptos que pueden tomar un valor cualquiera dentro de un rango, siendo este mas subjetivo a la lógica tradicional donde solo se pueden contar con dos valores (1,0).
Esto nos permite tratar información imprecisa, como; estaturas, temperaturas, velocidades...
haciéndolo un control mas parecido a la manera de pensar humana.
¿ Que es un levitador magnético?
Básicamente la función de un levitador magnético es mantener un objeto suspendido en el aire a través de la fuerza magnética. El proceso suele ser inestable y no lineal esto hace que se requiera un buen control.
Suscribirse a:
Entradas (Atom)