Sunteți pe pagina 1din 108

Entrenamiento Avanzado Simulador Flexsim

www.flexsim.com.mx

Las distribuciones estadsticas capturan la variabiliad de la vida real.


Density Function Plot
0.80 0.70 0.60 0.75 1.00

Density Function Plot

f(x)

0.40 0.30 0.20 0.10 0.00 -0.50

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

Density Function Plot


1.00 0.90 0.80 0.70
0.70 0.60 0.80

Density Function Plot

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.50 0.40 0.30 0.20 0.10 0.00 0.00

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

Operaciones con el Mouse


Navegacin en la ventana del layout:
Mover layout: click izquierdo y arrastrar. Inclinar y Rotar layout: click derecho y arrastrar. Zoom: click en botones derecho e izquierdo y arrastrar (o usar el botn de rueda del mouse).

MOVER ROTAR ZOOM 4

Operaciones con el Mouse


En los Objetos:
Mover en el eje X y en Y: click izquierdo y arrastrar Mover en el eje Z (altura) : click en botones derecho e izquierdo y arrastrar (o usar el botn de rueda del mouse).

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

Tamao Tama o y Rotacin de un objeto


A los objetos se les puede cambiar su posicin, rotacin y tamao desde la pestaa General. Tambin pueden modificarse desde el layout:
Puedes cambiar la posicin haciendo click izquierdo y arrastrando a la nueva ubicacin. Da un click derecho sobre un objeto y selecciona Edit Object Size/Rotation del men.
Click izquierdo y arrastra las flechas para cambiar el tamao
Arriba y a la derecha lo crecen. Abajo y a la izquierda lo hacen pequeo. Down and left are smaller

Click derecho y arrastra las flechas para rotar sobre cada eje, segn la flecha que selecciones. 6

Conexiones de los Puertos


Output/Input Ports: puertos de entrada y salida que definen las posibles rutas de los flowitems (productos) hacia o desde los Fixed Resources (recursos fijos).
Input Output

Conexiones de los Puertos


Center Ports: los puertos centrales son usados generalmente para llamar a un TaskExecuter para que procese o bien transporte un flowitem.

Center
8

Teclas para las conexiones de puertos


Outputs a Inputs Center a Center

Desconectar

Q A V

W S C
9

Conectar

Verlas

Otra forma de Conectar los Puertos


Los diferentes modos estn disponible en el men de la barra. Presiona la tecla ESC para regresar el cursor al modo normal
10

Viendo las conexiones de los puertos


El mostrar las conexiones de los puertos puede ser activado o desactivado desde la barra izquierda en la opcin View Settings seleccionando Show Connections. El tamao de los conectores de los puertos puede ajustarse con los botones + y - .
11

Clasificacin de los objetos


FixedResources objetos que mandan o reciben flowitems.

TaskExecuters recursos mbiles que desempean tareas asignadas


12

Biblioteca de objetos o Library


Library una lista de clase de objetos para ser utilizados al construir un modelo. Instancia una copia de uno de los objetos de la librera, creada en el modelo cuando un objeto es arrastrado desde la librera hasta el layout.

13

rbol de la Familia Flexsim


Flexsim Object Fixed Resource Source Dispatcher Task Executer
Operator

Navigator

Network Node Network Navigator

Visual Tool

Recorder

Queue
Transporter

Crane Navigator Traffic Control

Sink

Crane ASRS Vehicle Robot

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

Editando Objetos Seleccionados


Editar un grupo de objetos puede hacerse en los objetos seleccionados usando el menu Edit Selected Objects de la barra izquierda. Solamente un objeto puede estar highlighted Mltiples objetos pueden estar seleccionados

16

Comprendiendo las Listas de Opciones. Opciones.


El cdigo o seleccin actual Aadir otra instruccin al cdigo Borrar todo el cdigo completo La plantilla de cdigo (edicin amigable) El editor de cdigo (acceso a Flexscript/C++)
17

Plantilla de Cdigo Cdigo


El texto azul de la Plantilla de Cdigo puede ser reemplazado por culquier nmero o expresin vlidos. Estas plantillas pueden ser personalizadas o bien crear nuevas opciones desde la ventana de Edicin de Cdigo.
18

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

Request Transport From

posible demora
19

Anlisis estadstico en tiempo real del modelo

Reportes de Resultados, Grficas y Estadsticas


Conforme corre una simulacin en FlexSim, automticamente almacena informacin estadstica bsica referente a los objetos en el modelo. Estas estadsticas pueden verse usando una aplicacin especial llamada FlexSim Chart; el cual puede ser accedido desde el botn de inicio de Windows (para analizar datos que ya fueron recolectados) o bien desde FlexSim (si el analista desea revisar informacin nueva de un modelo a correr).

Reportes de Resultados, Grficas y Estadsticas


Para poder usar FlexSim Chart, primero se deber habilitar la opcin Full History On del men Statistics.

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.

Reporte de resultados al final de la simulacin

Grficos de Gantt

Reporte Financiero

Listado de Posibles Estados


41 - STATE_OPERATING 21 - STATE_SETUP 1 - STATE_IDLE 42 - STATE_STANDBY 22 - STATE_UTILIZE 2 - STATE_PROCESSING 43 - STATE_PURGING 23 - STATE_FULL 3 - STATE_BUSY 44 - STATE_CLEANING 24 - STATE_NOT_EMPTY 4 - STATE_BLOCKED 45 - STATE_ACCELERATING 25 - STATE_FILLING 5 - STATE_GENERATING 46 - STATE_MAXSPEED 26 - STATE_STARVED 6 - STATE_EMPTY 47 - STATE_DECELERATING 27 - STATE_MIXING 7 - STATE_COLLECTING 48 - STATE_STOPPED 28 - STATE_FLOWING 8 - STATE_RELEASING 29 - STATE_ALLOCATED_IDLE 49 - STATE_WAITING 9 - STATE_WAITING_FOR_OPERATOR 50 - STATE_ACCUMULATING 10 - STATE_WAITING_FOR_TRANSPORTER 30 - STATE_OFF_SHIFT 31 - STATE_CHANGE_OVER 11 - STATE_BREAKDOWN 32 - STATE_REPAIR 12 - STATE_SCHEDULED_DOWN 33 - STATE_MAINTENANCE 13 - STATE_CONVEYING 34 - STATE_LUNCH 14 - STATE_TRAVEL_EMPTY 35 - STATE_ON_BREAK 15 - STATE_TRAVEL_LOADED 36 - STATE_SUSPEND 16 - STATE_OFFSET_TRAVEL_EMPTY 37 - STATE_AVAILABLE 17 - STATE_OFFSET_TRAVEL_LOADED 38 - STATE_PREPROCESSING 18 - STATE_LOADING 39 - STATE_POSTPROCESSING 19 - STATE_UNLOADING 40 - STATE_INSPECTING 20 - STATE_DOWN

Reportes de Resultados, Grficas y Estadsticas


Existen dos bases de datos de Flexsim Chart muy importantes: Movement Table y State Table

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

Reportes de Resultados, Grficas y Estadsticas


State Table registra cada vez que un objeto cambia de estado. Momento que sucede el cambio Estado nuevo del objeto Nombre del objeto que cambi

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

Conectando un Fixed Resource a la Red.


Haz click sobre un nodo y arrastra presionando la letra A para crear la conexin entre el NetworkNode y el objeto desde donde debe realizarse la carga o la descarga.

Una lnea azul mostrar la conexin. Est lnea no est conectada a ningn puerto.

31

Conectando un TaskExecuter a la Red.


Haz click y arrastra una conexin entre el TaskExecuter y el NetworkNode mientras presiones la letra A. Una lnea roja indica que la conexin se ha realizado. Esta lnea no est conectada a ningn puerto.
32

Caminos de una sola direccin


Los segmentos de un camino pueden restringirse para que solo se pueda viajar en una sola direccin presionando la letra Q y haciendo un click y arrastrando en la direccin en la que quieras desactivar el viaje. El indicador de direccin verde ahora se pone en rojo, mostrando la direccin restringida.

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.

Si hay paso pero no se puede rebasar


34

Menu del Indicador de Direccin Direccin


Otra forma ms sencilla que conectar con la A para definir el tipo de segmento, consiste en hacer un click derecho sobre un indicador de direccin y escoger Haciendo click izquierda y presionando la la opcin deseada desde el X sobre el indicador de direccin tambin men. permite cambiar entre los diferentes modos de direccin. Utiliza la seccin Travel Networks de la barra del lado izquierdo para definir el tipo de conexiones predeterminadas e incrementar el tamao de los nodos de la red.
35

Puntos de control de curvas y rectas


Para crear un segmento curvo selecciona Curved desde el men contextual del indicador de direccin.

Aparecern puntos de control sobre el camino.

Arrastra los puntos de control para crear un camino curvo.


36

Diferentes Modos para ver los NetworkNodes


1. a
Las 6 diferentes opciones para ver la red pueden ser vistas presionando la letra X y haciendo click varias veces en cualquier NetworkNode. Cada click que se haga har que se cambie a una vista diferente.

2. A

5. A 3. A

6. a 4. A
37

Pestaa de los segmentos de camino.


Cada camino de un NetworkNode puede ser editado de varias maneras. Modos diferentes de direccin pueden especificare usando la lista Connection Type. Puede definir el espacio mnimo que debe mantenerse entre los viajeros de la red. Se puede especificar una velocidad mxima especfica para cada segmento. Una distancia virtual (Virtual Distance) puede establecerse. Este es un valor que de distancia forzado. Usando la distancia virtual, puedes dar a cualquier segmento una distancia artificial. Cundo puede ser conveniente especificar una distancia virtual?

38

Concepto de los Triggers


Cuando ocurren eventos clave en un objeto, en ese momento se dispara un trigger. Puedes especificar que quieres que sucenda cuando se disparara un trigger. Existen triggers que se activan cuando un flowitem entra o sale de un objeto. Otros se disparan cuando se termina el tiempo de proceso o se completa una reparacin. Cada tipo de objeto tiene su propia clase de triggers.
39

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

Estructura de los Nodos


Los nodos tienen un nombre. Nodos pueden contener estos tipos de informacin
number (numrica) string (texto) object (objeto)

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

Smbolos de los Nodos


Standard Folder Object Object data Function (C++) Function (FlexScript)

43

Ejemplo del rbol del Modelo

44

Qu es una funcin?
Nombredelafuncin(argumento1, argumento2, etc) Los argumentos pueden ser:
Valores numricos. Textos (string). Apuntador Pointer (*) a un objeto o node.

Ejemplo de una funcin:

colorrandom(item)

Muchas de las funciones de Flexsim son usadas para leer datos desde el rbol y salvar datos en el rbol.
45

Tablas de de Tiempos o Time Tables


A cualquier objeto en un modelo se le puede programar tiempos operacionales y no operacionales. Los programas pueden definirse grficamente o mediante tablas

46

Tablas de Tiempo o Time Tables


Los programas pueden ser por da o semanales Los bloques llenos son tiempos operacionales y los vacos son tiempos cados o de descanso.
47

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)

double precision con decimales


(2.5, 3.14159)

text string texto


(Reparando Montacargas)

treenode apunta a un nodo del rbol Flexsim


49

Declarando y dando un valor a las variables


int index = 1; double peso = 175.8; string categoria = exportacion; treenode montacargas = centerobject(current,1);
50

Operadores Matemticos Matemticos


x+y x-y x*y x/y sqrt(x) pow(x,y) round(x) frac(x) fmod(x,y) min(x,y) max(x,y)
x ms y x menos y x por y x entre y raz cuadrada de x X elevada a la potencia de y (xy) x redondeado al entero ms cercano regresa la parte decimal de x regresa el residuo de x/y regresa el mnimo de x y y regresa el mximo de x y y
51

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

Recuerda: = no es lo mismo que ==


= se usa para dar un valor == se usa cuando se compara
52

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

Recuerda: = no es lo mismo que ==


= se usa para dar un valor == se usa cuando se compara
54

Referencias Bsicas Bsicas de los Objetos


current item model() el objeto actual, el dueo del cdigo. el flowitem involucrado que dispara el evento. hace referencia al rbol del modelo.

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

Estadsticas Estad sticas Bsicas de los Objetos


content( object ) contenido o inventario getinput( object ) entradas al objeto getoutput( object ) salidas del objeto int inventario = content(current); Int entradas = getinput(current); int produccion = getoutput(current);
56

Atributos de espacio de los Objetos


xloc( object ) yloc( object ) setloc( object, xnum, ynum, znum ) xsize( object ) ysize( object ) setsize( object, xnum, ynum, znum ) xrot( object ) yrot( object ) setrot( object, xdeg, ydeg, zdeg ) zloc( object )

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

Atributos bsicos de los Objetos


getname( object ) setname( object, name ) getitemtype( object ) setitemtype( object, num) setcolor( object, red, green, blue ) colorred( object ) blue,green,random...
Cmo puedes encontrar los nombres de los otros colores?
59

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 ).

La informacin se muestra en la consola de salida (Output Console).


Selecciona View -> Output Console

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

Variables de Acceso y Returns


Campo de Edicin Setup Time Process Time MTBF MTTR Send To Port Pull From Port Pull Requirement Request Transport From Pick Operator OnReset OnMessage OnEntry OnExit OnSetupFinish OnProcessFinish OnBreakDown OnRepair Variables de Acceso current, item, port current, item current current current, item current current, item, port current, item, port current, item current current, msgsendingobject, msgparam1, msgparam2, msgparam3 current, item, port current, item, port current, item current, item current current Returns tiempo de demora tiempo de demora tiempo de demora tiempo de demora nmero de puerto nmero de puerto verdadero/falso (1/0) apuntador numrico apuntador numrico N/A N/A N/A N/A N/A N/A N/A N/A

62

if (SI Lgico)
if (expresin de prueba) {
bloque de cdigo

} else {
bloque de cdigo

if (content(item) == 2) { colorred(item); } else { colorblack(item); }

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

Labels de los Objetos


sintxis
getlabelnum( object, labelname ); setlabelnum( object, labelname , value ); getlabelstr( object, labelname ); setlabelstr( object, labelname , string ); label( object, labelname );

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

while (mientras mientras) ) lgico


while (test expression) {
code block

while (content(current) > 0) { destroyobject(last(current)); }

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

Pull From Port

OnExit

demora

Request Transport From

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

Control Bsico Bsico de Objetos


closeinput( object ); stopinput( object ); closeoutput( object ); stopoutput( object ); openinput( object ); resumeinput( object ); openoutput( object ); resumeoutput( object );

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

OnMessage trigger del objeto que recibe el mensaje

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

inserttask(tasksequence, tasktype, involved1, involved2, parameter1, parameter2, parameter3 ) dispatchtasksequence( tasksequence )


74

Cdigo de ejemplo de tasksequence


fsnode* montacargas = centerobject(current, 1); fsnode* origen = centerobject(current, 2); fsnode* destino = centerobject(current, 3); fsnode* item = first(origin); fsnode *ts = createemptytasksequence(montacargas, 0, 0); inserttask(ts, TASKTYPE_TRAVEL, origen, NULL); inserttask(ts, TASKTYPE_FRLOAD, item, origen); inserttask(ts, TASKTYPE_TRAVEL, destino, NULL); inserttask(ts, TASKTYPE_FRUNLOAD, item, destino); dispatchtasksequence(ts);
75

Tipos de Tareas (Task)


TASKTYPE_LOAD: flowitem, pickup TASKTYPE_FRLOAD: flowitem, pickup, [outputport] TASKTYPE_UNLOAD: flowitem, dropoff TASKTYPE_FRUNLOAD: flowitem, dropoff, [inputport] TASKTYPE_UTILIZE: involved, station, [state] TASKTYPE_STOPREQUESTFINISH: stoppedobject, NULL TASKTYPE_TRAVEL: destination, NULL TASKTYPE_TRAVELTOLOC: NULL, NULL,xloc,yloc,zloc, [endspeed] TASKTYPE_TRAVELRELATIVE: NULL, NULL,xloc,yloc,zloc, [endspeed] TASKTYPE_BREAK: NULL, NULL TASKTYPE_DELAY: NULL, NULL, delaytime, [state] TASKTYPE_SENDMESSAGE: receiver, NULL, [param1,param2,param3] TASKTYPE_MOVEOBJECT: flowitem, container, [port] TASKTYPE_DESTROYOBJECT: object, NULL
Parmetros Cafs son requeridos, parmetros [Grises] son opcionales. ** utiliza profiletasksequence(ts) para enviar una descripcin detallada al Output Console. 76

Experimentacin con Flexsim


El Experimenter se encuentra en el men Statistics Permite correr el modelo a travs de diferentes escenarios, cambiando ciertas variables en cada uno de ellos. Puede usarse con varias rplicas por escenario recolectando datos

Experimentacin con Flexsim

Experimentacin con Flexsim


Activa la herramienta Experimenter

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.

Experimentacin con Flexsim


Despus que el modelo ha corrido durante este tiempo, las estadsticas se borran y arrancan otra vez, pero el modelo sigue corriendo. Cuando el modelo ha corrido por este tiempo, el modelo se detiene y arranca la siguiente rplica o escenario su los hay.

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.

Tipos de Variables de Decisin


El motor del OptQuest manipula las variables de decisin buscando los valores ptimos. Existen 7 tipos de variables de decisin diferentes. Las 3 principales son las siguientes: User-Controlled: se utilizan como variables de retroalimentacin para poder comparar y calificar entre distintos escenarios. Integer: una variable discreta con un rango de valores enteros con incrementos de 1. Permutation: variable de permutacin que permite resolver problemas de sequenciado o programacin de la produccin y de surtidos de rdenes. Por ejemplo para saber el orden en el cual se debe mezclar la pintura para minimizar los tiempos de limpieza entre los cambios de color. El valor de la permutacin representa el orden dentro de la secuencia.

Tipos de Variables de Decisin


Las 4 restantes son las siguientes: Discrete: variable discreta que comienza con un valor mnimo y se va incrementando hasta llegar al valor mximo. Continuous: variable contnua que puede tomar cualquier valor entre un mnimo y un mximo especificados por el usuario. Binary: una variable discreta binaria con valores de 0 o 1. Design: las variables de diseo se usan para decisiones en donde las variables representan una alternativa y no una cantidad. Son tiles cuando la variable de decisin consiste en seleccionar la mejor alternativa de un catlogo de opciones y un nmero mayor no implica el compromiso de mayores recursos. Por ejemplo, la opcin #10 podra no ser ms costosa o una mejor opcin que la opcin #1. Se le define un lmite inferior, un lmite superior y un valor de salto que controla el nmero de opciones disponibles dentro de un rango especfico.

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.

Nuestro Proceso a Optimizar


Mquinas Tipo A para Proceso Inicial. Tiempo de produccin por unidad = 10 seg. Costo de operacin por hora = $4,000. Cantidad de mquinas = 1 a 7. Mquinas Tipo C para Proceso Final. Tiempo de produccin por unidad = 13 seg. Costo de operacin por hora = $3,200. Cantidad de mquinas = 1 a 8.

Precio de Venta por unidad = $45.

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.

Datos del ltimo escenario analizado

Rango mnimo y mximo de la cantidad de mquinas que se quieren evaluar.

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).

El ltimo escenario analizado arroj una prdida de $5,540

Flexsim Chart
Para ver los resultados primero se debe activar la opcin Full History On y despus se corre la simulacin

Al finalizar la corrida selecciona Reports and Statitiscs.

Oprima Generate Report Guarde el archivo .mdb

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

Pasos para importar un layout desde AutoCAD


En AutoCAD: 1) Elimina todo el detalle extra que no necesites del layout (para hacerlo ms ligero). Borra achurados y dems elementos no escenciales. 2) Mueve el layout cerca del origen (coordenadas 0,0,0) utilizando el comando MOVE o MOVER. 3) Seleccionar Save as o Guardar como y guardarlo como .DXF

Pasos para importar un layout desde AutoCAD


En Flexsim:
1) Poner un VisualTool sobre el layout. 2) Doble click sobre ste para entrar a los parmetros. 3) En la parte superior donde dice Visual Display seleccionar de la lista Imported Shape. 4) En la parte de abajo donde dice Filename, presionar el botn de los 3 puntos () y buscar el el layout con extensin .DXF 6) En RX poner -90 (para que acueste el layout sobre el suelo). 7) Activar el campo luminous para que se vean todos los colores sin que se afecten por las sombras y luces.

Pasos para importar un layout desde AutoCAD


En Flexsim:
Si las unidas del dibujo del layout son metros poner SX = 1, SY = 1, SZ = 1 (como viene por default). Si no est en metros, debes poner lo siguiente: Si las unidas son centmetros poner SX = 0.01, SY = 0.01, SZ = 0.01. Si las unidas son milmetros poner SX = 0.001, SY = 0.001, SZ = 0.001 Si est en pies poner SX = 0.3, SY = 0.3, SZ = 0.3 Una vez listo tu layout, para dejarlo fijo y no que lo muevas por error, activa la opcin No Select. Si necesitas volverlo a editar no lo vas a poder seleccionar desde el layout, pero si presionas el botn tree de arriba puedes hacerlo, buscando el nombre del layout y haciendo doble click sobre el icono.

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

S-ar putea să vă placă și