martes, 30 de octubre de 2012

Programa de estabilidad

Para este reporte se nos asignó comprobar si el modelo de nuestro sistema de control es estable o no lo es.

La función de transferencia que tenemos del sistema es:


Primeramente analizamos las raíces de la función de transferencia para revisar si cumple con la condición de que raíces reales menores a 0 representan a un sistema estable o de lo contrario el sistema sea inestable.

Para sacar dichas raíces de la función basta con ejecutar los siguientes comandos en octave:
El vector que usamos para obtener las raíces es el denominador de nuestra función de transferencia. Analizando las raíces reales (no imaginarias) obtenidas podemos determinar que son menores a 0 por lo que podemos concluir que nuestro sistema es estable.

A manera de comprobación mostraré la evidencia de estabilidad del sistema representandola mediante un diagrama de impulso y el de posición de las raíces (rlocus).

Primero los comandos para obtener el diagrama de impulso para nuestra función de transferencia:

Obteniendo el siguiente resultado:

Con esta gráfica se demuestra que después de un impulso inicial, el sistema tarda al rededor de entre 3000 y 4000 segundos en finalmente estabilizarse.

Finalmente para reafirmar la estabilidad del sistema obtuve la gráfica del lugar de las raíces usando rlocus de la siguiente manera:

En la línea de comandos queda agregar
octave:4> rlocus(sys)

Y obtuve el siguiente resultado:

Con esta última gráfica queda en evidencia que las raíces del sistema no pasan por ningún punto positivo del eje x lo que comprueba que el sistema es estable.


Fuentes de consulta:

Tarea 9 - Modelado de sistemas de transiciones

Para esta entrada se nos asignó analizar los ejemplos 2.29, 2.30 y 2.32 del libro Principles of model checking, para después modelar un ejemplo similar propio a manera de sistema de transiciones o de grafo de un programa (dependiendo cuál sea más conveniente).

Como sistema a modelar se me ocurrió una tortillería.

Los componentes que integran una tortillería son:
  • Mano de obra, encargada de poner el maíz dentro del molino, de trasladar la masa resultante a la banda de cocción y finalmente de empaquetar el producto.
  • Molino, encargado de moler el maíz para convertirlo en masa.
  • Banda de cocción, una vez salida la masa del molino, ésta pasa a través de una banda donde es cortada en forma tradicional y posteriormente cocida.
Posteriormente realicé los siguientes diagramas de estado y de acción para cada componente.

En lo concerniente a la mano de obra.
  • Estados:
    • Inicio.
    • Espera. 
    • Traslado.
  • Acciones:
    • Llenado contenedor del molino.
    • Recolección de masa una vez que haya salido del molino.
    • Traslada masa a banda de cocción.

(Nota. Una vez que traslada la masa a la banda, regresa a esperar que salga más masa del molino o si éste ya está vacío lo vuelve a llenar)

En lo concerniente al molino.
  • Estados:
    • Ocupado.
    • Libre.
  • Acciones:
    • Moliendo maíz.
    • Esperando por más maíz o en estado de standby.

En lo concerniente a la banda de cocción.
  • Estados:
    • Procesando.
    • Repetición.
    • Finalización.
  • Acciones:
    • Moldeado y cocción.
    • Repetición proceso de producción, volver al inicio del sistema.
    • Fin proceso de producción.

Ya para el diagrama del sistema final abrevié tanto estados como acciones de la siguiente manera:
Mano de obra: (Inicio, Espera, Traslado) = (E0, E1, E2)
                         (Llenado, Recolección, Traslado)=(A0, A1, A2)

Molino: (Libre, Ocupado) = (0, 1)
              (Moliendo, Esperando) = (M,W)

Banda de cocción: (Procesar, Repetición, Finalización) = (P, R, T)
                              (Moldeado y cocción, Repetir proceso) = (C, Rp)

Y finalmente aquí está el esquema final:




Fuentes de Consulta
Principles of Model Checking


lunes, 22 de octubre de 2012

Tarea 8 - Redes Petri

Para esta entrada el objetivo es diseñar o inventar un sistema concurrente sencillo el cuál posteriormente, podamos modelarlo en forma de una Red Petri, apoyándonos con el paquete Snakes de Python.
Si deseas saber qué es una Red Petri haz clic aquí.

El sistema consiste en un abanico controlado por un interruptor. A grandes rasgos, la descripción del mismo es la siguiente:
  • Inicialmente el ventilador se encuentra en un estado de reposo (v0).
  • Al accionar el interruptor por primera vez (le llamo transición 0) el abanico comienza a girar con una velocidad (v1).
  • Una vez en v1 al volver accionar el interruptor (llega a la transición 1) el abanico empieza a girar ahora con una velocidad más alta (v2).
  • Finalmente, al estar el abanico girando a una v2 volviendo a accionar el interruptor (llega a la transición 2) regresa a su estado inicial de reposo (v0) y comienza el ciclo de nuevo.


El código de la representación del sistema en Python es el siguiente:
(Para esta implementación me base en un ejemplo de la misma API de Snakes al cual hago referencia en las fuentes de consulta)

jueves, 18 de octubre de 2012

Análisis Sistema Mecánico Masa-Resorte (Laboratorio)

Para esta entrega el problema que elegí es el siguiente:

"Considere que el sistema está inicialmente en reposo. Suponga que el carro se pone en movimiento mediante una fuerza de impulso unitario. ¿Puede detenerse mediante otra fuerza de impulso equivalente?"
Representación del sistema de baja fidelidad. La imagen que tomé del sistema original que aparece en el libro estaba muy distorsionada y decidí recrearla. Lo siento mucho.

Comenzando el análisis nos damos cuenta que cuando el objeto m se pone en movimiento por una fuerza de impulso unitario, tenemos que:

El siguiente paso es definir otra fuerza de impulso que detenga el movimiento denotada por: 

en la que A es una magnitud indeterminada de la fuerza de impulso, y (t - T) es el instante indeterminado en que el impulso es aplicado al sistema. Ahora juntando esta nueva ecuación con la anterior tenemos:

Calculando la transformada de Laplace de la ecuación anterior tenemos como resultado:

Despejando X(s) nos queda:

Separando constantes obtenemos:

Finalmente aplicando transformada inversa de Laplace a la pasada formula:

Ya sobre esta última función nos damos cuenta que si la masa m es detenida en el instante (t - T), entonces x(t) automáticamente se convertirá en 0 para t >= T.

Para hacer x(t) = 0, podemos aplicar las siguientes igualdades para periodo :

Volviendo a la pregunta principal del problema " ¿Puede detenerse mediante otra fuerza de impulso equivalente?" la respuesta es . Una masa impulsada m puede ser detenida por otra fuerza de impulso equivalente como:








lunes, 15 de octubre de 2012

Tarea 7 - Aplicaciones de Lógica Predicativa

Lógica Predictiva en Toma de Decisiones Empresariales

Es bien sabido que los empresarios son una casta diferente a la de todos nosotros, pero cuál es esta casta? Mientras que algunos investigadores han intentado examinar el comportamiento de los empresarios, otros se concentran en el camino del desarrollo que conduce al emprendimiento empresarial y hay algunos otros que se enfocan en los procesos de toma de decisiones. En la mayoría de los casos, se llega a la conclusión de que los empresarios en compañías establecidas son diferentes a sus homólogos. Pero, ¿cómo?

Recientemente, Reed et al.  examinaron las practicas de toma de decisiones de empresarios "individuales" altamente exitosos, mismos que han inyectado más de $200 millones de dolares en ingresos anuales a sus compañías,  y contrastaron su criterio de toma de decisiones entre ejecutivos exitosos en compañías establecidas y empresarios novatos. Los resultados fueron notables. Ellos revelaron que los empresarios tienden a usar más la lógica eficaz en lugar de lógica predictiva.

La lógica eficaz está "enfocada sobre recursos intangibles, la co-creación de valor y relaciones". Se desarrolla a partir de los recursos que uno tiene a su disposición, se expande formando relaciones con los demás, que se nutren en un esfuerzo para co-crear un futuro que beneficia a las dos partes. La lógica eficaz da bienvenida a las sorpresas, tomando ventaja de eventos inesperados para transformarlos en nuevas oportunidades. En esencia, ésta es una lógica exploratoria, en donde agentes activos exploran el horizonte de los negocios y activamente crean un futuro en el que ellos puedan prosperar.

La lógica predictiva, en contraste, está enfocada en el explotamiento de correlaciones establecidas entre causas y efectos en orden de crear oportunidades de inversión que maximicen sus ingresos futuros. Toma acciones directas desde un punto de vista orientado a metas, donde las metas conducen  a pasos de acción, milestones y resultados predecibles. La lógica predictiva evita sorpresas. Los ejecutivos que utilizan la lógica predictiva desarrollan una reacción visceral a las sorpresas y las ven como un obstáculo no deseado frente a su avance hacia acciones bien establecidos y resultados deseados.

Puede no ser que empresarios rechacen lógica predictiva o que los directores de organizaciones establecidas rechacen lógica eficaz, sino más bien que sus modelos de toma de decisiones son diferentes, lo que conduce a muchas diferentes acciones y resultados.

Por ejemplo, con respecto a estudios de mercado, los directores de negocios establecidos tendían a considerar los estudios de mercado como una valiosa guía para tomar decisiones en cuanto a sus inversiones mientras que los empresarios altamente exitosos tendían a evitar los estudios de mercado en favor de la evidencia anecdótica de sus experiencias pasadas.

Igualmente en cuanto a fijación de precios, los empresarios exitosos tienden a fijar precios a sus nuevos productos dependiendo de cuánto estarían dispuestos a pagar sus clientes mientras que los directores de negocios establecidos tendían a buscar precios que atraerían una mayor cantidad de clientes.

Cuando se habla de inversiones financieras, la lógica predictiva impulsa inversiones basándose en riesgos "controlados" que maximicen las ganancias. En contraste, la lógica eficaz limita las inversiones a perdidas aceptables en orden de preservar al empresario, de modo que pueda sobrevivir para "librar otra batalla" el siguiente día.

En conclusión, con lógica predictiva, las grandes organizaciones pueden ser altamente impulsadas dentro del mercado. La eficiencia está creada con rutinas repetidas, con el desarrollo de experiencia y con reacciones rápidas hacia expectativas de retos.

En la siguiente tabla se muestra la forma de encarar un problema desde el punto de vista de la lógica predictiva y del de la lógica eficaz.




Fuentes de consulta:

martes, 9 de octubre de 2012

Diagrama de bloques

Para esta entrada tenemos asignado construir un diagrama de bloques que representa la funcionalidad de nuestro sistema de control.

El proyecto en el que participo consiste en un ventilador de DC que controla la velocidad de rotación dependiendo de la temperatura ambiente a la que esté expuesto.

Consideramos que tentativamente los materiales necesarios para poder operar nuestro proyecto son:


  • Un sensor de temperatura
  • Un amplificador operacional (amplificar voltajes apartir de fuentes de baja intensidad)
  • Un par de comparadores de voltaje (encargados de activar el siguiente bloque, un comparador se encargara de medir cuándo la temperatura aumenta y el otro cuándo la temperatura disminuye)
  • Un ventilador de motor de DC.

 El diagrama de bloques correspondiente a este modelo sería el siguiente:



Sustituyendo con funciones de transferencia de cada elemento:



Una vez teniendo este modelo principal, podemos proceder a minimizarlo aplicando algunas propiedades:

Aplicando la propiedad de bloques en serie (multiplicación):



Aplicando la propiedad de bloques en paralelo (suma):



Y finalmente, aplicando la propiedad de bloques en serie nuevamente:




Fuentes de consulta:

lunes, 8 de octubre de 2012

Avance 1. Proyecto Redes Neuronales

En esta entrada adjunto la presentación de mi equipo, mi reporte individual y las ligas a mis aportaciones de código.

Presentación:



Reporte Individual:





Links a código: (Subimos nuestras aportaciones a pastebin debido a que tuvimos problemas para sincronizarnos con github buscaremos resolver esto para la entrega final. Una disculpa.)