sábado, 14 de abril de 2012

Anylogic : Simulación determinista

BRAINSTORMING : APUNTES SIMULACIÓN DETERMINISTA

Cartas de estado : Ejemplo práctico de un taladro 

  • Es una operación semiautomática : Tiene un botón o pulsador pero es necesario un operario.
  • Estado inicial : S0 
  • Pulsamos el botón P para iniciar el taladro
  • Pasa al siguiente estado y se activa la 1º ecuación diferencial que inicia el movimiento
  • Cuando la variable X de la ecuación diferencial alcanza un determinado valor , la broca va mas despacio para que no se produzca la rotura. (Otro estado).
  • Taladra el material y sube la broca ( 2 estados mas).
  • Pulsando el botón M ( Otra ecuación diferencial) aprieta la pieza.

Programación por eventos : Ejemplo de una barbería

El cliente llega ha una barbería ( función para generar entidades que llegan al establecimiento).
Generate (300 , 100) > Genera entidades cada 300+-100 msg o con una distribución uniforme de Anylogic entre 200 y 400.
Se hace acopio de los recursos disponibles : "El cliente tiene agarrado al barbero hasta que el barbero es soltado por el cliente reclamándole sus servicios con un delay o tiempo de uso".

Para realizar este tipo de simulación se recomienda intercalar el diagrama de forester junto con las ecuaciones diferenciales y la carta de estados.

Proceso de fabricación ( MANOFACTURING SYSTEMS)

Organizado en 5 partes:

  • Automation and control tegnologies
  • Material handling tegnologies
  • Manofacturing systems
  • Quality systems
  • Manofacturing support systems

CAPITULO 1

Para realizar un proceso de fabricación es necesario saber la cantidad de equipo y personal que se necesita así como los inventarios de la fabricación para poder realizar la evaluación de los defectos de las piezas ,una simulación de que pasaría si meto una maquina nueva, la evaluación de las inversiones de capital así como un "Throwput analysis" : cuanto produzco al día y la maxima capacidad. Además de evaluar las prestaciones disponibles y los procesos de las operaciones.


En la simulacion conviene saber cuando cuesta el minuto de maquina para esa pieza (interes compuesto) ya que cada pieza que pasa por el sistema adquiere valor añadido > se encarece. (cadena de producción).




"When the number of product types made in a factory is hight, this indicates high product variety" 







Low Quantity production : Type of production facility, job shop (taller), fixed position layout.

Medium Quantity production: Batch production if products variety is soft, parts of products is acomplished in cells consisting of several workstations or machines, celular manofacturing.

High production: Mass production , the process layout, flow line production involves multiple
workstations.
Businness functions: sales and marketing sales forecasting.














martes, 20 de marzo de 2012

Practica Anylogic : Modelado de una Clínica



MODELADO DE UNA CLÍNICA OFTALMOLÓGICA


AnyLogic proporciona la Enterprise Library, una biblioteca de simulación de eventos discretos que contiene los objetos que puede utilizar para simular rápidamente complejos sistemas de eventos discretos como:

     * Los procesos de fabricación con el diseño detallado de planta
     * Simple y complejo de los sistemas de servicios (por ejemplo, bancos, aeropuertos, etc)
     * Los procesos de negocio con la actividad basada en costos
     * Logística y modelos de la cadena de suministro


El Enterprise Library permite crear modelos flexibles, para recopilar estadísticas básicas y avanzadas, y efectivamente visualizar el proceso que se está modelando para validar y presentar el modelo.


En esta sección del tutorial vamos a construir un modelo de una típica unidad de oftalmología. Los pacientes llegan al departamento de someterse al procedimiento oftalmoscopia. Se llevan a cabo en la sala de espera y esperar a que los oftalmólogos para venir y hacer un examen. Cuando un médico llega, el paciente se mueve a la sala de procedimientos vacío escoltado por el médico. El procedimiento se realiza con un oftalmoscopio. Los Oftalmoscopios se almacenan en la sala de almacenamiento (storageRoom) y son tomadas por los médicos justo antes de comenzar el procedimiento. El médico transporta el oftalmoscopio de nuevo a la sala y regresa a la sala de trabajadores, el paciente abandona el consultorio del oftalmólogo.

Vamos a construir nuestro modelo de uso de bloques de red basadas en modelos. Un grupo de los objetos para empresas con el prefijo común "red" modelizando una red basado en el diseño. Por lo general, se utilizan cuando los procesos que se están llevando a cabo modelados en un espacio físico determinado e incluyen el movimiento de las entidades y recursos. Las entidades pueden moverse a lo largo de rutas de los recursos de la red y el uso ubicados en la red.
El modelo ha sido realizado desde la ayuda on-line de la pagina oficial de Anylogic.


http://www.xjtek.com/anylogic/help/













En este punto, todos los pacientes son examinados en la sala de procedimientos pero sólo en la primera. Además, varios pacientes son examinados en la sala con mismo procedimiento al mismo tiempo. Vamos a modelar salas de procedimientos, como recursos estáticos. Los pacientes se moverán ahora a cualquiera de las tres salas de procedimientos. La sala estará ocupada para que nadie más puede ser examinado allí en este momento. 

Completaremos el modelo llamando al oftalmólogo para realizar el examen. El Oftalmólogo recoge un oftalmoscopio de la sala de almacenamiento en su camino a la paciente, y la devuelve después. 


Simulando la clinica quedaria algo similar a esto:





jueves, 15 de marzo de 2012

Anylogic : Simulación

OSO DE PELUCHE CON MUELLE



En este ejercicio práctico vamos a simular el movimiento de un oso de peluche atado al extremo con un muelle. Movimiento vertical definido por ecuaciones diferenciales.


Hay que definir dos ecuaciones diferenciales , cada una de ellas representa la velocidad y la aceleración del peluche.

\[x^2 = a * landa + b * u \]
\[x (0) = Xo\]

Por lo que la segunda derivada queda en funcion de :  \[x" = f (t,x,x`) \]
Aplicando la segunda ley de newton para cargas :  \Sumatorio de fuerzas = m * a \]
 Siendo "m" la masa de la marioneta y "a" su aceleración y "v" su velocidad.La fuerza "f" sera la fuerza de rozamiento del aire. Por lo tanto sustituyendo y derivando en las encuaciones anteriormente mencionadas :

\[ f -k*x  b*v = m * a\]
\[x" = -k/m *x - b/m* x` + 1/m * f  + g \]

Realizaremos el ejercicio de forma gráfica con los diagramas de Forester. (Creador de system dinamics). Anylogic tiene una libreria denominada System dinamic para resolver ecuaciones diferenciales mediante el diagrama.

Las ventajas de realizar el ejercicio de forma grafica ( versus EJS ) es que en este ejemplo tenemos pocas ecuaciones pero si tuvieramos 80 ecuaciones no resultaria mas facil resolverlas gráficamente que con el metodo matematico.
La variable independiente por defecto en Anylogic es el tiempo ( t ) por lo que no es necesario definirla en ningun sitio.

A la ecuacion diferencial aplicaremos el teorema que para convertir un sistema de una ecuacion de orden n en n ecuaciones de primer  grado mediante cambios de variables.


\[ x` = v\]
\[v" = -k/m *x - b/m* v` + 1/m * f + g \]

 Con el diagrama de forester  asociaremos a la función incognita una variable de tipo Stock. Hay que definir también su derivada de tipo Flow. Estas definiciones deben realizarse para cada ecuación diferencial.


Dando click derecho sobre Dx : Definiremos la ecuación diferencial:

Para establecer los valores iniciales daremos click en la función incognita y en v:

Las constantes las definiremos en las propiedades del main , en el apartado "Additional Class Code" en codigo JAVA:


Como Dv depende de las variables x y v  realizaremos la asociación   correspondiente con la herramienta tipo "Link":

La fuerza es una variable de control , es decir un parametro ( f ) .





Asi quedaria cuando ejecutamos el programa:








miércoles, 14 de marzo de 2012

Practica Anylogic : Modelado de un Banco

MODELADO DE UN BANCO


AnyLogic proporciona la Enterprise Library, una biblioteca de simulación de eventos discretos que contiene los objetos que puede utilizar para simular rápidamente complejos sistemas de eventos discretos como:

     * Los procesos de fabricación con el diseño detallado de planta
     * Simple y complejo de los sistemas de servicios (por ejemplo, bancos, aeropuertos, etc)
     * Los procesos de negocio con la actividad basada en costos
     * Logística y modelos de la cadena de suministro

El Enterprise Library permite crear modelos flexibles, para recopilar estadísticas básicas y avanzadas, y efectivamente visualizar el proceso que se está modelando para validar y presentar el modelo.

Vamos a crear un sistema simple servicio de un departamento del banco, que consiste en un cajero automático y las líneas de cajeros. ATM ofrece la gente con una rápido auto-servicio por dinero en efectivo. Transacciones más complejas, como por ejemplo pagar las cuentas, se completan con los cajeros, lo que permite a los clientes más tiempo sin molestar a los las otras personas que buscan dinero rápido.


El modelo ha sido realizado desde la ayuda on-line de la pagina oficial de Anylogic.

http://www.xjtek.com/anylogic/help/

 



Lo mas destacable del ejercicio es la creación y modificación de la clase JAVA "Costumer" en la cual se espeficican dos parametros encargados de controlar el tiempo que esta cada entidad en el sistema ( TimeInSystem ) y el tiempo de espera de cada entidad para ser atendida (Waiting time).




Con estas dos variables podremos realizar estadísticas. Normalmente estas estadísticas son interesantes desde el punto de vista económico. Puesto que si realizamos una simulación de un modelo de fabricación podremos obtener datos de cuando recuperamos la inversión, los elementos producidos, cuanto y cuanto tiempo nos costaría cada pieza etc.












jueves, 8 de marzo de 2012

GRAFCET . CONCEPTOS BASICOS


GRAFCET



GRAFCET (GRAFica de Control de Etapas de Transición) es un grafo o diagrama funcional normalizado, que permite hacer un modelo del proceso a automatizar, contemplando entradas, acciones a realizar, y los procesos intermedios que provocan estas acciones. Inicialmente fue propuesto para documentar la etapa secuencial de los sistemas de control de procesos a eventos discretos. No fue concebido como un lenguaje de programación de autómatas, sino un tipo de Grafo para elaborar el modelo pensando en la ejecución directa del automatismo o programa de autómata. Varios fabricantes en sus autómatas de gama alta hacen este paso directo, lo que lo ha convertido en un potente lenguaje gráfico de programación para autómatas, adaptado a la resolución de sistemas secuenciales. En la actualidad no tiene una amplia difusión como lenguaje, puesto que la mayoría de los autómatas no pueden programarse directamente en este lenguaje, a diferencia del Lenguaje Ladder. Pero se ha universalizado como herramienta de modelado que permite el paso directo a programación, también con Ladder.

ELEMENTOS DE PROGRAMACIÓN

Para programar un autómata en GRAFCET es necesario conocer cada uno de los elementos propios de que consta. En la siguiente tabla se muestran los comunes.
  
PRINCIPIOS BASICOS
 
Para realizar el programa correspondiente a un ciclo de trabajo en lenguaje GRAFCET, se deberán tener en cuenta los siguientes principios básicos:
  • Se descompone el proceso en etapas que serán activadas una tras otra.
  • A cada etapa se le asocia una o varias acciones que sólo serán efectivas cuando la etapa esté activa.
  • Una etapa se activa cuando se cumple la condición de transición y está activa la etapa anterior.
  • El cumplimiento de una condición de transición implica la activación de la etapa siguiente y la desactivación de la etapa precedente.
  • Nunca puede haber dos etapas o condiciones consecutivas, siempre deben ir colocadas de forma alterna.

CLASIFICIACIÓN DE SECUENCIAS

En un GRAFCET podemos encontrarnos con tres tipos de secuencias:
  • Lineales
  • Con direccionamientos o alternativa
  • Simultáneas
Secuencial GRAFCET.PNG

Lineales

En las secuencias lineales el ciclo lo componen una sucesión lineal de etapas como se refleja en el siguiente GRAFCET de ejemplo:
El programa irá activando cada una de las etapas y desactivando la anterior conforme se vayan cumpliendo cada una de las condiciones. Las acciones se realizarán en función de la etapa activa a la que están asociadas. Por ejemplo, con la etapa 1 activa tras arrancar el programa, al cumplirse la "Condición 1", se activará la etapa 2, se desactivará la 1, y se realizará la "Acción 1".

 

Con direccionamiento

En un GRAFCET con direccionamiento el ciclo puede variar en función de las condiciones que se cumplan. En el siguiente ejemplo a partir de la etapa inicial se pueden seguir tres ciclos diferentes dependiendo de que condiciones (1, 2 y/ó 3) se cumplan, (normalmente sólo una de ellas podra cumplirse mientras la etapa 1 esté activa, aunque pueden cumplirse varias):

Direcc GRAFCET.PNG

La diferencia significativa del direccionamiento ( arbol abierto con una linea sencilla horizontal ) con respecto a la simultanea es que esta pasara a la siguiente etapa cuando haya terminado una de las tareas paralelas independientemente de las que se iniciaron.

Simultáneas

En las secuencias simultáneas varios ciclos pueden estar funcionando a la vez por activación simultánea de etapas. En el siguiente ejemplo, cuando se cumple la condición 1 las etapas 2, 3 y 4 se activan simultáneamente:
En los casos de tareas simultaneas ( arbol abierto por doble linea horizontal ) la etapa siguiente al cierre solo podra iniciarse cuando TODAS las etapas paralelas hayan terminado.

Secsimul GRAFCET.PNG

Acciones condicionadas

La ejecución de la acción se produce cuando además de encontrarse activa la etapa a la que está asociada, se debe verificar una condición lógica suplementaria (función Y):
GRAFCET condicional.PNG

Acciones temporizadas o retardadas

Es un caso particular de las acciones condicionadas que se encuentran en multitud de aplicaciones. En este caso, el tiempo interviene como una condición lógica más. En el siguiente ejemplo la acción A se realizará durante 10 segundos:
GRAFCET temporizado.PNG

Ejemplo de programación

A continuación se obtendrá el GRAFCET para el control de un montacargas que funciona entre dos plantas. El ejemplo es sólo pedagógico; para simplificarlo no se tendrá en cuenta la acción de parada. Los elementos necesarios son los siguientes:

Elementos de un montacargas
Actuadores Captadores
KM1: Contactor de subida SS: Pulsador de subida
KM2: Contactor de bajada SB: Pulsador de bajada
L1: Lámpara indicadora de paro FCA: Detector de planta alta

FCB: Detector de planta baja

A continuación se ofrece el programa GRAFCET y su funcionamiento:

GRAFCET ejemplo montacargas.PNG
Al arrancar el programa se activa la etapa inicial 1 encendiéndose la lámpara de paro, L1. En el supuesto de que el montacargas esté en la planta baja, FCB = 1, la activación del pulsador de bajada, SB = 1, no tendrá ningún efecto. En cambio la activación del pulsador de subida, SS = 1, provocará la desactivación de la etapa 1 y la activación de la 2, ya que se cumple la condición de transición, esto es, el producto lógico de SS y FCB es 1. La activación de la etapa 2 excita el contactor KM1, y el montacargas sube. Al llegar a la planta alta, FCA = 1, se desactiva la etapa 2 y vuelve a activarse la 1, parándose el motor. En estas condiciones, la actuación sobre SS no tiene efecto alguno y sobre SB provoca la activación de KM2, lo que hace que el montacargas comience a bajar hasta activarse el detector de la planta baja, FCB = 1, momento en el que se parará.

miércoles, 29 de febrero de 2012

Metodo de Simulación : Montecarlo

Metodo Montecarlo

INTRODUCCION

El método de Montecarlo (MC) es quizá el método más usado en mecánica estadística computacional.
El método de Montecarlo es un método probabilístico, en contraposición de los métodos determinísticos. En el transcurso de una simulación MC las partículas que forman el sistema se mueven al azar.



Emplea deliberadamente números al azar en el estudio de un "proceso estocástico". Por proceso estocástico se entiende una secuencia de estados cuya evaluación viene determinada por sucesos al azar.

Veamos con un ejemplo sencillo de como los procesos estadísticos permiten determinar algunos valores numéricos determinados. Si se tiene un cuadrado de lado "l" con una circunferencia inscrita:

 Mediante un ordenador se generan una serie de puntos al azar, generando aleatoriamente los diferentes valores de las coordenadas "x" e "y", imponiendo la condición de que todos los puntos generados estén dentro del cuadrado, es decir imponiendo:
|x| ≤ l/2 |y| ≤ l/2

Este ejemplo es muy sencillo y no tiene ninguna utilidad práctica, sin embargo demuestra que mediante métodos estadísticos podemos obtener valores numéricos de algunas propiedades de sistemas.


 SIMULACIÓN

 1. Diseñar el modelo lógico de decisión
2. Especificar distribuciones de probabilidad para las variables aleatorias relevantes.
3. Incluir posibles dependencias entre variables.
4. Muestrear valores de las variables aleatorias.
5. Calcular el resultado del modelo según los valores del muestreo (iteración) y registrar el resultado.
6. Repetir el proceso hasta tener una muestra estadísticamente representativa.
7. Obtener la distribución de frecuencias del resultado de las iteraciones.
8. Calcular media, desvío y curva de percentiles acumulados.


EJEMPLO PRÁCTICO


Si deseamos reproducir, mediante números aleatorios, la tirada sucesiva de una moneda, debemos previamente asignarle un intervalo de números aleatorios a CARA y otro a CRUZ, de manera de poder interpretar el resultado de la simulación. Tales intervalos se asignan en función de las probabilidades de ocurrencia de cada cara de la moneda. Tenemos así:

CARA Probabilidad: 0,50 Números aleatorios: 0,000 al 0,499
CRUZ Probabilidad: 0,50 Números aleatorios: 0,500 al 0,999

Después, al generar un número aleatorio a partir de la función RAN de la calculadora, por ejemplo, obtenemos el resultado simulado. Así, si obtenemos el número aleatorio 0,385, observamos que está incluido en el intervalo asignado a CARA.
En otras aplicaciones, se asocian intervalos de números aleatorios según las probabilidades de ocurrencia de los eventos a simular.

martes, 21 de febrero de 2012

Ejercicio Práctico 8

Ejercicio Básico de EJS 


Hoy vamos a realizar un ejercicio sencillo con EJS simulando una marioneta con muelle.
Para ello describiremos teoricamente el ejercicio ( su parte mecanica y la ecuación diferencial resultante).

Hay que definir dos ecuaciones diferenciales , cada una de ellas representa la velocidad y la aceleración de la marioneta.

\[x^2 = a * landa + b * u \]
\[x (0) = Xo\]

Por lo que la segunda derivada queda en funcion de :  \[x" = f (t,x,x`) \]
Aplicando la segunda ley de newton para cargas :  \Sumatorio de fuerzas = m * a \]
 Siendo "m" la masa de la marioneta y "a" su aceleración y "v" su velocidad.La fuerza "f" sera la fuerza de rozamiento del aire. Por lo tanto sustituyendo y derivando en las encuaciones anteriormente mencionadas :

\[ f -k*x  b*v = m * a\]
\[x" = -k/m *x - b/m* x` + 1/m * f \]


 EJS presenta una dificultad. No se pueden introducir ecuaciones de mas de 1er grado por lo que apelando al algebra sabemos que una ecuación explicita de orden N es equivalente a un sistema de N ecuaciones. Se realiza con cambios de variable.

Siendo x = x1 y x`= x2


\[x2` = -k/m *x - b/m* x` + 1/m * f \]
 \[x1` = x2 \]

La variable independiente sera el tiempo "t" y la función incognita x1 y x2.
Inicializaremos las variables:

 \[x (0) = 2\]  \[x` (0) = 0\]  \[m = 30kg\]  \[b = 5\]
 \[k = 2\]  \[f = 0\] 


Dicho esto comenzaremos con EJS definiendo las variables e inicializandolas:




Posteriormente en el modulo de vista colocaremos los elementos necesarios para su visualización : Un gráfico en 2D de tipo "PlottingFrame" y para imagenes en 3D "DrawingFrame".



Configuraremos ambos elementos para que la visualización sea correcta:


Y procederemos a la simulación: