Está en la página 1de 108

Entrenamiento Avanzado

Simulador Flexsim
www.flexsim.com.mx

Las distribuciones estadsticas capturan


la variabiliad de la vida real.
Density Function Plot

Density Function Plot

0.80

1.00

0.70
0.60

0.75

f(x)

f(x)

0.50
0.40

0.50

0.30
0.20

0.25

0.10
0.00
-0.50

0.00

0.50

1.00

1.50

0.00
0.0

2.00

1.0

2.0

3.0

X-Value

4.0

5.0

6.0

X-Value

3 - Normal

2 - Exponential

Density Function Plot

Density Function Plot


1.00

0.80

0.90
0.70

0.70

0.60

0.60

0.50

f(x)

f(x)

0.80

0.50
0.40

0.40
0.30

0.30

0.20

0.20
0.10

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

0.00
0.00

0.50

0.75

1.00

1.25

1.50

1.75

2.00

2.25

2.50

X-Value

X-Value
4 - Lognormal

0.25

1 - Weibull

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

Conectar

Verlas

Desconectar

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

Navigator

Task Executer

Network Node
Network Navigator

Visual Tool

Recorder

Operator

Queue

Crane Navigator
Transporter

Sink

Traffic Control

Crane
ASRS Vehicle

Rack

Robot

Reservoir
Elevator

MultiProcessor

Conveyor

Processor
MergeSort

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

Pick Operator

Process Time

demora

OnProcessFinish

OnExit

demora

Setup Time

Pick Operator

OnSetupFinish

Request
Transport From

demora

Send To Port

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

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

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

integer entero.
(1, 2, 3, 14324)

double

double precision con decimales


(2.5, 3.14159)

string

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 )

zloc( object )

xsize( object )
ysize( object )
setsize( object, xnum, ynum, znum )

zsize( object )

xrot( object )
yrot( object )
setrot( object, xdeg, ydeg, zdeg )

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

Variables de Acceso

Returns

Setup Time

current, item, port

tiempo de demora

Process Time

current, item

tiempo de demora

MTBF

current

tiempo de demora

MTTR

current

tiempo de demora

Send To Port

current, item

nmero de puerto

Pull From Port

current

nmero de puerto

Pull Requirement

current, item, port

verdadero/falso (1/0)

Request Transport From

current, item, port

apuntador numrico

Pick Operator

current, item

apuntador numrico

OnReset

current

N/A

OnMessage

current, msgsendingobject,
msgparam1, msgparam2, msgparam3

N/A

OnEntry

current, item, port

N/A

OnExit

current, item, port

N/A

OnSetupFinish

current, item

N/A

OnProcessFinish

current, item

N/A

OnBreakDown

current

N/A

OnRepair

current

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

OnSetupFinish

Process Time

Pull From
Port

OnExit

Pull Requirement

demora

Pick Operator

demora

demora

Pick Operator

demora

Request
Transport From

OnEntry

Setup Time

Send To Port

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

También podría gustarte