jueves, 15 de noviembre de 2012

Tarea 6: Representación en el Espacio de Estados

Para esta tarea escogí el siguiente problema:


El problema pide obtener una representación del espacio de estados del sistema siguiente, utilizando MATLAB(Octave):


Para ello podemos crear un sistema usando los datos de la función de transferencia anterior, y la función tftss.

Función tf2ss
Sintaxis:
  • [A,B,C,D]=tf2ss(b,a)
  • [A,B,C,D]=tf2ss(sys)
Descripción:
  • Convierte los parámetros de una función de transferencia de un sistema dado a su equivalente en representación de espacio de estados.




Nota: Se requiere instalar el paquete Signal de Octave para poder utilizar la función tf2ss.

Entonces esos valores podemos usarlos para obtener la representación en el espacio de estados, tomando en cuenta lo siguiente:


Lo que nos da la siguiente representación de estados para la función de transferencia


Referencias:

martes, 13 de noviembre de 2012

Reporte Grupal sobre Propiedades Estructurales

Reporte en LATEX
El reporte para esta tarea fue hecho tanto en una publicación como en pdf generado con LATEX.. 

PDF:


Link del Código de LATEX.
Links a los blogs de mis compañeros:
I. Introducción

El sistema que controlaremos consiste en un ventilador, que al recibir la temperatura ambiental por medio de un sensor analógico ajusta la velocidad del ventilador a mayor temperatura mayor velocidad a menor temperatura menor velocidad.

Materiales tentativos:
  • Sensor analógico de temperatura LM35
  • Amplificador Operacional
  • Resistencias
  • Ventilador(VN4-012P)
  • Fuente de Poder de 12V
  • Cable para conexiones.
  • Entre otros.
II. Función de Transferencia

Para construir la función de transferencia para nuestro sistema, necesitamos las funciones de transferencia de cada uno de los componentes que actuarán en el sistema, dichas funciones de transferencia de los componentes son:

Función de transferencia sensor de temperatura:
$\frac{V(s)}{T(s)}= \frac{0.01}{s}$

Funcion de transferencia amplificador operacional
$\frac{V_{out}} {V_{in}}=\frac{R_{2}+R_{1}}{R_{2}}$

Comparador 1
$A=\frac{V_{0}} {\left(V_{ref}-V{i}\right)}$

Comparador2
$A=\frac{V_{0}}{\left ( V_{i}-V{ref} \right )}$

Relay de estado sólido
$\frac{V_{0}\left ( s \right )}{V_{i}\left ( s \right )}=\frac{R_{2}CS+1}{R_{1}CS}$

Ventilador con motor DC
$\frac{1}{s}$

Al manejar cada una de las funciones de transferencia a manera de un diagrama de bloques y aplicando sus propiedades obtenemos la función de transferencia final:
$\frac{0.0026s + 0.12}{s^{2} + 0.0026s + 0.1}$

Diagrama de Bloques



Representación en el espacio de estados

La representación en el espacio de estados de un sistema LTI esta dada por:
$ H(s) = \frac{B(s)}{A(s)} = \frac{ b_{1}s^{n-1}+...b_{n-1}s + b_{n} }{a_{1}S^{m-1} +...+a_{m-1}s+a_{m}  } = C(sI-A)^{-1}B+D $

$ \dot{x} = Ax + Bu $
$ y = Cx + Du $

Donde:
$x $ es el vector de estado
$y$ es el vector de salida
$u$ es el vector de entrada (o de control)
$A$ es la matriz de estados
$B$ es la matriz de entrada
$C$ es la matriz de salida
$D$ es la matriz de transmisión directa.

Podemos obtener las matrices de espacio de estados del sistema, utilizando la función tf2ss, descrita a continuación:

Función: tf2ss
Sintaxis:
    [A,B,C,D]=tf2ss(b,a)

Descripción:
  • Convierte los parámetros de la representación de una función de transferencia de un sistema a su representación en el espacio de estados equivalente. Retorna las matrices A, B, C, D de la representación del espacio de  estados para el sistema.

Utilizando el sistema creado con nuestra función de transferencia, Octave proporciona la siguiente salida:



Lo que significa que las matrices de espacio de estado del sistema, son las siguientes:
$A = \begin{bmatrix}
3.3307e^{-16} & 0.1\\
 -1.0 & -0.0026
\end{bmatrix}

B = \begin{bmatrix}
-0.1200\\
 0.0026
\end{bmatrix}$
$C = \begin{bmatrix}
0.0000 & 1.0000
\end{bmatrix}

D = \begin{bmatrix}
0
\end{bmatrix}$

Y entonces la representación en el espacio de estados es así:
$ \dot{x} = \begin{bmatrix}
3.3307e^{-16} & 0.1\\
 -1.0 & -0.0026
\end{bmatrix}x
+
\begin{bmatrix}
-0.1200\\
 0.0026
\end{bmatrix}u $
$
y = \begin{bmatrix}
0.0000 & 1.0000
\end{bmatrix}
x+
D = \begin{bmatrix}
0
\end{bmatrix}u $

III. Controlabilidad

La controlabilidad es una propiedad de los sistemas de control que se refiere a la capacidad de cambiar toda la configuración de espacios de un sistema utilizando ciertas manipulaciones admisibles. En pocas palabras, se puede alcanzar un estado desde cualquier otro.

Para analizar la controlabilidad de nuestro sistema, se hará lo siguiente:
  •     Obtener la Matriz de controlabilidad.
  •     Calcular el gramiano de controlabilidad.
  •     Obtener la forma canónica controlable.

1. Matriz de Controlabilidad

La matriz de controlabilidad esta dada por:
$C_{0} = \begin{bmatrix}B & AB & A^{2}B & ... & A^{n-1}B
\end{bmatrix}$
Octave cuenta con una función ctrb que calcula la matriz de controlabilidad de un sistema tomando como parámetros el sistema o las matrices A y B del espacio de estados del sistema.

Función: ctrb
Sintaxis:
  •     Co = ctrb(sys)
  •     Co = ctrb(A, B)
Descripción:
  •     Calcula la matriz de controlabilidad para sistemas de espacio de estados


Como se ve, podemos calcularlo de dos formas, utilizando el sistema creado con la función de transferencia, o utilizando las matrices A y B del espacio de estados del sistema.




Ambas producen el mismo resultado, la matriz de controlabilidad:

$
C_{0} = \begin{bmatrix}
-0.12 & 0.00026 \\
0.0026 & 0.11999
\end{bmatrix}
$

Es posible calcular el número de estados no controlables utilizando la matriz de controlabilidad. Basta con realizar una resta, el largo de la matriz A menos el rango de la matriz de controlabilidad.



El resultado de esta resta es el número de estados no controlables, en este caso cero, por lo cual nuestro sistema es controlable.

2. Gramiano de controlabilidad

En teoría de control, el gramiano de controlabilidad es un gramiano utilizado para determinar si un sistema lineal invariante en el tiempo(LTI) es controlable o no.
Debido a que el gramiano de controlabilidad tiene mejores propiedades numéricas que la matriz de controlabilidad formada por la función ctrb, se calculará también el gramiano de controlabilidad para de igual manera analizar la controlabilidad del sistema.

El gramiano de controlabilidad está definido por la siguiente ecuación:

$W_{c} = \int_{0}^{\infty} e^{A\tau }BB^{T}e^{A^{T}\tau}d\tau$

Sí la matriz resultante Wc es invertible, y es de rango completo, entonces el sistema para el cual pertenece el par A, B es controlable.

Podemos utilizar el gramiano de controlabilidad para saber si nuestro sistema es controlable. Para ello hacemos uso de octave y la función gram de Octave.

Función: gram(para controlabilidad)
Sintaxis:
  •     Wc = gram(sys,'c')
Descripción:
  •     Wc = gram(sys,'c') calcula el gramiano de controlabilidad del modelo de espacio de estados sys.

Siendo sys el sistema creado con la función de transferencia, calculamos el gramiano:



El resultado es la siguiente matriz:

$ W_{c}(y) = \begin{bmatrix}
2.769256 & -0.072000 \\
-0.072000 & 27.693608
\end{bmatrix}$

Para comprobar si el sistema es controlable o no, es necesario verificar que la matriz resultante sea invertible, es decir, que exista otra matriz a la cual multiplicándose, el resultado sea una matriz identidad (con 1’s en la diagonal principal). Para hacer esto, se utiliza la función inv de Octave.

Función: inv
Sintaxis:
  •     inv(A)
Descripción:
  •     Retorna el inverso de una matriz cuadrada ‘A’.

Haciendo uso de inv, se obtiene la matriz inversa de la obtenida con el gramiano de controlabilidad.  Después se multiplican ambas, para comprobar que el resultado sea una matriz identidad. El resultado es en efecto, una matriz identidad, por lo que se cumple ese punto.



Lo restante es verificar que sea de rango completo, lo cual sencillamente podemos hacerlo utilizando la funciones rank y length de Octave.

Función: rankFunción: length
Sintaxis:
  •     k = rank(A)
Sintaxis:
  •     n = length(array)
Descripción:
  •     Retorna un estimado del número de columnas o filas linealmente independientes de una matriz completa.
Descripción:
  •     Encuentra el número de elementos en la dimensión más larga de un arreglo.


Se obtiene el rango y el tamaño de la matriz utilizando rank(wc) y length(wc) y se comparan para saber si la matriz es de rango completo.



Como el resultado es 1, es decir True, se comprueba que wc es de rango completo, y por lo tanto el sistema es controlable.


3. Forma Canónica Controlable.

La forma canónica controlable es como sigue:

$\begin{bmatrix}
\dot{x_{1}} \\ \dot{x_{2}} \\ \vdots \\ \dot{x_{n-1}} \\ \dot{x_{n}}
\end{bmatrix}
=
\begin{bmatrix}
0 & 1 & 0 & \cdots & 0 \\
0 & 0 & 1 & \cdots & 0 \\
\vdots & \vdots & \vdots & \ddots  & \vdots \\
-a_{n} & -a_{n-1} & -a_{n-2} & \cdots & -a_{1} \\
\end{bmatrix}
\begin{bmatrix}
x_{1} \\ x_{2} \\ \vdots \\ x_{n-1} \\ x_{n}
\end{bmatrix}
+
\begin{bmatrix}
0 \\ 0 \\ \vdots \\ 0 \\ 1
\end{bmatrix}
u$


$y =
\begin{bmatrix}
b_{n}-a_{n}b_{0} & b_{n-1}-a_{n-1}b_{0} & \cdots & b_{n-1}-a_{n-1}b_{0}
\end{bmatrix}

\begin{bmatrix}
x_{1} \\ x_{2} \\ \vdots \\ x_{n-1} \\ x_{n}
\end{bmatrix}
+ b_{0}u$

Donde  podemos obtener a, y b desde la función de transferencia, tomando en cuenta lo siguiente:

$ \frac{Y(s)}{U(s)} = \frac{b_{0}s^{n}+b_{1}s^{n-1}+ \cdots + b_{n-1}s+b_{n} }{s^{n}+a_{1}s^{n-1}+ \cdots +a_{n-1}s + a_{n}}$
Tomando nuestra función de transferencia, por inspección obtenemos los siguientes valores de a y b:

$a_{1} = 0.0026 $
$a_{2} = 0.1$
$b_{0} = 0$
$b_{1} = 0.0026$
$b_{2} = 0.12$


Sustituyendo, obtenemos nuestra forma canónica controlable

 $ \begin{bmatrix}
\dot{x}_{1}(t) \\
\dot{x}_{1}(t)
\end{bmatrix}
=
\begin{bmatrix}
0 & 1 \\ -0.1 & -0.0026
\end{bmatrix}
\begin{bmatrix}
x_{1}(t) \\ x_{2}(t)
\end{bmatrix}
+
\begin{bmatrix}
0 \\ 1
\end{bmatrix}
u(t)$

$ y(t) = \begin{bmatrix}
0.12 & 0.0026
\end{bmatrix}
\begin{bmatrix}
x_{1}(t) \\ x_{2}(t)
\end{bmatrix}$


III. Observabilidad
Para analizar la observabilidad de nuestro sistema, se hará lo siguiente:
  •     Obtener la Matriz de Observabilidad
  •     Calcular el gramiano de observabilidad.
  •     Obtener la forma canónica observable.


1. Matriz de Observabilidad
La matriz de observabilidad está dada por:

$ Ob =
\begin{bmatrix}
C \\ CA \\ CA^{2} \\ \cdots \\ CA^{n-1}
\end{bmatrix} $

Igual que con la controlabilidad, Octave también proporciona una función para calcular la matriz de observabilidad de un sistema.

Función: obsv
Sintaxis:
  •     ob = obsv(A, C)
Descripción:
  •     Calcula la matriz de observabilidad para sistemas de espacio de estados.

Calculamos la matriz de observabilidad usando la función obsv.


Con esto tenemos nuestra matriz de observabilidad:

$ Ob =
\begin{bmatrix}
0 & 1.0 \\ -1.0 & -0.0026
\end{bmatrix}
$

 
Como en la controlabilidad, podemos calcular directamente con la matriz de observabilidad si el sistema es totalmente observable. Para hacerlo simplemente calculamos el largo de la matriz A y se le resta el rango de la matriz de observabilidad.

El resultado es el número de estados no observables, en este caso siendo 0. Por lo cual es el sistema es completamente observable.

2. Gramiano de Observabilidad

El gramiano de observabilidad es un gramiano utilizado en teoría de control para determinar si un sistema lineal invariante en el tiempo (LTI) es observable.

Al igual que en el caso de la controlabilidad, lo utilizaremos debido a que proporciona mejores propiedades numéricas para estudiar, en este caso, la observabilidad del sistema.

El gramiano de observabilidad esta dado por:

$W_{0} = \int_{0}^{\infty} e^{A\tau }BB^{T}e^{A^{T}\tau}d\tau$

Sí la matriz resultante Wc es invertible, entonces el sistema para el cual pertenece el par A, C es controlable.
Podemos utilizar el gramiano de observabilidad para saber si nuestro sistema es observable. Igualmente, se utiliza la función gram de Octave, pero cambiando el parámetro mode a “o”

Función: gram
Sintaxis:
  •     Wo = gram(sys,'o')
Descripción:
  •     Wo = gram(sys,'o') calcula el gramiano de observabilidad del modelo de espacio de estados sys.

Utilizando el sistema como parámetro:


Se da como resultado la siguiente matriz:

$W_{0} = \begin{bmatrix} 192.31 & 6.4082e^{-13} \\ 6.4082e^{-13} & 192.31 \end{bmatrix} $

Ahora para comprobar si es observable, debemos verificar que cumpla con el requisito de ser invertible. Para ello calculamos su matriz inversa y multiplicamos ambas.




Debido a que el resultado es una matriz identidad, se comprueba que es invertible, y por lo tanto el sistema es observable.

3. Forma Canónica Observable

La forma canónica observable es aquella que cumple con lo siguiente:

$\begin{bmatrix}
\dot{x_{1}} \\ \dot{x_{2}} \\ \vdots \\
\dot{x_{n}}
\end{bmatrix}
=
\begin{bmatrix}
0 & 0 & \cdots & 0 & -a_{n} \\
1 & 0 & \cdots & 0 & -a_{n-1} \\
\vdots & \vdots &   & \vdots & \vdots \\
0 & 0 & \cdots & 1 & -a_{1}
\end{bmatrix}

\begin{bmatrix}
x_{1} \\ x_{2} \\ \vdots \\
x_{n}
\end{bmatrix}
+
\begin{bmatrix}
b_{n}-a_{n}b_{0} \\
b_{n-1}-a_{n-1}b_{0} \\
\vdots \\
b_{1}-a_{1}b_{0}
\end{bmatrix}
u$

$\begin{bmatrix}
0 & 0 & \cdots & 0 & 1
\end{bmatrix}
\begin{bmatrix}
\dot{x_{1}} \\ \dot{x_{2}} \\ \vdots \\ \dot{x_{n-1}} \\ \dot{x_{n}}
\end{bmatrix}
+ b_{0}u$


De igual manera que en la forma canónica controlable, obtenemos las a y b a partir de la función de transferencia, tomando en cuenta:
$\frac{Y(s)}{U(s)} = \frac
{ b_{0}s^{n} + b_{1}s^{n-1} + \cdots + b_{n-1}s + b_{n} }
{s^{n} + a_{1}s^{n-1} + \cdots + a_{n-1}s + a_{n}}$


Entonces, las a y b son:
$a_{1} = 0.0026$
$a_{2} = 0.1$
$b_{0} = 0$
$b_{1} = 0.0026$
$b_{2} = 0.12$


Lo cual nos produce la forma canónica observable: 
$\begin{bmatrix}\dot{x}_{1}(t)\\\dot{x}_{2}(t)\end{bmatrix}=
\begin{bmatrix}0 & -0.1 \\ 1 & -0.0026\end{bmatrix}
\begin{bmatrix}x_{1}(t) \\ x_{2}(t)\end{bmatrix}u(t)$

$y(t) = \begin{bmatrix}
0 & 1
\end{bmatrix}
\begin{bmatrix}
x_{1}(t) \\ x_{2}(t)
\end{bmatrix}$


Nota: Puede notarse que la matriz A de la forma canónica observable es la transpuesta de la matriz A de la forma canónica controlable.

IV. Diagonalización

1. Mediante Eigenvectores

Para que el sistema pueda ser diagonalizado se necesita que los eigenvectores de la matriz "A" sean linealmente independientes, esto se puede comprobar utilizando las raíces del sistema, si las raíces son diferentes esto puede lograrse, en cambio si son iguales podría o no ser posible la diagonalización.

Para diagonalizar se utiliza la matriz de eigenvectores de la matriz transición de estados "E":

$Ae_{i} = \lambda_{i}e_{i}$

Donde lambda representa una constante llamada eigenvalor, A es la matriz de estados y “e” subíndice “i” es un eigenvector de esa matriz.

Conociendo los eigenvectores se puede formar la matriz ya mencionada:

$E = \begin{bmatrix}
e_{1}, e_{2}, \cdots, e_{N}
\end{bmatrix}$


Siendo esta última matriz linealmente independiente, puede utilizarse para una transformación lineal uno a uno. Ahora tenemos que la transformada de la matriz de transiciones esta dada por la siguiente fórmula:

$\tilde{A} = E^{-1}AE$

Este es el código en octave que utilizamos para implementar lo explicado:


El resultado obtenido se muestra en la captura del programa corriendo, como se puede observar las raíces son diferentes y los valores que no son de la diagonal principal visiblemente son muy cercanos a cero:


Quedando la matriz diagonalizada de la siguiente forma:

$\tilde{A} = \begin{bmatrix}
-1.3e^{-3}+3.1263e^{-1}i & 0\\
0 & -1.3e^{-3}-3.1263e^{-1}i
\end{bmatrix}$

2. Forma Canónica Diagonal

Para obtener la forma canónica diagonal es necesario que el polinomio de nuestro denominador se pueda factorizar en diferentes raíces. Podemos comprobar lo anterior utilizando la función roots de Octave, dando como parámetro el denominador de la función de transferencia.

Función: roots
Sintaxis:
  •     r = roots(c)
Descripción:
  •     Retorna un vector en columna cuyos elementos son las raíces del polinomio c.

Calculando las raíces, obtenemos que son diferentes, como se pueden ver:


Entonces podemos calcular la forma canónica diagonal. Sí tenemos que:

$\frac{Y\left ( s \right )}{U\left ( s \right )}=\frac{b_{0}s^{n}+b_{1}s^{n-1}+...+b_{n-1}}{\left ( s+p_{1} \right )\left ( s+p_{2} \right )...\left ( s+p_{n} \right )}
$

Expandiéndose con fracciones parciales:

$\frac{Y\left ( s \right )}{U\left ( s \right )}=b_{0}+\frac{c_{1}}{s+p_{1}}+\frac{c_{2}}{s+p_{2}}+...+\frac{c_{n}}{s+p_{n}}
$

Entonces la forma canónica diagonal esta dada por:

$\begin{bmatrix}
\dot{x_{1}}\\\dot{x_{2}}
\\...
\\\dot{x_{n}}
\end{bmatrix}=\begin{bmatrix}
-p_{1} &  &  &0 \\
&-p_{2}  &  & \\
&  &...  & \\
0&  &  &-p_{n}
\end{bmatrix}\begin{bmatrix}
x_{1}\\x_{{2}}
\\...
\\ x_{n}
\end{bmatrix}+\begin{bmatrix}
1\\
1\\
...\\1
\end{bmatrix}u
\\\\y=\begin{bmatrix}
c_{1} &c_{2}  &...  & c_{n}
\end{bmatrix}\begin{bmatrix}
x_{1}\\x_{2}
\\...
\\ x_{n}
\end{bmatrix}+b_{0}u$

Para poder obtener las c, debido a que Octave no cuenta con una forma directa de obtener la forma canónica diagonal como Matlab, haremos uso de la función residue para obtener las fracciones parciales(y de nuevo también las raíces) para después simplemente sustituir en la forma canónica.

Función: residue
Sintaxis:
    [r, p, k]  = residue(b, a)
Descripción:
    Encuentra los residuos, polos, y términos directos de una expansión de fracciones parciales de dos polinomios a y b.

Utilizando residue con la función de transferencia obtenemos lo siguiente:

De estos datos obtenemos las p y las c, siendo p = p y c =r. Entonces:

$p_{1} = -0.00130+0.31623i$
$p_{2} = -0.00130-0.31623i$
$c_{1} = 0.00130-0.18973i$
$c_{2} = 0.00130+0.18973i$

Sustituyendo en la forma canónica diagonal:

$\begin{bmatrix}
\dot{x}_{1}(t) \\ \dot{x}_{2}(t)
\end{bmatrix}
\begin{bmatrix}
-0.00130+0.31623i & 0 \\ 0 & -0.00130+0.31623i
\end{bmatrix}
\begin{bmatrix}
x_{1}(t) \\ x_{2}(t)
\end{bmatrix}
+
\begin{bmatrix}
1 \\ 1
\end{bmatrix}
u(t)$
$y(t) = \begin{bmatrix}
0.00130-0.18973i \\ 0.00130+0.18973i
\end{bmatrix}
\begin{bmatrix}
x_{1}(t) \\ x_{2}(t)
\end{bmatrix}$

Referencias:

Resumen - Short-term electricity prices forecasting in a competitive market: A neural network approach

Short-term electricity prices forecasting in a competitive market: A neural network approach
J.P.S. Catalao, S.J.P.S. Mariano, V.M.F. Mendes, L.A.F.M. Ferreira

El artículo trata, como el título dice sobre una propuesta para una red neuronal que pueda predecir los cambios en los precios de los recibos de la electricidad en cortos plazos.

Una red neuronal de tres capas, entrenada por el algoritmo Levenbeg-Marquardt es usada para predecir los precios de los recibos de la electricidad para la siguiente semana. Se evalúa también la precisión de la predicción de los precios, reportando los resultados de los mercados en España y California.

Introducción

Los precios de la electricidad son de extrema importancia en un mercado de energía electrica competitivo a todos los participantes, y en particular a los productores y consumidores. Por esto es que un conocimiento previo del precio de la electricidad es importante para manejar los riesgos y puede representar una ventaja para un participante en el mercado que tiene competencia.

En sí, para una compañia en el área de la energía eléctrica, la habilidad para predecir precios futuros significa que la compañia puede estratégicamente establecer ofertas para el mercado en poco tiempo.

Una buena herramienta que prediga los precios debe poder capturar la incertidumbre asociada con los precios. Estas incertidumbres suelen ser el precio de la gasolina, adiciones futuras de generación y transmisión de la energía eléctrica, reglas y regulaciones, crecimiento en la demanda, operaciones de planta y cambios climáticos.

Los precios de la electricidad son influenciados por diversos factores:
  • Precios históricos y demanda
  • Estrategias de Ofertas
  • Reservas de Operación
  • Importación
  • Efecto de la Temperatura
  • Predicción de cortes en los generadores.
Red Neuronal para predecir precios de la electricidad

Una red neuronal de tres capas entrenada por el algoirtmo Levenberg-Marquardt es propuesta para predecir los precios de la electricidad. Utilizan la herramienta de redes neuronales de Matlab, por su sencillez y flexibilidad. 
Las funciones de transferencia utilizadas para la capa oculta y de salida son funciones no lineares y lineares respectivamente
  • Capa Oculta: Utiliza la función tansing, una función de transferencia tangente sigmoidal hiperbólica con salidas entre -1 y 1.
  • Capa de Salida: Utiliza la función purelin, una función de transferencia linealmente pura.
En la fase de entrenamiento, probaron con cuantas unidades trabajar en la capa oculta. El resultado fue que utilizar 5 unidades en la capa oculta daba los mejores resultados. La capa de salida tiene una unidad, encargada de dar de salida los precios de la electricidad de la siguiente semana. 

Datos históricos sobre los precios de electricidad previos son la entrada principal para la red neuronal.

Entrenamiento

Para predecir eventos numéricos futuros, las redes neuronales utilizan dos pasos: entrenamiento y aprendizaje. Entrenar una red neuronal de este tipo es normalmente realizado de una manera supervisada. Uno asume que el set de datos de entrenamiento esta disponible, siendo este datos pasados, conteniendo tanto entradas y las correspondientes salidas deseadas, lo que es presentado a la red.

La selección adecuada de entradas para el entrenamiento es muy importante para el éxito del entrenamiento. En el proceso de aprendizaje una red neuronal construye un mapeado de salida-entrada, ajustando los pesos en cada iteración basado en la minimización de un error entre la salida producida y la deseada.

Sobreentrenar una red neuronal puede deteriorar las predicciones que se realizan, sin mencionar el dar información errónea a la red, lo que causará que la red se confunda y ajuste los pesos erróneamente.

Algoritmo de Entrenamiento

El algoritmo utilizado para está propuesta es el de Levenberg-Marquardt, que entrena una red neuronal de 10 a 100 veces más rapido que el backpropagation. El algoritmo consiste en econtrar la actualización, dada por:

Donde el parámetro u es modificado convenientemente durante las iteraciones del algoritmo.

Calculo del Error

Para evaluar la precisión de la red neuronal, se utilizan diferentes criterios. La precisión es calculada en función de los precios actuales del mercado que han ocurrido. El error absoluto porcentual promedio (MAPE), la suma cuadrada del error(SSE), y el error de desviación estándar (SDE), son definidos como sigue:



Donde ph y ph son usadas respectivamente para predecir los actuales precios de la electricidad a la hora h, p es el precio promedio en el periodo de predicción y N es el número de horas futuras predecidas.

Los precios de electricidad pueden incrementarse hasta 10 o cientos de veces su precio normal en horas particulares Puede bajar hasta cero o hasta ser negativo en otras horas. Por lo tanto, el precio promedio es usado para evitar el problema causado por los precios cercanos a cero.

Los criterios SSE y SDE están dados por:

Donde eh es el error en la predicción a una hora h, y e es el error promedio del periodo de predicción.

Casos de Estudio

Para construir el modelo de predicción para cada semana considerada, la información disponible incluye precios históricos por hora durante los 42 días previos al día de la semana cuyos precios se van a predecir. Datos de entrenamiento muy grandes no deben ser usados para evitar sobre entrenar la neurona.

Un ejemplo de una predicción de la red neuronal se ve en la siguiente gráfica:
Precios de Invierno para el mercado de España. Los precios actuales se muestran con una línea sólida, junto con los precios predecidos, mostrados por la línea punteada. Los datos son en euros por hora megawatt.



Análisis Estadístico del error en las predicciones semanales obtenidos por la red neuronal en un análisis de 5 semanas.

Conclusión

La red neuronal del artículo provee una buena manera para predecir los precios futuros del mercado de la electricidad. 

Además menciona metodos muy interesantes para entrenar una neurona de manera supervisada, y además proporciona funciones para calcular del error que podían ser de utilidad para la aplicación de nuestro proyecto. 

Tarea 11: Linear temporal logic

Mi ejercicio para esta tarea es el siguiente:
Traducido: Ejercicio 14.4: Encontrar dos diferentes fórmulas del ejercicio 14.3 que son equivalentes entre sí.

Las fórmulas del ejercicio 14.3 son las siguientes:
Para poder saber si son iguales o representan lo mismo, me parece mucho más fácil verificarlas pasandolas a un enunciado, en vez de simbolos, haciendo esto quedan aproximadamente de la siguiente manera:

(1 ) En un futuro siempre A.
(2 ) Siempre(Si A es el estado actual, entonces A es el siguiente estado)
(3 ) No A hasta que siempre A.
(4 ) A hasta que no A.
(5 ) En un Futuro A y Siempre(A si A es el siguiente estado)

Viendolo de esta manera, las expresiones (1) y (5) claramente suenan equivalentes, y todas significan lo mismo, que puede expresarse algo así.


  ---->o---->o---->A---->A---->A---->A




1. En un futuro, siempre A. En un futuro siempre se estará en el estado A.
5. En un Futuro A ^ Siempre A sí A es el siguiente estado. En un futuro se estará en el estado A y siempre si el estado A es el actual, A es el siguiente.

martes, 6 de noviembre de 2012

Resumen: An integrated Navigation and Motion Control System for Autonomous Multisensory Mobile Robots

An integrated Navigation and Motion Control System for Autonomous Multisensory  Mobile Robots
Georges Giralt,  Raja Chatila, and Marc Vaisset

¿Por qué esta relacionado con automatización y control?

El robot HILARE es un robot móvil, multisensor y autónomo que utiliza sensores para obtener información de su alrededor y poder realizar movimientos. La manera en que se controlan los sistemas de percepción para obtener la posición del robot y saber que hacer cuando haya objetos en su vecinidad(rodear, esquivar) esta relacionado con cosas que hemos visto en la materia. 

Resumen

El artículo se centra en HILARE un proyecto de un robot móvil. El proyecto empezó alrededor de 1977 y se centraba en el control de los robots para mejorar su percepción y planeación de movimientos.

Diseño Físico

El robot cuenta con 3 ruedas, dos ruedas traseras con motores de paso, y la rueda delantera siendo libre para realizar prácticamente cualquier movimiento. Físicamente se ve como el siguiente:


El sistema computacional que soporta las funciones del robot esta distribuido en una arquitectura multinivel. Varios microprocesadores están comunicados mediante señal de radio a una computadora de 32-bits, dando acceso a uno o varios procesadores más poderosos.



Sistema de Percepción

El sistema de percepción está compuesto por dos subsistemas, el de visión y el ultrasónico, estos usados para proveer al robot de la información necesaria del ambiente que lo rodea.


Sistema Ultrasónico


14 emisores y receptores ultrasónicos distribuidos en el robot son utilizados para obtener información con un alcance de hasta 2m.

Esto tiene dos funciones:
  • Alarma: Avisa al robot de la vecinidad de un objeto, para que pueda detenerse por completo si es que está en movimiento, aunque algunas veces sirve para que pueda rodearlo o alejarse de él.
  • Evadir obstáculos: La información obtenida por el sistema ultrasónico es usada para maniobrar y evitar los obstáculos, alejándose a una distancia fija de ellos.
Sistema de Visión

El sistema de visión es el principal sistema de percepción del robot. Para este sistema se utiliza una cámara y un láser para medir profundidad. Es posible utilizar el láser en un modo de escaneo, utilizando un espejo retractil para obtener datos 3D alrededor del robot, efectivamente mapeando el área.

Posición del robot

La posición de HILARE puede ser obtenida utilizando un sistema de triangulación infrarroja. Estas funcionan gracias a balizas instaladas en el área previamente, de esta manera se puede triangular la señal infrarroja y encontrar la posición del robot. 
También es posible obtener la posición usando como referencia objetos a su alrededor.

Sistema de Navegación

La navegación de HILARE es manejada por los sensores, y dependiente del ambiente. El sistema de navegación y control de movimientos domina todo lo que concierne a todas las actividades móviles del robot. 

Los procedimientos básicos que usa son ruteo, navegación, visión de bajo nivel, locomoción, búsqueda de posición y evitar obstáculos locales. Para esto se hace uso de los sensores mencionados previamente.

El funcionamiento sistema de navegación inicia con el análisis del mapa de obstáculos. Las áreas vacías entre obstáculos son diseñadas como "células" (polígonos convexos). Cada límite de cada célula tiene asociada una entrada de un segmento de salida. Un grafo de búsqueda es generado usando las células y sus límites, y entonces este grafo es al cual se busca una solución para encontrar el camino más corto.

Representación celular usada por HILARE.


Referencias extras:

lunes, 5 de noviembre de 2012

Tarea 10: Expresión w-regular y Autómata Buchi

Para ésta tarea se pidió que se creara una expresión w-regular y a partir de ella creáramos un NBA.
Ésta expresión debía cumplir con 2 reglas:

  • Contar con 2 o más operadores(AND, OR, NOT, etc).
  • Contar con 2 o más símbolos( +, *, etc)

Mi expresión w-regular es la siguiente:




ó simplificada

  • El símbolo * indica que hay cero o más del elemento precedente. Por ejemplo ab*c puede significar, "ac", "abc", "abbc", "abbbc", etc.
  • El símbolo + indica que hay uno o más del elemento precedente. Por ejemplo ab+c puede ser: "abc", "abbc", "abbbc", etc, pero no "ac".
  • Igual que en expresiones booleanas, + es un OR, y los caracteres seguidos unos con otros es un AND.
El NBA ( Non-deterministic Buchi Automaton - Automata Buchi no determinista) es entonces el siguiente:


Referencias:

jueves, 1 de noviembre de 2012

Steganography Code


For uses in encryption, type:

 python cripto.py -e image.png


Where image.png is the name of the image where the code is going to encrypt.

 For use in decryption, type: 

 python cripto.py -d image.png


Where image.png is the name of the image where the code is going to be extracted.

The images with code embedded are: 2, 3, 5.


The code used to encrypt-decipher the messages from the images is the following: 





Note: The Images have to be clicked and downloaded from the URL(from the Gallery), or else they will be downloaded in a different size and the data will be lost.