También llamados "Automatas" de estados finitos.
Modela el comportamiento de un sistema con un número limitado de modos o estados
La máquina de estados finitos o MEF, también llamada autómata finito, está relacionada con el órgano de control del sistema. A diferencia de lo que se puede pensar, la MEF es una abstracción de las decisiones que el control tomará para satisfacer todas las necesidades o requerimientos en el proceso. Las MEF son representadas por diagramas y pueden ser programadas en cualquier lenguaje de programación.
myHtml = """
<div><b>Ejemplo de un sistema "autonomo"</b></div>
<link href="/assets/css/jupyter_nb.css" rel="stylesheet"/>
<script src="/assets/js/jupyter_nb.js"></script>
"""
display_html(myHtml, raw=True)
display(IFrame(
"https://www.youtube-nocookie.com/embed/wZmwFvlBzyE?controls=0",
width="100%",
height="450px"))
Antes de pensar en la MEF que controla el secador, responde las siguientes preguntas:
Efectivamente el secador tiene un sensor, un detector de presencia para sabe si hay o no una mano que quiere ser secada y tiene un actuador, un ventilador que genera un flujo fuerte de aire, secando así las manos.
El proceso del secador inicia cuando una persona acerca la mano a la zona de secado. Si se detecta un objeto en la zona de secado, el secador generará un flujo de aire que terminará secando el objeto.
Una vez tenemos los requerimientos del sistema podemos proceder al paso a paso, en donde los escribiremos usando la estructura SIEEE (o IFTTT).
Estos pasos pueden escribirse también de la siguiente forma:
| Elemento | Representación | Descripción |
|---|---|---|
| Estado | Círculo | Define el comportamiento de la máquina y genera la orden a cada actuador. |
| Transición | Flecha | Son los cambios de estado generados por la expresión que la acompaña. |
| Expresión | Ecuación Booleana | También llamadas condiciones, son las reglas que se deben cumplir para generar la transición. |
| Transición Inicial | Flecha que no proviene de un estado | Toda MEF tiene un estado inicial que se indica con esta flecha. |
| Evento | No se representa | Cambios en las variables que hacen parte de las expresiones de la MEF |
Las acciones pueden ser ubicadas:
sourcefile = 'secador-mef2.gv'
gv = open(sourcefile)
dot = Source(gv.read(),format="svg",filename = sourcefile)
dot.render(sourcefile,view=False);
Un automata (máquina) de estados finitos esta definido por una tupla de 5 elementos:
$$M = (S,I,f,S_0,F)$$donde:
Tomemos la siguiente definición:
$$\begin{align} S &= \left\{1,2,3,4\right\} \\ I &= \left\{a,b\right\} \\ f &= \left\{(1,a,2),(1,b,4),(2,a,3),(2,b,4),(3,a,3),(3,b,3),(4,a,2),(4,b,4)\right\} \\ S_0 &= \left\{1\right\} \\ F &= \left\{4\right\} \end{align}$$Que resulta en: