jueves, 22 de noviembre de 2012

Laboratorio 7. Automatización

Para esta semana, se nos pidió elegir un Problema del libro Sistemas de Control Moderno de Richard Dorf y Robert Bishop.

El problema que elegí es el siguiente:

P11.13 Un sistema realimentado tiene una función de transferencia de la planta 
\[\frac{Y(s)}{R(s)}=G(s)=\frac{K}{s(s+70)}\]

Se desea que la constante de error de velocidad k0 sea de 35 y que la sobre elongación para una entrada escalón sea aproximadamente el 4% de manera que z sea de 1/√2. El tiempo de asentamiento (con el criterio de 2%) deseado es de 0.11 segundos. Diseñar un sistema realimentado en variables de estado apropiado,
\[r(t)=-k_{1}x_{1}-k_{2}x_{2}\]
Primero para determinar K, tenemos que..

\[K_{v}=35=\lim_{s\rightarrow0}sG(s)=\frac{K}{70}\] \[K=2450\]

La representación de estados es de la siguiente manera: 
\[\dot{x}=\begin{bmatrix} 0 & 1\\ 0 & -70 \end{bmatrix}x+\begin{bmatrix} 0\\ 2450 \end{bmatrix}u \\ \\ y=\begin{bmatrix} 1 & 0 \end{bmatrix}x\]
Se tiene que,
\[u=-k_{1}x_{1}-k_{2}x_{2}\]
La ecuación característica de este sistema de lazo cerrado es:
\[q(s)=s^2+(2450k_{2}+70)s+2450k_{1}=0\]
Cuyo polinomio característico deseado es:
\[s^2+(2450(0.707106)+70)s+2450(51.42)=0\]
Donde,
\[\zeta =0.707106\\ \\T_{s}=\frac{4}{\zeta \omega _{n}}\ \\ \\T_{s}=\frac{4}{0.707106 \omega _{n}}\ \\\omega _{n}=51.42\]


martes, 20 de noviembre de 2012

Reporte Final de Proyecto

El reporte se encuentra en el blog de Emmanuel
http://synnick.blogspot.mx/2012/11/reporte-final-de-automatizacion.html

Integrantes del equipo:
Adán Silva
Emmanuel García
Raúl Hernández
Víctor Briones
Yo

Reporte Final

¿Qué se tenía en medio curso?

- Una neurona simple que recibía entradas binarias y agregaba pesos aleatorios. Posteriormente se realizaba la suma del producto de los pesos con las entradas y el resultado se compara con la salida deseada, si éstas no coincidían se hacia un cambio en el vector de pesos.

¿Qué se modifico y/o agrego para el reporte final?

- Método del gradiente
- Regla delta
- Back_propagation
- Red multicapa


Reporte.

Red multicapa (repositorio: neurona_multicapa.py)

Para este reporte, el objetivo era primero que nada hacer que la red neuronal fuera multicapa ¿por qué?, en una red monocapa solo pueden resolverse problemas linealmente separables, en cambio en casos en que se requiera separar clases y se necesiten por lo menos dos líneas para separarlas, debe utilizarse una red multicapa.

Un ejemplo de esto son las funciones lógicas.

AND y OR son funciones linealmente separables:


En cambio, la función XOR no puede ser aprendida por una red monocapa


Para realizar la red multicapa, se utiliza el método del gradiente. Este método es utilizado para minimizar la diferencia entre la salida deseada y la obtenida de la neurona. El método del gradiente se aplica en una función que mide el error  de clasificación de una red neuronal.

La fórmula es la siguiente (en esta fórmula se utiliza el sigmoidal que es igual a la tangente hiperbólica de x):

Donde:





Después de esto se utiliza la regla delta, para entrenar un patrón a la vez.


En este caso, como podemos ver se utiliza la derivada de la sigmoidal y se sigue haciendo la diferencia entre la salida esperada y la obtenida.

Con el algoritmo Back propagation, se puede definir el error total cometido por la red como la suma de los cuadrados de los errores cometidos. El objetivo es minimizar este error utilizando iteraciones para entrenar a redes multicapa.

¿Qué hace este algoritmo? 
- Calcula el error en la salida para cada patrón 
- Ajusta los pesos en la capa de salida para reducir el error. 
- Propaga los errores a la capa de entrada, ajustando los pesos de las capas ocultas, repite este paso de forma iterativa 

Características de Back propagation 
- El algoritmo busca el mínimo de la función error a partir de patrones de entrenamiento 
- Precisa que la función de activación sea diferenciable .
- Entrena, modificando los pesos de la red 
- Los pesos son modificados hacia la dirección descendente de la función error

En el programa que realicé se realiza todo lo anterior. Utilicé las funciones lógicas que mencionaba anteriormente para realizar pruebas de la red neuronal. Implemente XOR para comprobar que la red si funcionaba correctamente.

Implementé también una función sen(x) y trafique los resultados de una función sen(x) normal, y una función sen(x) aproximada con la red neuronal multicapa. 

Los resultados se muestran a continuación:


Se puede ver en la imagen, como la red aprende estas funciones lógicas y trigonométricas. En la imagen se observa cuales son las salidas obtenidas y los valores esperados, y se puede ver que es muy poca la diferencia. 

En la gráfica se observa más claramente, en color Rojo se observa la función aprendida por la red neuronal de sen(x), y en color azul la función real de sen(x).

La idea del proyecto, es que la neurona pueda leer las entradas de las huellas digitales y ser capaz de identificar la huella de una persona y así poder adecuar esto a nuestro proyecto integrador de la página de votaciones.



Referencias:
Libro: An Introduction to Neural Networks, Kevin Gurney.



miércoles, 14 de noviembre de 2012

Laboratorio 6 - Automatización


Para un espacio de estados continuo e invariante en el tiempo, la función de transferencia se puede obtener de la siguiente forma:

Utilizando la transformada de Laplace de:
Se obtiene lo siguiente:
Después, agrupamos y despejamos X(s):
Tenemos la ecuación de salida.

Se sustituye por  X(s) en la ecuación de salida:
La función de transferencia se define como la tasa de salida sobre la de entrada de un sistema.
En esta función sustituimos Y(s) con respecto a U(s)

Para esta tarea, elegi un problema del libro de Control Moderno. Problema 11.3 que dice lo siguiente:

Sea el sistema definido mediante:
donde



Transforme las ecuaciones del sistema en la forma canónica controlable.

Utilizando la función que obtuvimos anteriormente.


Método para sacar la matriz inversa de una matriz de 2x2


Obtenemos la matriz inversa y sustituimos



La representación de la función de transferencia en un espacio de estados es la siguiente:


 Utilizamos la representación en nuestra función de transferencia:


Con esto podemos obtener la forma canónica controlable:




Y el resultado es el siguiente:


Referencias:
Libro de Texto. Control Moderno 




martes, 13 de noviembre de 2012

Reporte Grupal Automatización


El reporte grupal de esta semana se encuentra en el blog de mi compañero Victor Briones:
http://vic-en-fime.blogspot.mx/2012/11/automatizacion-reporte-grupal.html

El reporte contiene lo siguiente:
  • Introducción a lo que se pretende controlar.
  • Función de transferencia explicada con su
  • diagrama de bloques.
  • Su representación en la forma normal, controlable y observable
  • Forma canónica diagonal

El equipo está conformado por:
Victor Briones
Osvaldo Hinojosa

Lineal Temporal Login (LTL)

La lógica temporal es parte de la lógica modal, la cual se utiliza en sistema de reglas donde se presenta el tiempo. 

En lógica temporal se encuentran los mismos operadores que en la lógica de primer orden, agregando algunos más entre los que se encuentran: siempre, algunas veces, nunca. 

Algunos sistemas lógicos que se basan en lógica temporal son: Lógica computacional en árbol (CTL), lógica linear temporal (LTL) y Lógica temporal de intervalos (ITL).

La lógica temporal cuenta con dos tipos de operadores: operadores lógicos y operadores modales. Los operadores modales usan el Linear Temporal Logic y Computation Tree Logic. En la siguiente tabla se muestran estos operadores y su explicación.


Fuente: Wikipedia

Para esta tarea, se nos pidió elegir un problema del siguiente link: http://www.voronkov.com/lics_doc.cgi?what=chapter&n=14 

Me tocó el número 3 de los ejercicios 14.2:

If A holds at a state i, then B must holds at at least one just after i.

Entonces podemos decir que:

Siempre que A se mantenga en un estado i, debe estar B eventualmente.

Referencias:




martes, 6 de noviembre de 2012

Propiedades de modelos de verificación

Para esta semana la tarea es inventar una expresión regular y dibujar su NBA (Nondeterministic Büchi Automata).

Las expresiones regulares describen las combinaciones de caracteres en el texto, se puede definir como un conjunto de caracteres que forman un patrón, que representan a otro grupo de caracteres mayor, de forma que se pueda comparar el patrón con otros conjuntos de caracteres para ver las coincidencias. 

En la tabla siguiente se muestran algunos de los símbolos que se utilizan y lo que significa cada uno de ellos.



Entonces, como dijimos una expresión regular consiste en comprar un patrón con un texto para ver si el texto contiene dicho patrón.

Por ejemplo:

Patrón: Mi
- Miguel
- Camión
- Mimi

Patron: [mp] adre
-Madre
-Padre

Sintáxis y caracteres

El punto

Representa cualquier carácter, escribir un punto en un patrón significa que hay un carácter, cualquiera. Desde la A a la Z (mayúscula o minúscula), del 0 al 9, o algún otro símbolo.

Ejemplo:
pa.a coincide con pasa, pata, para, paja, etc. NO coincide: pasta ni paa.

Principio y fin de cadena

Si se quiere indicar que es el principio de la cadena o que es el final, se utiliza ^para inicio y $ para final.

Ejemplo:
^pájaros coincide con "pájaros amarillos", pero no con "bonitos pájaros"
$rosa coincide con "color rosa" 

Cuantificadores

Se utilizan para indicar que algún elemento del patrón se repetirá un número intedeterminado de veces, se utiliza "*" o "+". Usando "+" para decir que el elemento anterior aparece uno o más veces, y con "*" decimos que el elemento anterior aparece cero o más veces.

Por ejemplo:
"casa+" coincide con "casaa" "casaaa" "casaaaa", etc. 
"ab*c" coincide con "ac" "abc" "abbc" "abbbc", etc.

Si se quiere indicar un elemento que puede que esté (una vez) o puede que no esté se utiliza "?".

Se puede definir la cantidad de veces que se va a repetir, para esto se utilizan las llaves     "{ }".

Ejemplo:
abc{1,2} coincide con "abc" "abcc"


Mi expresión regular es la siguiente:



En esta expresión podemos ver que tiene un operador OR y uno AND, también cuenta con símbolos de los que observamos en la tabla anterior. El símbolo * significa que el carácter anterior se encuentra cero o más veces. 

El NBA correspondiente de esta expresión es el siguiente:






jueves, 1 de noviembre de 2012

Laboratorio 5 - Automatización

La definición de la estabilidad y los criterios de equivalencia, nos permiten saber si una transferencia corresponde a un sistema estable o inestable. Para esto es necesario ubicar la posición de los polos de la transferencia, lo cual es un criterio de estabilidad absoluto, o sea nos informa si el sistema es estable o no. Con esta información no es seguro saber que tipo de sistema es, para esto se utiliza el criterio de Nyquist. 

El diagrama de Nyquist permite predecir la estabilidad y el rendimiento de un sistema a lazo cerrado a través de la observación de su comportamiento a lazo abierto. El criterio de Nyquist se puede utilizar también para propósitos de diseño. 

Este diagrama es básicamente una gráfica de G(j*w) donde G(s) es la función de transferencia a lazo abierto y w es un vector de frecuencias que engloba el semiplano derecho. Las frecuencias positivas y negativas (de cero a infinito) se utilizan para dibujar el diagrama. En la siguiente imagen se representan las frecuencias positivas en rojo y las negativas en verdes.












Sin embargo, si tenemos polos a lazo abierto o ceros en el eje jw, G(s) no estará definida en esos puntos, y debemos contornearlos en la gráfica.












Para esta semana, elegí el siguiente problema. Generar un diagrama de Nyquist para la siguiente función G(s)





Código en Octave..



Utilizando los coeficientes de la función de transferencia y la función nyquist pude obtener la gráfica siguiente















martes, 30 de octubre de 2012

Tarea 3 Automatización



Para esta tarea, se nos pidió realizar pruebas con nuestro sistema utilizando Octave. Para esto tengo la función de transferencia que utilicé en el diagrama de bloques del reporte anterior, quitando la constante de proporcionalidad.



Para realizar las pruebas, utilizamos la entrada de temperatura, con la cuál variará de la potencia de salida del ventilador, para esto realicé un programa donde cambio las entradas de temperatura.


 




Para esto grafique para diferentes temperaturas:


T=36°C 




 T=20°C 


T=40°C  



T=8°C   



Ahora le agregamos una función de perturbación y un vector de tiempos
Para T=30°C
 

 


Para T=40°C con perturbación
 



Sin perturbación: