Documente Academic
Documente Profesional
Documente Cultură
www.flexsim.com.mx
f(x)
f(x)
0.00 0.50 1.00 1.50 2.00
0.50
0.50
0.25
0.00 0.0
1.0
2.0
3.0
4.0
5.0
6.0
X-Value
3 - Normal 2 - Exponential
X-Value
f(x)
0.50 0.40 0.30 0.20 0.10 0.00 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
f(x)
0.60
0.25
0.50
0.75
1.00
1.25
1.50
1.75
2.00
2.25
2.50
X-Value
4 - Lognormal
1 - Weibull
X-Value
Modelo Objectos
Flowitems
3
Highlighted (destacado) = cubo amarillo: click izquierdo. Selected (seleccionado) = cubo rojo: shift-click o ctrl-click
Puedes seleccionar mltiples objetos haciendo click con shift o ctrl y dibujando un recuadro o ventana alrededor de un grupo de objetos. Basta con que toque una parte de un objeto para que se seleccione.
5
Click derecho y arrastra las flechas para rotar sobre cada eje, segn la flecha que selecciones. 6
Center
8
Desconectar
Q A V
W S C
9
Conectar
Verlas
13
Navigator
Visual Tool
Recorder
Queue
Transporter
Sink
Rack
Reservoir
Elevator
MultiProcessor
Conveyor
MergeSort
Processor
Combiner Separator
14
Tasks y Tasksequences
Task: es una sola instruccin o accin que deber ser desempeada por una objeto del tipo TaskExecuter. ejemplo: LOAD flowitem. Tasksequence: una serie de tasks (actividades) que deben desempearse en sequencia. ejemplo: TRAVEL al queue LOAD flowitem TRAVEL al processor UNLOAD flowitem
15
16
Orden de Ejecucin
(push flowitem)
flowitem llega OnEntry Setup Time Pick Operator
Pick Operator
Process Time
OnSetupFinish
demora
demora
OnProcessFinish
Send To Port
OnExit
demora
posible demora
19
Una vez que se han activado las estadsticas, se puede correr el modelo. Cuando termine, los datos pueden ser grabados en una base de datos que se puede abrir con FlexSim Chart.
Grficos de Gantt
Reporte Financiero
Movement Table registra cada vez que un flowitem se mueve de un objeto a otro. ID del Flowitem Tiempo de inicio de movimiento Origen Destino Itemtype del objeto
Estas dos tablas bsicas proporcionan la informacin necesaria para que se puedan elaborar grficas ms avanzadas y reportes ms detallados
NetworkNodes
Los NetworkNodes se usan para definir el camino que seguir un TaskExecuter cuando realice tareas de viajes. Un network path est compuesto por un grupo de NetworkNodes inteconectados. A un TaskExecuter se le dice que debe moverse sobre la red de caminos conectndolo a alguno de los NetworkNode del camino. El nodo al que se conecte se convierte en su nodo casa. Si un FixedResource (FR) es visitado por un TaskExecuter que viaja por una red, ese FR debe estar conectado por lo menos a un solo NetworkNode, lo que le permite el acceso mediante la red. 29
Conectando NetworkNodes
Haz click sobre un nodo y arrastra el mouse hacia el otro nodo mientras presionas la letra A (se ver una lnea amarilla). Cuando los hayas conectado observars una lnea negra entre los nodos. Dos indicadores de direccin verdes muestran que se permite viajar en ambas direcciones de la red.
30
Una lnea azul mostrar la conexin. Est lnea no est conectada a ningn puerto.
31
33
Caminos de no rebasar
Un camino de no rebasar (non-passing) puede activarse conectando con al letra A entre dos nodos que ya estn previamente conectados. El indicador de direccin se har amarillo, mostrando la direccion del tipo nonpasing. Conectando nuevamente con la letra A provoca que vuelva al estado anterior en color verde.
No hay paso.
2. A
5. A 3. A
6. a 4. A
37
38
Triggers
Una oportunidad para definir y personalizar el comportamiento del sistema cuando ocurre un evento en especfico.
Leer o escribir informacin de un flowitem. Cambiar las propiedades visuales tanto de flowitems como de objetos. Mandar mensajes a otros objetos. Cambiar el comportamiento de otros objetos. Y muchas cosas ms
40
Qu es un Nodo? Nodo?
La estructura bsico de datos de Flexsim es un rbol (tree) jerrquico.
main tree (objetos y datos del modelo y del proyecto). view tree (objetos de GUIs y picklist). model tree (objetos y datos relacionados con el modelo).
El nodo es el elemento bsico de construccin del rbol. Los nodos contienen toda la informacin (no toda visible fuera del rbol) de los objetos, GUIs y datos.
41
Si los nodos tienen datos de objeto, usa para ver una lista separada de toda la informacin del objeto (datos y funciones de los miembros). Si los nodos contienen subnodos, usa para expander y ver los nodos hijos.
42
43
44
Qu es una funcin?
Nombredelafuncin(argumento1, argumento2, etc) Los argumentos pueden ser:
Valores numricos. Textos (string). Apuntador Pointer (*) a un objeto o node.
colorrandom(item)
Muchas de las funciones de Flexsim son usadas para leer datos desde el rbol y salvar datos en el rbol.
45
46
Reglas Generales
Las letras son sensibles (A no es lo mismo que a). No se necesita un formato especfico (el uso de espacios, tabuladores y renglones en blanco es libre, pero se sugiere se usen para hacer mas leble el cdigo). Los valores de texto (string) deben introducirse entre comillas. mi texto Los parntesis le siguen a un llamado de una funcin y las comas separan los argumentos de dicha funcin. moveobject(object1, object2); Una funcin o un comando siempre termina con PUNTO Y COMA (;) Los parntesis pueden usarse libremente para crear asociaciones entre las declaraciones matemticas y lgicas. ((x+3)*2) Las llaves { } se usan para definir bloques de declaraciones. Para poner como comentario el resto de una lnea usa // y escribe aqu. Comentarios multilnea empiezan con /* y terminan con */ No uses espacios o caracteres especiales (,, . , %, etc.) en los nombres. ( _ si puedes usarlo). Los nombre pueden incluir nmeros pero no pueden empezar con un nmero (maquina9 est bien, pero 9mquina no).
48
Tipos de Variables
int double string integer entero.
(1, 2, 3, 14324)
Comparando
x>y x<y x >= y x <= y x == y x != y comparetext(texto1,texto2) x mayor que y x menor que y x mayor o igual que y x menor o igual que y x igual que y x no igual que y texto1 igual a texto2
Relacionando
&& || ! Y lgico O lgico NO lgico
53
Actualizando
x=y x += y x -= y x *= y x /= y x ++ x -x vale igual que y mismo que poner x = x + y mismo que poner x = x - y mismo que poner x = x * y mismo que poner x = x / y mismo que poner x = x + 1 mismo que poner x = x - 1
rank(node, ranknum) rank(current,3) node(relativepath, object) node(/Operator1,model()) inobject(object, portnum) outobject(object, portnum) centerobject(object, portnum) inobject(current,1) outobject(current,1) centerobject(current,1)
55
zsize( object )
zrot( object )
57
Itemtypes
Itemtype: todos los flowitems tienen un atributo llamado itemtype. Este es un identificador numrico utilizado para distinguir cierto tipo de producto de otros en decisiones de tiempos de proceso o de ruteo de productos en el modelo.
58
Listados y Avisos
Sintxis pt( text string ); pf( float value ); pd( discrete value );
imprime texto. imprime nmeros con decimales. imprime nmeros enteros. pr( ); salto de rengln. msg( ttulo de ventana, texto del mensaje ).
Ejemplo:
pt(Producto en ); pt(getname(current)); pt(. Tiempo: ); pf(time()); pr();
60
Parmetros de un Processor
Comprendiendo los campos de edicin de un Procesador te ayudar a entender mejor Flexsim. Debes de ser capaz de responder a las siguientes 4 preguntas de cada uno de los campos de edicin:
Cul es su propsito? En qu momento se evala? Cules son las variables de acceso? Qu valor regresa (return)?
61
62
if (SI Lgico)
if (expresin de prueba) {
bloque de cdigo
} else {
bloque de cdigo
63
Labels o Etiquetas
Labels: la informacin puede ser almacenada en los flowitems (y en otros objetos) en la forma de etiquetas o labels. Los flowitems y otros objetos de Flexsim pueden tener una cantidad ilimitada de labels. Los labels deben tener nombre y datos. Los datos pueden ser numricos, texto, lista o tabla.
64
ejemplos
getlabelnum( item, numero de serie ); setlabelnum( item, numero de serie, 5 ); getlabelstr( current, categoria ); setlabelstr( current, categoria, congelados ); inc( label(item, numero de retrabajos), 1 );
Este comando para incrementar solo funciona con valores numricos.
65
switch lgico
int type = getitemtype(item); switch ( switchvariable ) { case casenum: { code block break; } case casenum2: { code block break; } default: { code block break; } } switch (type) { case 1: { coloryellow(item); break; } case 5: { colorred(item); break; } default: { colorgreen(item); break; } }
66
En programacin un while loop es una estructura de control que permite que un bloque de cdigo sea repetida varias veces siempre y cuando la expresion que se prueba (test expression) siga siendo verdadera. Evita loops infinitos (repeticiones infinitas) asegurndote que la expresion de prueba eventualmente sea falsa.
67
for lgico
for (start expression; test expression; count expression) { //code block } for (int index=1; index<=content(current); index++) { colorblue(rank(current,index)); }
Un for loop te permite repetir un bloque de cdigo un nmero determinado de veces. El encabezado del for loop define las condiciones de repeticin:
1. Escribe la variable que cambia y dale un valor inicial. 2. Escribe la condicin para que salga del loop. 3. Escribe el incremento de la variable que se har automticamente al final de cada iteracin o repeticin.
Evita loops infinitos asegurando que la expresion de prueba eventualmente sea falsa.
68
Orden de Ejecucin
(pulled flowitem)
if true
Flowitem se encuentra disponible en el objeto anterior
Pull Requirement
demora
OnEntry
OnSetupFinish
demora
Pick Operator
Setup Time
Process Time
Pick Operator
demora
Send To Port
OnExit
demora
demora
69
Comandos de Tablas Globales (Global Tables) gettablenum( tablename, rownum, colnum ) settablenum( tablename, rownum, colnum, value ) gettablestr( tablename, rownum, colnum ) settablestr( tablename, rownum, colnum, string )
70
sendmessage( toobject, fromobject, parameter1, parameter2, parameter3 ); senddelayedmessage( toobject, delaytime, fromobject, parameter1, parameter2, parameter3 ); stopobject( object ); resumeobject( object ); moveobject( object, containerobject );
71
Mensajes
Message: informacin enviada de un objeto a otro objeto. Cuando un objeto recibe un mensaje, un trigger se dispara. Los mensages pueden enviarse con comandos. Pueden enviarse inmediatamente con el comando sendmessage() o despus de un periodo especfico de tiempo utilizando el comando senddelayedmessage().
72
Orden de Ejecucin
(Messages)
sendmessage() OnMessage trigger del objeto que recibe el mensaje
senddelayedmessage()
demora
73
Control de un TaskExecuter
Comandos simples: requestoperators( taskexecuter, station, involvedobj, nrofops, priority, preempting ) freeoperators( taskexecuter, involvedobj ) TaskSequence personalizada y creada por el usuario: createemptytasksequence( taskexecuter, priority, preempting)
Returns a pointer (fsnode *) to the task sequence created
Si se marca, el modelo grabar su estado al final de cada rplica. Los estados son guardados con un archivo .fsp en la carpeta experiment Estos archivos pueden ser abiertos despus para ver los resultados de cada rplica usando la opcin Load State del men File.
Nmero de escenarios en el experimento Cuntas rplicas por cada escenario Nmero de la rplica que est corriendo en el escenario vigente
Escenario Actual
Qu es Optimizacin?
Optimizacin es el anlisis automtico de diferentes escenarios a partir de los modelos de simulacin creados en Flexsim, variando las distintas condiciones que se le especifiquen para. encontrar la Solucin ptima. Las condiciones pueden ser el nmero de personas, montacargas, inventario, tamaos de lote, velocidades de las bandas transportadoras, personal de mantenimiento, demandas y cualquier otra variable que se desee.
Qu es Optimizacin?
Uno mismo define el criterio para optimizar, segn el problema que se quiera resolver. Los objetivos en las optimizacionespueden ser: Maximizar Utilidades. Minimizar tiempos de Surtido. Maximizar el servicio al cliente. Cualquier otro objetivo que desee. Pueden combinarse varios objetivos como una sola meta y darle una importancia diferente a cada uno de ellos.
Qu es Optimizacin?
Utilizando potentes algoritmos, el mdulo de optimizacin OptQuest de Flexsim evala cientos de escenarios en segundos en forma automtica y encuentra la solucin ptima. Realiza un anlisis exhaustivo mediante simulaciones aceleradas que sera imposible de igualar en precisin y tiempo si se realizaran de forma manual.
Variables de Decisin
La primera parte al disear una optimizacin es seleccionar las variables de decisin del modelo. Las variables de decisin generalmente pueden resolverse al plantear el problema que quieres resolver. Por ejemplo, un problema puede ser: qu capacidad de produccin necesito en cierta rea para aumentar mi flujo de produccin? Este planteamiento define las variables de decisin del modelo, que son la capacidad de la mquina y el producto terminado del modelo. Pero hay que destacar que estas variables tienen roles totalmente diferentes La capacidad de la mquina es un valor que queremos cambiar y experimentar mientras que el producto terminado es nuestra retroalimentacin pues refleja el resultado de los cambios realizados, permitiendo comparar que tan bueno es un escenario con respecto a otros.
Variables de Decisin
Para aadir una variable de decisin, presiona el botn Add en el panel de Variables. Esto aade una nueva variable a la tabla de variables. Selecciona esta variable al posionarte sobre alguna celda del rengln de la nueva variable, ahora presiona el botn Modify. Este hace que se despliegue una ventana que permite editar la nueva variable.
Variables de Decisin
Una vez que especificaste el nombre de la variable y el tipo, presiona el botn Browse para asociar esta variable con un nodo del modelo. Se abrir la ventana del Tree para seleccionar el nodo que tiene el valor de la variable de decisin. Debes seleccionar un nodo que tenga un valor numrico de la contrario la optimizacin no funcionar correctamente.
Restricciones
Opcionalmente puedes definir restricciones, las cuales sirven para nulificar ciertos escenarios en caso de que no se cumplan las restricciones. De esta forma nos aseguramos que el optimizador no seleccione un escenario invlido como ptimo. Algunos ejemplos de restricciones son: Produccin > 1000 Porcentaje de Ocio <= 0.10 Costo Total <= 350,000 Para aadir una restriccin presiona el botn Add y escribe la restricciones en la columna de ecuaciones.
Funcin Objetivo
La funcin objetivo es la expresin que se quiere maximizar o minimizar. Esta podra ser simplemente una expresin como produccin si es que definiste una variable de decisin llamada de esa forma. La funcin objetivo puede calcular la utilidad o prdida de un proceso. Por ejemplo, si cada producto producido genera un ingreso de $5 y el costo de cada mquina (ponderado por la duracin de la corrida de simulacin) es de $50, entonces la funcin objetivo podra ser: Maximizar Produccin * 5 NmeroMaximoDeMquinas * 50 Otros ejemplos son los siguientes: Maximizar utilidades Minimizar tiempos de surtido Maximizar produccin minimizando inventario en proceso.
Condiciones de Paro
Maximum Time for Optimization es el tiempo mximo (en tiempo real) que el optimizador tendr para realizar la optimizacin. AutoStop: si esta opcin est seleccionada, la optimizacin parar cuando el valor de la funcin objetivo deje de mejorarse. Esto se cumple cuando el valor de la funcin objetivo de la mejor solucin encontrada no vara en al menos 0.0001 despus de 100 iteraciones.
Escenarios
Mximum Scenarios aqu puede limitarse el nmero mximo de diferentes escenarios que el optimizador probar. Cada escenario es una configuracin diferente en la bsqueda del optimizador. Current Scenario es el valor de la funcin objetivo del escenario actual. Best Solution es el valor del funcin objetivo del mejor escenario encontrado hasta ese momento. Simulation Time per Scenario/Real Time per Scenario se refieres al tiempo mximo en el que la simulacin trabajar en cada escenario, en tiempos de la simulacin en el primer caso y en tiempo real en el segundo caso.
Rplicas
Si deseas correr la simulacin varias veces para un mismo escenario para incrementar la confianza en la media de la funcin objetivo, utiliza el panel de Replications para especificar cuantas rplicas se efectuarn. Perform multiple replications per scenario si est activado el optimizador ejecutar ms de una rplica por cada escenario. Minimum number of replications es el nmero mnimo de rplicas a correr por cada escenario diferente. Si no hay un critero de salida temprana (Early Exit Criterion) definido entonces el optimizador siempre correr el nmero mnimo de rplicas.
Rplicas
Maximum number of replications es el nmero mximo de rplicas a correr por cada escenario. Si se defini un critero de salida temprana (Early Exit Criterion) entonces el optimizador correr el escenario hasta que el criterio haya sido alcanzado, hasta el nmero mximo de rplicas definido despus del cuale el optimizador parar ese escenario. Early Exit Criterion permite al optimizador dejar de correr ms rplicas para el mismo escenario basndose en el critero que se seleccione.
Si seleccionaste Confidence Interval Satisfied el optimizador parar las replicas una vez que pueda determinar el valor verdadero de la media del escenario de acuerdo al los porcentajes de confianza (Percent Confidence) y error (Error Percent) especificados. Si especificas un 80% de confianza y un 5% de error, el optimizador parar las replicas tan pronto est 80% seguro que el valor verdadero de la media est dentro del 5% de la media muestreada. Si se selecciona Best Solution Outside Confidence el optimizador parar las rplicas para cierto escenario si puede determinar, dados los porcentajes de confianza y error, que la mejor solucin no podr encontrarse nunca con ese escenario.
Optimizando
Una vez que tengas configurados los parmetros, presiona el botn Apply para guardar tu configuracin y despus presiona el botn Optimize. Ahora debes esperar a que una mensaje aparezca indicando que la optimizacin ya finaliz. No debes hacer nada hasta que termine la optimizacin.
Cuntas mquinas necesito de cada tipo para obtener la mayor utilidad posible?
El sistema de produccin comprende 2 procesos: El proceso inicial puede ser realizado por 2 diferentes tipos de mquinas, cada una con una velocidad de produccin diferente y tambin un costo de operacin diferente. El tipo de mquina mas rpido es tambin ms caro de operar. En el proceso final se evala un solo tipo de mquina. El inventario entre el primer proceso y el ltimo no puede ser mayor a 30 unidades por restricciones de espacio.
Mquinas Tipo B para Proceso Inicial. Tiempo de produccin por unidad = 18 seg. Costo de operacin por hora = $2,600. Cantidad de mquinas = 1 a 5.
La Solucin ptima obtenida automticamente: Utilizar 5 mquinas tipo A, 2 tipo B y 8 del tipo C, para obtener una produccin de 2,186 unidades con una utilidad de $47,570.
Objetivo: Maximizar Utilidad Utilidad = Ingresos Costos de Operacin Precio de Venta por unidad = $45.00 Costos de Operacin: Mq. Tipo A = $4,000 Mq. Tipo B = $2,600 Mq. Tipo C = $3,200
Evalu en segundos una cantidad de 280 escenarios para encontrar la utilidad ms alta que fue de $47,570 (Solucin ptima).
Flexsim Chart
Para ver los resultados primero se debe activar la opcin Full History On y despus se corre la simulacin
No existe un lmite para la cantidad de pestaas que se pueden crear. Cada una de estas es un reporte especfico a la medida del usuario.
Botones para crear grficas: Cada uno de estos botones crea una pestaa nueva en la parte superior de la ventana; cada uno contiene diferentes tipo de registros que pueden desplegar
Ing. Jorge Toucet Torn. FLEXSIM MEXICO Simulacin y Optimizacin jorgetoucet@flexsim.com.mx www.flexsim.com.mx www.flexsim.com Celular: 045(33) 38.08.43.15 Oficina 01(33) 36.48.35.03 Av. Prol. Prol. Amricas No. 1551 Piso 1. Col. Providencia. C.P. 44630 Guadalajara, Jalisco. Mxico.
108