Manual Básico Witness Mío - UVa · 2013-07-05 · Algunas de las ventajas más importantes que...

68
MANUAL BÁSICO DE WITNESS

Transcript of Manual Básico Witness Mío - UVa · 2013-07-05 · Algunas de las ventajas más importantes que...

MANUAL BÁSICO DE

WITNESS

EL PAQUETE DE SIMULACIÓN WITNESS.

1. INTRODUCCIÓN.

En la actualidad hay en el mercado gran cantidad de software

de simulación debido a la creciente demanda que está teniendo esta

técnica de ayuda a la toma de decisiones.

Entre los paquetes disponibles se encuentran Arena, Automod,

Instrata, Mentor, Pro-Model, Simple ++, Taylor II y Witness, cada

uno con características distintas en cuanto a su capacidad de

modelización, su rapidez, su rigurosidad estadística, su capacidad

gráfica, su facilidad en el análisis y su coste. Decidirse por uno u otro

dependerá de la experiencia que tenga el analista con los diversos

programas, del tipo de sistema a simular, así como del coste que

supone para la empresa la adquisición del paquete, el hardware

necesario para su utilización y el aprendizaje del personal.

2. EL PAQUETE DE SIMULACIÓN WITNESS (V. 8.0).

Algunas de las ventajas más importantes que presenta Witness

y que le hacen apropiado para su elección como herramienta de

trabajo son las siguientes:

1. Las personas pueden conseguir un compromiso trabajando juntos

como equipo en la creación y uso de los modelos Witness.

2. Los modelos pueden ser creados y probados con pequeñas

variaciones en los distintos estados, esto simplifica de gran

manera la construcción del modelo y ofrece la posibilidad de

identificar errores en la lógica y hace el modelo más fiable.

3. El modelo puede ser cambiado durante el tiempo de ejecución, los

cambios son incorporados inmediatamente, ajustando lo más

rápidamente posible el modelo construido.

Además Witness puede ser utilizado en una gran variedad de

sectores y entornos:

• Industria del automóvil.

• Industria química.

• Electrónica.

• Industria aeroespacial.

• Ingeniería.

• Alimentación.

• Papel y cartón.

• Banca y finanzas.

• Transporte.

• Gobierno.

El paquete Witness es suministrado por la empresa británica

AT&T Istel. En 1979 la compañía Istel fue adquirida por la

multinacional ATT, constituyendo así una organización dedicada a

proporcionar conocimientos técnicos sobre ordenadores y

comunicaciones.

AT&T Istel lanzó en 1979 el paquete de simulación interactivo

SEE WHY (que ya incluía gráficos animados), el cual derivó en la

aparición del paquete Witness en el año 1986.

2.1. CARACTERÍSTICAS GENERALES DEL PAQUETE.

Witness es un paquete de simulación interactiva atractivo

fundamentalmente para el mundo industrial por los siguientes

motivos:

• permite crear modelos de sistemas en los que fluye algún elemento

(admite hasta 32000 parts) a través de distintos puestos de

trabajo (machines), pudiendo modelizarse además almacenes

(buffers), transportadores (conveyors), trabajadores (labours),

transportes (tracks & vehicles), turnos de trabajo (shifts), etc...,

que ayudarán a definir el sistema a modelizar.

• permite el empleo de gran cantidad de variables y atributos para, a

través de su lenguaje de programación propio, poder modelizar

correctamente el funcionamiento de nuestro sistema.

• permite crear modelos gráficos con movimiento, dotando a la

simulación de gran claridad, entendimiento, rigurosidad e impacto

visual.

• ofrece gran cantidad de datos como salida de un experimento de

simulación para su posterior estudio, bien directamente, a través

de los informes generados, o bien volcando los ficheros de datos

generados a alguna aplicación informática que permita su

tratamiento.

• es fácil de comprender para una persona sin conocimientos

previos, aunque el dominio de todos sus elementos y su lenguaje

propio de programación es algo más complejo.

• es fácil de utilizar gracias al entorno Windows con el que trabaja:

ventanas, cajas de diálogo y menús desplegables manejables con

el ratón.

• dispone de un sistema de ayuda on-line, pulsando F1 en cualquier

momento.

• permite la utilización en un experimento de datos incluidos en

ficheros realizados por otro programa (una hoja de cálculo como

Excel, por ejemplo) y generar los resultados de la simulación en

forma de un fichero manipulable desde otro programa informático.

• puede “editarse” (construirse, modificarse) un modelo sin

necesidad de correr Witness mediante un programa de edición de

texto como Write (Windows), manipulando un archivo librería *.lst.

• permite crear ficheros de arranque en formato ASCII (con Write,

por ejemplo) para poder concatenar varios experimentos uno tras

otro, de modo que se pueda dejar corriendo el ordenador hasta

que finalice todas las simulaciones programadas. Después será

posible examinar el modelo en aquel punto de la simulación al que

ha llegado.

• pueden crearse submodelos que puedan ser copiables, borrables,

desplazables e interconectables, lo que permite un diseño modular.

• permite realizar gráficas (timeseries) e histogramas (histograms)

de determinados parámetros del modelo que interese estudiar,

para facilitar su comprensión y ver su variación temporal.

• pueden emplearse gran cantidad de distribuciones de probabilidad,

tanto teóricas como empíricas, para proporcionar aleatoriedad al

modelo (dispone de 1000 series de números aleatorias distintas).

Así mismo, es posible establecer varios tipos de “roturas” a la vez

en cada uno de los centros de trabajo del modelo.

2.2. MODELIZANDO CON WITNESS.

Una realidad industrial puede estar formada por un conjunto de

piezas que fluyen a través de un conjunto de máquinas en las que

son mecanizadas, montadas, divididas, etc...

Además de esto, el sistema puede estar compuesto por

diversos transportadores (que llevan las piezas de un lugar a otro),

almacenes, operarios (necesarios para que una máquina funcione,

para hacer reparaciones, para hacer cambios de herramienta, etc...),

vehículos (para transportar las piezas), etc...

Por otra parte, las piezas deben fluir en un determinado orden y

sentido, pueden fluir solas o en grupo, las máquinas y operarios

harán una cosa u otra en función de ciertos parámetros, etc...

Esta realidad industrial puede ser plasmada en un modelo

Witness empleando los elementos de los que dispone el programa así

como programando el modelo mediante una lógica de control

adecuada.

En Witness, los modelos se construyen de acuerdo a unos

procedimientos concretos y utilizando unos elementos determinados.

Cada elemento modelizará a alguna parte del sistema real que se

desea simular, pero no es necesario tratar de plasmar todos y cada

uno de los elementos del sistema real, sino sólo los indispensables.

Cada elemento de Witness puede simular gran variedad de

cosas, y una misma cosa se puede simular por lo general con varios

elementos indistintamente. La elección de un elemento u otro debe

hacerse en función de la sencillez y facilidad de interpretación del

modelo resultante.

2.3. CONSTRUCCIÓN DE UN MODELO CON WITNESS.

Primero se va a describir los pasos a seguir para la creación de

un modelo Witness, después ya se estaría en condiciones de utilizar

el modelo y finalmente se podrán extraer conclusiones con los

resultados de los experimentos realizados y con los informes

obtenidos, para profundizar en el estudio del sistema modelizado.

Figura 1 Pantalla inicial

Tras un estudio del sistema que se pretende modelizar se

deberán conocer los elementos que constituyen nuestro sistema real

y su funcionamiento, para empezar a pensar en elegir los elementos

de Witness adecuados para modelizar cada elemento real, teniendo

en cuenta hacerlo de un modo sencillo y eficaz. Determinado esto,

podemos comenzar a construir el modelo y así entraremos en el

programa apareciendo inicialmente la pantalla de la figura 1.

Para empezar a trabajar se creará un nuevo modelo, para esto

se pinchará sobre Model y del desplegable que aparece sobre

Elements y entonces se rellenará los campos que aparecen en la

siguiente pantalla, relativos al título del modelo, autor y comentarios.

Figura 2 Definición de modelo

A partir de ahora se pasará por tres etapas diferentes que

son las siguientes:

• Define: se crean o definen los elementos de los que consta el

modelo (tanto físicos como lógicos), dándoles un nombre y una

información básica acerca de los mismos. Sin el desarrollo de esta

fase no pueden desarrollarse las otras dos.

• Display: se crea la representación gráfica del elemento en el

modelo con el objeto de hacer la simulación más intuitiva y fácil de

comprender. Esta fase no es imprescindible, pero sí recomendable

para obtener la visualización del sistema y detectar errores.

• Detail: se detallan todas las características del elemento, las

reglas lógicas que permiten su interacción con los demás

elementos (reglas de entrada y salida) y las acciones que deben de

simularse cuando se produce un hecho determinado en el elemento

(actions).

Las fases no suelen desarrollarse secuencialmente, sino que se

va pasando de una a otra según se va avanzando en la construcción

del modelo. A veces habrá que modificar elementos, ya que el

proceso de modelización tiene una constante retroalimentación.

Figura 3 Opción Model - Elements

Para empezar la construcción del modelo seleccionando una vez

más las opciones Model y Elements consecutivamente, y así

aparecerá la siguiente pantalla de la figura 3., que ofrece múltiples

opciones.

Para crear los elementos del modelo, se utilizará la opción de

selección de elementos, para cada uno de los cuales se puede elegir

entre las siguientes opciones, para introducir sus características, las

tres primeras corresponden a las anteriormente explicadas:

• DEFINE

• DISPLAY

• DETAIL

• CLONE: Es posible clonar elementos, de los que habrá que indicar

su nombre y se podrá elegir para estos la opción DISPLAY.

• COPY DISPLAY, COPY DETAIL, PASTE DISPLAY, PASTE DETAIL: Se

pueden usar estos botones para copiar las características

introducidas en DISPLAY o DETAIL de un elemento a otro

• FILTER: Permite reducir la lista de todos los elementos definidos en

el modelo. Se puede reducir el tamaño de esta lista filtrando los

elementos que no se necesitan ver en ese momento, las opciones

son:

- ALL: Selecciona los elementos (por defecto).

- TIPO: Permite elegir algún tipo en concreto.

- SELECTION: Antes de pinchar en filtrar se seleccionan los

elementos requeridos.

Figura 4 Opción para filtrar los elementos del modelo.

• SORT: Si el modelo tiene muchos elementos, se pueden reordenar

y reducir el tamaño de la lista para hacerla más manejable.

Se puede ordenar la lista de las siguientes formas:

- DEFAULT: Ordena la lista en el orden en el que los

elementos fueron introducidos en el modelo.

- ALPHABETICALLY: Ordena los elementos alfabéticamente.

- BY TYPE: Los elementos son ordenados por el tipo, o tipos,

seleccionados.

- BY CUSTOM: Eligiendo esta opción se permite desde otra

ventana de diálogo reordenar los elementos moviéndolos

arriba o abajo.

Figura 5 Opción para ordenar los elementos del modelo

• PICK FROM DISPLAY: Permite seleccionar los elementos desde la

ventana de simulación.

• DELETE: Elimina el elemento o elementos especificados del

modelo. Si un modelo es referenciado por otros elementos de ese

modelo, no se permitirá que sea eliminado.

2.3.1. ELEMENTOS DE MODELIZACIÓN DE WITNESS.

Un modelo de Witness está compuesto por diversos elementos

físicos conectados entre sí mediante una serie de reglas lógicas

denominadas reglas de entrada y salida. Cada componente del

sistema real tendrá una representación mediante uno o más

elementos de Witness.

El propósito de la simulación será construir un modelo de un

escenario particular, ponerlo en marcha y recoger resultados,

después hacer cambios en el modelo y ponerlo en funcionamiento

otra vez y comparar los resultados con el modelo original. En la vida

real esto sería muy caro y requeriría mucho tiempo de

experimentación.

Para simular un proceso, Witness utiliza la misma combinación

de gentes, piezas y máquinas que en la vida real. Cada factor de

producción será uno de los llamados ELEMENTOS del modelo.

Hay cuatro categorías de elementos: discretos, continuos,

lógicos y gráficos, a continuación se describen brevemente para ser

tratados con detalle más adelante.

1. ELEMENTOS PROCESOS DISCRETOS

PARTS: Se mueven individualmente en el modelo, por ejemplo,

componentes físicos, personas moviéndose en un supermercado...

BUFFERS: Son lugares donde se almacenan PARTS, por ejemplo,

gente en una cola, medicinas en una estantería, tornillos

esperando a ser procesados...

MACHINES: Son elementos muy potentes que son usados para

representar como las piezas se cogen de algún lugar, se procesan

y se envían a otro destino. Pueden manejar una o más partes al

mismo tiempo. También pueden desarrollar varios ciclos en una

estación de trabajo o un ciclo (single cycle) en muchas estaciones.

CONVEYORS: Mueven PARTS desde un punto fijo en el modelo a

otro en un periodo de tiempo

VEHICLES: Transportan PARTS

TRACKS: Son las rutas/caminos por donde circulan los VEHICLES

LABOUR: Recurso que necesitan otros elementos para desarrollar

ciertas operaciones (limpiar, reparar...).

MODULES: Contienen grupos de elementos

2. ELEMENTOS PROCESOS CONTINUOS

FLUIDS: Fluyen de forma continua a través de los elementos que

a continuación se indican. También se pueden utilizar estos

elementos en modelos que no emplean líquidos para representar

por ejemplo, tráfico denso, el correo,...

TANKS: Son los elementos en los que se almacenan los FLUIDS

PROCESSORS: Son equivalentes a las MACHINES pero para los

FLUIDS.

PIPES: Se encargan de conectar PROCESSORS y TANKS.

3. ELEMENTOS LÓGICOS

ATTRIBUTES: Son valores vinculados a un elemento PART. Por

ejemplo, número de cilindros de un motor.

VARIABLES: Son valores que pueden ser accedidos desde

cualquier lugar del modelo.

DISTRIBUTIONS: Permiten construir la variabilidad del modelo

incluyendo datos que habrán sido recogidos del sistema que se

está recogiendo en el modelo.

FILES: Se pueden emplear para importar valores a la simulación o

para exportar datos que pueden ser usados en otros programas o

informes.

FUNCTIONS: Son funciones ya preparadas para devolver

información acerca del estado del modelo, o construir la

ruta/comportamiento del modelo.

SHIFTS: Son modelos de trabajo que pueden ser referenciados por

otros elementos, permitiendo construir el modelo sobre tipos de

secuenciación ya definidos.

PART FILES: Contiene una lista de partes; para cada parte en el

fichero se puede especificar en que momento llega al modelo. Esto

es muy útil para los problemas de programación de horarios,

producción...

4. ELEMENTOS GRÁFICOS

TIMESERIES: Permiten representar sobre la pantalla los resultados

de la simulación de forma gráfica (valores de una variable frente al

tiempo). Resultan muy útiles para determinar tendencias y ciclos

en los modelos representados.

HISTOGRAMS: Permiten representa los resultados de la simulación

en la pantalla en forma de diagrama de barras. Son útiles para

determinar el rango de valores observados de algún parámetro de

la simulación.

PIE CHARTS: Permiten presentar los resultados de la simulación

en la pantalla en forma de gráfico de sectores.

Una vez definidos los elementos del modelo, hay que indicar

cuáles son las relaciones entre ellos y entre que puntos se mueven,

esto se hará utilizando las reglas de salida y entrada que deberán ser

especificadas para cada uno de los elementos.

Definidas ya las relaciones entre elementos es el momento de

poner en funcionamiento el modelo, y se podrán realizar las

modificaciones convenientes en cada caso, como puede ser añadir,

cambiar o borrar elementos y comparar los efectos que producen

estos cambios.

La posibilidad de construir un modelo en el que se pueden

realizar pequeños incrementos y ver que consecuencias producen, va

a resultar ser muy útil para la etapa de validación del modelo.

3. ELEMENTOS: OPCIONES DETAIL Y DISPLAY

En este apartado se describen las características que Witness

permite que se definan de los elementos definidos, tratando con

mayor detalle los elementos utilizados para simular sistemas

discretos.

3.1. ELEMENTOS PROCESOS DISCRETOS.

3.1.1. PIEZAS (PARTS)

Son los elementos que fluirán a través del modelo, pasando de

unos elementos a otros en función de las reglas de entrada y salida

de los mismos. La entrada en el modelo se realiza desde un elemento

predefinido llamado world o a través de un fichero de piezas -part

file- que indica cuándo entra cada pieza en el modelo y en qué

número, y la salida del modelo se hace hacia otro elemento

predefinido llamado ship o hacia un fichero de piezas -part file- que

recoge cuándo sale cada pieza del modelo.

Las piezas pueden representar cualquier cosa: paletas,

motores, personas, cartas, bebidas, etc.., qué constituyan aquellos

elementos que fluyen por el modelo.

Las piezas pueden visualizarse en el modelo (display) de una de

las siguientes formas: como iconos, como las 4 iniciales de su

nombre o como un simple contador que señala el número de parts

que hay dentro de un elemento. Para determinar la forma en la que

se visualizará este tipo de elementos se elegirá la opción Display

ofreciendo la siguiente barra de herramientas.

Figura 6 Opción Display Part

Cada pieza puede llevar asociada uno o varios atributos que

pueden tomar distintos valores en distintos momentos de la

simulación, activando o no diferentes eventos lógicos.

Las piezas pueden moverse individualmente, en grupo, pueden

juntarse o dividirse, pueden transformarse en otro tipo de piezas en

el transcurso de la simulación, etc...

Las características de las Parts que hay que definir en Witness

desde la opción Detail son las siguientes:

Figura 7 Opción Detail Part

NAME: nombre de la pieza (hasta 8 caracteres).

TYPE: indica si los atributos de la part serán fijos (no puede cambiar

su valor durante la simulación) o variables (puede variar su valor

durante la simulación).

VALUES: da valor a los atributos fijos, caso que sean de este tipo. A

los variables se les da valor en el campo Actions.

GROUP NUMBER: indica en número del grupo de atributos variables al

que pertenece el part.

ARRIVAL MODE: indica si la llegada activa de piezas al modelo desde

el world está activada o no. Se debe emplear el modo PASIVE cuando

las piezas entren a través de un Part file).

MAXIMUN ARRIVALS: máximo número de piezas que pueden entrar al

modelo.

INTER ARRIVAL TIME: tiempo entre llegadas de las distintas piezas al

modelo.

FIRST ARRIVAL AT: momento temporal en que la primera pieza llega

al modelo.

LOT SIZE: tamaño del lote de piezas que llegan a la vez al modelo.

SHIFT: turno de trabajo en el que llegan las piezas.

OUTPUT RULE: regla de salida que indica a qué elemento y bajo qué

condiciones será enviada la pieza a dicho elemento.

PART ROUTE: permite definir la ruta que seguirá la pieza a través del

modelo, identificando los distintos puntos o stages por los que deberá

pasar. Para utilizar un part route hay que emplear como reglas de

entrada/salida de los distintos elementos push/pull to Route.

CONTAINS FLUIDS: indica si ese part es un fluido, su tipo y su

volumen.

ACTIONS: indican las órdenes lógicas programadas a ejecutar cuando

una pieza es creada (create) o abandona el modelo (leave). Estas

acciones permiten “programar” el modelo de modo que actúe como

es deseado que lo haga.

REPORTING: sirve para indicar, si se desea, que se tomen

estadísticas sobre esa pieza.

3.1.2. MAQUINAS (MACHINES):

Son los elementos que operan con las piezas: que reciben de

otro elemento, realizan alguna acción con las mismas en un cierto

tiempo (cycle time), y las envían a otro elemento.

Son el elemento principal de simulación y tienen gran utilidad

por poder representar gran variedad de operaciones realizadas por

máquinas o personas: una máquina que mecaniza o monta piezas, un

trabajador, un elevador, una mesa de giro, etc...

Gráficamente pueden representarse por un icono (propio del

programa o diseñado por nosotros) que puede cambiar de color en

función del estado de la máquina durante la simulación,

seleccionando status en el menú display machine como se observa en

la figura.

Figura 8 Opción Display Icon

El significado de cada uno de los colores es:

Verde - ocupada (busy)

Amarillo - esperando piezas (idle)

Magenta - bloqueada (blocked)

Roja - averiada (down)

Azul - esperando operario para funcionar

Cyan - esperando operario para ser configurada

Blanco - fuera de turno

Sólo los elementos monocromáticos pueden cambiar de color

cuando el elemento cambia de estado.

Existen varios tipos de máquinas, dependiendo del nº de piezas

que procesen a la vez:

SINGLE: sólo procesan una pieza cada vez.

BATCH: procesa un lote de piezas a la vez. En éste tipo de máquinas,

las piezas van entrando hasta completar el tamaño del lote, para el

cycle time y el lote sale de la máquina hacia el siguiente elemento

detallado en la output rule. El cycle time no empieza a contar hasta

no disponer de todas las piezas del lote en la máquina.

ASSEMBLY: entran varias piezas, son ensambladas y sale sólo una

pieza. El cycle time no empieza a contar hasta no disponer de todas

las piezas en la máquina.

PRODUCTION: entra una pieza y sale esa pieza más una cantidad

fijada de otra pieza que se desea producir.

GENERAL: entra una cantidad fijada de piezas y sale otra cantidad

fijada de esas piezas. Si entran dos piezas de tipo distinto y sale sólo

una pieza, su tipo será el mismo que el de la primera pieza que entró.

MULTI-STATION: máquina con varias posiciones a las que van

entrando secuencialmente las piezas una tras otra.

Las características de las Machines que hay que definir en

Witness son las que aparecen en la siguiente pantalla y en cada una

de sus pestañas:

Figura 9 Opción Detail machine

NAME: nombre de la máquina (hasta 8 caracteres)

QUANTITY: número de máquinas exactamente iguales (hasta 99) que

deseamos modelizar.

TYPE: tipo de la máquina (single, batch, general,..).

PRIORITY: prioridad de esa máquina frente a las demás cuando una

pieza o un labour puede ir a varias máquinas. Un “1” indica máxima

prioridad y un “0” indica sin prioridad.

LABOUR: indica si la máquina precisa de algún labour (operario,

herramienta) para su puesta en marcha (set-up), su funcionamiento

normal (cycle) o su reparación (repair). Se indica además la cantidad

(quantity) de labour requerida y su tipo.

RULES: sirven para indicar a las máquinas los criterios bajo los cuales

las piezas entran (Input rules) o salen (Output rules) de las

máquinas.

CYCLE TIME: indica el tiempo de operación de la máquina.

BREAKDOWNS: sirven para establecer cómo la máquina se estropea,

fijando la ley o distribución estadística bajo la que lo hace, el tiempo

medio de reparación (m.t.t.r. -mean time to repair) y el tiempo

medio entre fallos (mtbf- mean time between failures).

Las máquinas sólo pueden romperse si tienen dentro pieza/s.

Las roturas pueden establecerse en función de:

• el tiempo que la máquina esté libre (availible time). En este caso el

m.t.b.f. se calculará como el tiempo medio entre el comienzo de

una rotura y el comienzo de la siguiente

• el tiempo que la máquina esté ocupada (busy time)

• el número de operaciones realizadas por la máquina.

La versión 8.0 de Witness tiene capacidad para establecer

varios tipos de rotura para cada una de las máquinas, de modo que

una máquina pueda romperse por distintos motivos, cada uno función

de una distribución estadística distinta.

ACTIONS: indica las acciones lógicas programadas a ejecutar cuando

la máquina comienza a trabajar, cuando finaliza, cuando se rompe o

cuando es reparada.

SETUP: establece si es requerida una puesta en marcha de la

máquina, si se hace siempre o cada cierto tiempo, y su duración.

Witness permite hasta 99 configuraciones (setup) distintas para cada

elemento. Pueden establecerse tiempos de configuración en función

del número de operaciones realizadas (n. of operations), en función

del tipo de pieza que llegue a la máquina (part change) o en función

del cambio en el valor de alguna variable (value change). Es un

campo muy potente que permite muchas opciones.

REPORTING: sirve para indicar si deseamos que se tomen

estadísticas sobre esa máquina.

FLUID RULES: definen las reglas para el manejo de fluidos (llenado y

vaciado).

SHIFT DETAIL: permite especificar el turno de trabajo en el que opera

la máquina.

3.1.3. ALMACENES (BUFFERS)

Son elementos que almacenan piezas, sirviendo para

representar un almacén, una cola, un conjunto de pedidos a procesar,

etc... Los buffers son elementos pasivos que no pueden tomar ni

soltar piezas desde/hacia otros elementos, sino simplemente

almacenarlas.

Puede especificarse la forma en que las piezas entran y salen

del buffer, de diferentes formas: definiéndose reglas fifo (por

defecto), lifo, por el valor de algún atributo, por una posición

concreta, etc...

Figura 10 Opción Detail Buffer

El número máximo de piezas que cabe en un buffer viene

definido por el valor incluido en el campo CAPACITY.

Puede desearse que las piezas tengan que estar un tiempo

mínimo dentro del buffer antes de poder salir del mismo. Esto puede

implementarse por medio del campo DELAY TIME.

Otras características de los Buffers que hay que definir en

Witness y que se observan en la figura 10., son:

NAME: nombre del buffer (hasta 8 caracteres).

QUANTITY: número de buffers exactamente iguales (hasta99)

INPUT POSITION: indica cómo son colocadas las piezas cuando

entran al buffer (rear-última posición-, front -primera posición-, at -

colocadas en una posición específica-, by attribute -ordenadas según

el valor de algún atributo).

OUTPUT POSITION: indica cómo abandonan las piezas el buffer (first

-la que ocupa la primera posición, max/min- aquella cuyo valor de

una expresión es máximo/mínimo, any -aquella que ocupa una

determinada posición, condition -aquella que satisfaga una condición-

).

SEARCH FROM: indica como Witness escanea el buffer en busca de la

primera pieza que debe salir del mismo (rear -desde atrás hacia

delante-, front -desde delante hacia atrás-).

ACTIONS: indica las acciones lógicas programadas a ejecutar cuando

una pieza entra en el buffer (in), cuando una pieza sale del buffer

(out) o cuando una pieza cumple su delay time (end delay).

REPORTING: sirve para indicar si deseamos que se tomen

estadísticas sobre ese buffer

3.1.4. TRANSPORTADORES (CONVEYORS)

Son elementos que sirven para transportar las piezas de un

elemento a otro del modelo. Las piezas van en fila a una velocidad

dada, atravesando el conveyor.

Un conveyor tiene un determinado número de posiciones. Las

piezas entran en el conveyor según la regla de entrada programada,

van atravesando sucesivamente las distintas posiciones del conveyor

(tardando un cycle time en pasar de una posición a otra), hasta llegar

a su final o a un punto prefijado, abandonando el conveyor según la

regla de salida programada.

La entrada y salida de piezas puede realizarse por cualquier

punto (posición) del conveyor.

Hay dos tipos de conveyors:

FIXED: las piezas mantienen siempre la misma distancia entre ellas.

Si la primera pieza se bloquea, las demás se detienen, manteniendo

las distancias. (Ej: escalera mecánica).

QUEUING: las piezas pueden estar a cualquier distancia unas de

otras. Si la primera se bloquea, las demás hacen cola detrás de la

misma. (Ej: cinta transportadora, rodillos..).

Las características de los Conveyors que hay que definir en

Witness a través de la pantalla que muestra la siguiente figura 11.

son las que se indican a continuación:

Figura 11 Opción Detail Conveyor

NAME: nombre del conveyor (máximo 8 caracteres)

QUANTITY: número de conveyors exactamente iguales.

TYPE: tipo de conveyor (fixed o queuing)

PART LENGTH: número de posiciones del conveyor.

MAX CAPACITY: máximo número de piezas que puede haber a la vez

en el conveyor

RULE INPUT: regla de entrada que indica cómo las piezas entran en el

conveyor.

RULE OUTPUT: regla de salida que indica cómo las piezas salen del

conveyor.

CYCLE TIME: tiempo que tarda una pieza en pasar de una posición a

otra del conveyor.

BREAKDOWNS: indica cómo son las averías que puede tener el

conveyor. Se implementa de modo análogo a los breakdowns de las

máquinas descritos anteriormente.

PRIORITY: prioridad de ese conveyor frente a otros elementos cuando

una pieza o labour puede ir a varios elementos. Un “1” indica máxima

prioridad y un “0” indica sin prioridad.

LABOUR: indica si es necesaria la presencia de uno o más labours

(operario, herramienta) cuando el conveyor sufre una avería para su

reparación.

SHIFT: permite especificar el turno de trabajo en el que opera el

conveyor.

ACTIONS: indican las acciones lógicas programadas a ejecutar

cuando una pieza entra en el conveyor (join) o cuando una pieza

abandona el conveyor (reach front).

REPORTING: sirve para indicar si deseamos que se tomen

estadísticas sobre ese conveyor.

3.1.5. TRABAJO (LABOUR)

En Witness, un labour es un requisito para que otro elemento

funcione. Puede representar a un operario, una herramienta, etc...

que son indispensables para configurar, hacer funcionar, reparar,

realizar un cambio de herramienta, etc..., en algún elemento activo

del modelo.

Puede priorizarse su uso, de modo que cuando un mismo labour

sea requerido a la vez por varios elementos, el labour irá a aquel

elemento con mayor priority (número más pequeño).

Muchas veces no es necesario modelizar los labours. Por

ejemplo, si cada máquina tiene su operario para hacerla trabajar, no

hace falta implementar los operarios como labours.

Unas características de los labours se definen en el Detail del

labour, mientras que otras se definen en el campo labour de los

elementos que los emplean. Las características de los labours que

hay que definir en Witness en el Detail del labour son como se

observa en la siguiente figura:

NAME: nombre del labour (máximo 8 caracteres)

QUANTITY: número de labours exactamente iguales.

SHIFT: indica los turnos de trabajo en los que el labour puede actuar.

PRE-EMPT LEVEL: si un labour está realizando una tarea y en ese

momento es requerido por un elemento de prioridad superior al que

está atendiendo, el labour abandonará la tarea actual sin terminarla

en caso de que la diferencia de niveles de prioridad sea mayor o igual

que el pre-emp level

Figura 12 Opción Detail Labour

ALLOWANCE: si al introducir el pre-emp level se ha definido un

allowance to finish, entonces la operación actual no se interrumpirá si

el tiempo que falta para que termine es menor que el allowance to

finish.

TIME PENALTY: es el tiempo que tarde de más un labour en terminar

la operación por haberla abandonado prematuramente (puede

representar el tiempo que tarde el labour en desplazarse de un

elemento a otro).

LABOUR RULE: indica la regla de elección del labour por ese elemento

cuando se cumple alguna condición.

REPORTING: sirve para indicar si deseamos que se tomen

estadísticas sobre ese labour.

3.1.6. PISTAS (TRACKS) Y VEHÍCULOS (VEHICLES).

Son los elementos más complejos de Witness, y sólo deben

utilizarse cuando no sea posible modelizar algún elemento de otra

forma pues añaden complejidad al modelo y hacen que la simulación

corra más lenta.

Un vehicle es un elemento que transporta piezas de un track a

otro, por lo que ambos son elementos estrechamente vinculados. Los

tracks son como las rutas que los vehículos siguen.

Los vehicles y tracks son útiles cuando son varios los puntos de

carga y descarga, existen diversos trayectos posibles y los vehicles

deben atender su demanda de acuerdo a ciertas reglas y prioridades.

La forma de funcionamiento es como sigue: un vehicle entra en

un track por su parte trasera (rear) y se mueve hacia su parte

delantera (front) a una velocidad determinada. Al llegar al final,

puede realizar operaciones de carga y descarga si éstas están

programadas. Al terminar, pasará al siguiente track de su recorrido o

bien al track indicado por su regla Destination.

Cada track sólo puede contener un vehículo cada vez, y éstos

siempre circulan de rear a front en el interior del track. Puede

hacerse que un vehículo quede aparcado en el interior de un track

mientras no sea demandado por algún elemento del modelo.

Las características que se pueden definir a través de la opción Detail

de los tracks son:

Figura 13 Opción Detail Track

NAME: nombre del track definido.

QUANTITY: número de tracks con el mismo nombre.

ZONE: forma de agrupar los tracks.

CAPACITY: máximo número de vehículo permitidos sobre el track al

mismo tiempo.

ACTIONS ON: permite definir la acciones que se ejecutarán cuando

un vehículo accede a un track. Se pueden utilizar para calcular la

velocidad del vehículo.

DURATION: permite controlar el tiempo que estará el vehicle en el

track. Se puede restringir la velocidad máxima del vehículo con

Maximum Speed of Vehicle.

ACTIONS ON FRONT: permite definir acciones para ser ejecutadas.

STOP: campo que detalla cuando el vehicle debería parar y esperar

antes de continuar al siguiente track, se puede hacer que este valor

dependa de una variable o una expresión.

OUTPUT RULE: especifica la lógica utilizada en la ruta del vehicle al

siguiente track.

BUSY TIME: indica el tiempo que el track permanece ocupado

después de que un vehicle lo haya abandonado.

Las características a definir en la opción Detail de los vehicles

son las que aparecen en la pantalla de la figura 14.:

Figura 14 Opción Detail Vehicle

NAME: nombre del vehicle.

QUANTITY: es el número de vehicles definidos bajo el mismo nombre.

CAPACITY: es el número de parts que puede llevar.

SPEED LADED y SPEED UNLOADED: velocidad de cargar y descargar

el vehicle.

START DELAY y STOP DELAY: se puede añadir estos parámetros a las

anteriores velocidades para simular la aceleración y desaceleración

del vehículo.

ENTRY TO RULE: determina donde empieza en el modelo.

ACTIONS ON ENTRY: define las acciones a desarrollar con la entrada

del vehículo al modelo.

3.1.7. MODULOS (MODULES)

Son agrupaciones de elementos físicos que se realizan para su

mejor comprensión y manipulación a la hora de efectuar la

modelización de un sistema. Un módulo puede estar compuesto por

diversos elementos individuales, de modo que una alteración en uno

de estos elementos será automáticamente actualizada en ese

elemento del módulo.

Los módulos son útiles para modelizar sistemas en los que hay

zonas que se repiten, ahorrándonos trabajo. Para ello, el módulo

debe ser salvado como submodelo (*.sub).

3.2. ELEMENTOS SISTEMAS CONTÍNUOS.

3.2.1. FLUIDOS (FLUIDS)

Pueden representar a líquidos u otro fluido que recorre el

modelo, fluyendo a través de tuberías hacia tanques o procesadores.

Se emplean para modelizar procesos continuos de producción (por

ejemplo en la industria química) o incluso el manejo del correo o

tráfico de vehículos.

Los fluids pueden mezclarse unos con otros y cambiar de color

durante la simulación.

3.2.2. PROCESADORES (PROCESSORS)

Son como “máquinas” que operan con fluidos, manipulándolos

durante un determinado tiempo de proceso. Al igual que las

machines, pueden ser visualizados como iconos que cambian de color

en función de su estado, pueden tener breakdowns, pueden precisar

de labours en algún momento, pueden tener prioridad, pueden

especificarse actions, etc...

3.2.3. TANKS (TANQUES O DEPÓSITOS)

Son elementos donde pueden almacenarse los fluids. Equivalen

a los buffers para los parts.

Su capacidad se mide por volumen de fluid que son capaces de

almacenar. Pueden visualizarse como iconos que cambian de color

según su estado.

Son elementos pasivos en el sentido que no realizan ninguna

acción con los fluids, sólo los almacenan. Sin embargo, sí disponen de

reglas de entrada/salida para manipular la entrada y salida de los

fluids. Así mismo, disponen de posibilidad de prioridad, breakdowns,

labours, actions, etc...

3.2.4. TUBERÍAS (PIPES)

Son elementos para transportar fluids entre processors y tanks,

siendo en cierto modo equivalentes a los conveyors para los parts.

Pueden visualizarse de modo que cambien de color según su estado.

Disponen de reglas de entrada/salida y posibilidad de breakdowns,

labours, actions, etc...

3.3. ELEMENTOS LÓGICOS.

Sirven para simular las características y parámetros del sistema

necesarios para una correcta modelización, así como para

proporcionar información respecto de la simulación.

3.3.1. ATRIBUTOS (ATTRIBUTES)

Son nombres o valores numéricos (enteros o reales) asociados

a algún part. Su valor se introduce o modifica a través de los actions

de los diversos elementos. Un atributo es algo propio e intransferible

de un part, que se mueve junto con ella, pudiendo variar su valor en

el transcurso de la simulación (si se trata de atributos tipo variables).

Un atributo, puede representar el peso de una pieza, su clase,

su volumen, etc... de modo, que en función de su valor, una máquina

pueda tener un tiempo de ciclo u otro.

Hay dos tipos de atributos:

FIXED: aquellos cuyo valor ha de ser el mismo para todos los parts

del mismo nombre.

VARIABLE: aquellos cuyo valor puede ser distinto para cada part

individual.

A cada tipo de part puede dársele su propio conjunto de

atributos, merced a que estos se agrupan en grupos numerados que

son seleccionados en el campo Group de las parts.

Los atributos pueden aparecer en órdenes lógicas que dan gran

flexibilidad y capacidad a la modelización.

Las características de los atributos que hay que definir en

Witness son:

NAME: nombre del atributo (máximo 8 caracteres).

QUANTITY: número de atributos con el mismo nombre.

TYPE: tipo del atributo (caracteres, real, entero).

GROUP: número del grupo al que pertenece el atributo (seleccionar

éste número en el campo Group de la part que vaya a utilizar éste

tipo de atributo).

Estas características se introducen en la pantalla general que

aparece al seleccionar Model – Elements, una vez elegido el tipo de

elemento Attribute, como se puede ver en la figura 15.:

Figura 15 Opción Define Attribute

Hay una serie de atributos que ya vienen definidos por el

programa para cada pieza, y que pueden manipularse en los actions

de cualquier elemento, bien empleándolos en reglas lógicas o bien

alterando su valor:

TYPE: nombre de la pieza.

DESC: 4 primeros caracteres del nombre de una pieza que pueden

visualizarse.

PEN: color de la pieza.

ICON: número del icono que representa a la pieza (1-100). Puede ser

un icono creado por el usuario mediante el Icon Editor.

3.3.2. VARIABLES (VARIABLES)

Las variables contienen nombres de elementos o valores

numéricos (enteros o reales) que pueden emplearse para

implementar las reglas lógicas de funcionamiento del modelo.

No van asociadas a ningún part, siendo su valor el mismo en

cualquier punto de la simulación en un mismo instante, aunque

pueden variar su valor en el tiempo a través de los actions. Por

ejemplo, puede representarse el tiempo de ciclo de una máquina

mediante una variable de modo que, en función del tipo de pieza que

le llegue a la máquina, ésta tenga n tiempo de ciclo u otro.

En cualquier momento podemos conocer el valor de una

variable visualizándola por medio de la fase display.

Las características de las variables que hay que definir en

Witness son:

NAME: nombre de la variable.

TYPE: tipo de la variable (caracteres, enteros, real).

QUANTITY: número de variables con el mismo nombre (dimensión de

la variable).

REPORTING: indica si deseamos que se recojan estadísticas sobre esa

variable.

Al igual que en el caso de los atributos estas características se

introducen en la pantalla general de Model – Elements una vez

elegido el tipo de elemento como Variable, apareciendo los campos

correspondientes:

Figura 16 Opción Define Variables

Una variable puede representar un sólo valor o bien puede

constituir un “array” (cadena) de valores:

• si Quantity=1, la variable representa un sólo valor.

• si Quantity=x, la variable representa un array unidimensional de x

valores. Para referirnos a un valor concreto lo haremos como:

Nombre Variable ( posición de 1 a x).

• si Quantity=x, y, la variable representa un array bidimensional de x

columnas por y filas de valores. Para referirnos a un valor concreto

lo haremos como: Nombre Variable (posición columna de 1 a x,

posición fila de 1 a y).

Existen varias variables definidas por omisión por el programa.

Entre ellas la más importante es la variable Time, cuyo valor

(número real) corresponde al número de unidades temporales que en

ese momento contabiliza el reloj (clock) de la simulación.

3.3.3. DISTRIBUCIONES (DISTRIBUTIONS)

Las distribuciones permiten introducir aleatoriedad dentro del

modelo. Mediante una distribución podemos representar la

aleatoriedad con que las piezas llegan al modelo, la aleatoriedad del

tiempo de ciclo de una máquina, la aleatoriedad del tiempo entre

fallos (m.t.b.f.) y del tiempo de reparación (m.t.t.r.) de una máquina,

etc...

Witness viene ya dotado con varios modelos de distribuciones

probabilísticas estándar que podemos emplear:

Distribuciones enteras: binomial, uniforme, poisson.

Distribuciones reales: beta, erlang, gamma, logarítmica normal,

negativa exponencial, normal, normal truncada, triangular, uniforme,

weibull.

Además, podemos crear nuestras propias distribuciones

empíricas si lo deseamos, introduciendo los valores numéricos así

como sus frecuencias de aparición en la pantalla de la figura 17.:

Figura 17 Opción Detail Distribution

Para que una distribución pueda funcionar en Witness, será

necesario indicar el número de la cadena de números aleatorios que

vamos a utilizar. Es importante emplear una cadena distinta para

cada evento estocástico que se desee simular, a fin de que un evento

no le “robe” aleatoriedad a otro (al ir empleando números de su

cadena), desfigurando los resultados de la simulación.

Por otra parte, los eventos aleatorios son reproducibles con

Witness. Si se dispone de un modelo con diversos eventos

estocásticos y se corre varias veces, se observa que el resultado

siempre es el mismo, ya que la semilla generadora de las cadenas de

números aleatorios no ha variado. Esto es muy útil, ya que si ahora

se hace una modificación en el modelo y se ejecuta, se sabe que la

diferencia en el resultado está motivada por el cambio efectuado, y

no por una variación en la aleatoriedad del modelo.

También es posible cambiar la semilla generadora de las

cadenas de números aleatorios en un momento dado (opción Model,

Random Numbers). Se pueden hacer varias corridas de un mismo

modelo variando la semilla generadora. Si se observa que los

resultados en todos los casos son semejantes, se habrá probado la

robustez y validez del modelo, cuyos resultados no dependerán de la

aleatoriedad sino de su funcionamiento.

3.3.4. FICHEROS (FILES) Y FICHEROS DE PIEZAS (PART FILES).

Los files son archivos ASCII (*.DAT) que contienen datos.

Pueden emplearse para introducir datos en el modelo (fichero de

entrado de datos) necesarios para que éste puede correr, o como

salida de datos del modelo (fichero de salida de datos) con resultados

de la simulación.

La lectura y la escritura de valores en un file se lleva a cabo

mediante la inclusión de las órdenes READ/WRITE en algún actions

del modelo.

Los files son elementos muy útiles para crear un modelo

estructurado y que tenga en cuenta posibles modificaciones

posteriores. Por ejemplo, si se tiene un modelo compuesto por una

serie de máquinas cuyos tiempos de ciclo son evaluados cada mes

por los ingenieros, se puede construir el modelo de modo que los

tiempos de ciclo de las máquinas sean variables que puedan leerse

desde un file. De este modo cada mes, para evaluar el sistema por

medio del modelo, tan sólo hay que modificar los datos del file y no

todo el modelo.

Figura 18 Opción Detail File

Un Part File es un fichero ASCII (*.PAR) que almacena una

serie de parts. Pueden emplearse como ficheros de entrada o salida

de parts a/desde la simulación, indicando el instante de

entrada/salida de las parts en el modelo, la cantidad del lote y sus

atributos. Sirve para crear una secuenciación de piezas en el modelo,

pudiendo representar un plan de fabricación.

Un Part File de salida de un modelo puede emplearse como

entrada para otro modelo.

Su ejecución no requiere ninguna orden desde un action. Para

ser utilizado como entrada de algún tipo de part, requiere que el

campo Arrival Mode de la part esté en modo Passive.

Figura 19 Opción Detail File

3.3.5. FUNCIONES (FUNCTIONS)

Las funciones son elementos predefinidos por Witness que

pueden emplearse en expresiones lógicas en cualquier parte del

modelo. También se pueden crear funciones propias que puedan

emplearse (se escriben fuera del programa, en Fortran).

Existen funciones matemáticas, estadísticas y funciones de

estado.

• Funciones matemáticas: para realizar cálculos matemáticos en

las expresiones.

• Funciones estadísticas: para conocer datos estadísticos sobre la

simulación.

• Funciones de estado: para dar información sobre el estado actual

de los elementos durante la simulación que se está efectuando. Las

hay de uso general y otras específicas para cada tipo de elemento.

Para observar su potencia y como muestra se destaca:

ISTATE (elemento): devuelve el nº que corresponde al estado

actual de ese elemento.

NPARTS (elemento): nº de parts que hay actualmente en ese

elemento.

APARTS (elemento): nº medio de parts en un buffer o conveyor.

NWIP (part): nº de parts actualmente en el modelo.

Si se necesita crear una función los campos a definir son los

que aparecen en la siguiente pantalla de la figura 20., ofreciendo la

posibilidad de escribir el código necesario seleccionando el botón

Actions.

Figura 20 Opción Detail Function

3.4. ELEMENTOS GRÁFICOS

3.4.1. SERIES TEMPORALES (TIMESERIES) E HISTOGRAMAS

(HISTOGRAMS)

Son elementos que almacenan una serie de valores y crean un

informe estadístico sobre los mismos que contiene la media, la

desviación típica, el máximo, el mínimo, etc...

Un timeserie recoge la variación de algún parámetro o variable

a lo largo del tiempo de simulación, tomando muestras cada cierto

tiempo (intervalos de muestreo).

Se pueden registrar hasta 7 series temporales distintas en un

mismo timeserie, pudiendo visualizarse cada una de ellas sobre una

misma gráfica.

Las características de los timeseries que hay que definir en la

opción Detail de Witness son las correspondientes a los campos de la

figura 21:

Figura 21 Opción Detail Function

NAME: nombre del timeserie.

QUANTITY: número de timeseries exactamente iguales.

REC INTERVAL: intervalo de muestreo.

PLOT EXPRESIONS: expresiones cuyos valores en el tiempo se

desean registrar (hasta 7)

STATISTICS RESET: indica si se desea borrar la estadística cada vez

que se corre el modelo. CTIONS: acciones lógicas a ejecutar

antes/después de evaluada cada una de las expresiones cuyos

valores se han de registrar.

Un histograma es otro elemento que registra y proporciona

información sobre el modelo. En éste caso no existe ningún intervalo

de muestreo. Las expresiones se registran cuando así lo ordena algún

action (mediante mandatos tipo RECHST, DRAWBAR, ADDBAR),

tomando nota del valor y frecuencia de aparición de algún parámetro

u expresión.

3.5 ELEMENTOS ESPECIALES.

Son aquellos que ya vienen definidos por Witness y que pueden

emplearse en diversas partes del modelo.

3.5.1. ELEMENTOS DE ENTRADA

El único elemento de entrada predefinido es el World (mundo).

Este elemento dispone de infinitas piezas, de las que pueden enviarse

al modelo el número deseado si se activa la llegada de piezas (Active)

desde el Detail de la part.

3.5.2. ELEMENTOS DE SALIDA

Hay tres elementos a los cuales se les pueden enviar las piezas

que ya han atravesado el modelo y se desea que salgan del mismo:

• Ship (embarque): a éste elemento se suelen enviar las parts que

deben abandonar el modelo.

• Scrap (desperdicios): a éste elemento se suelen enviar las parts

que deben abandonar el modelo pero sin haber acabado la

simulación satisfactoriamente (por ser el desecho de una máquina

tipo production, por ser un desperdicio al haberse roto una

máquina, etc...)

• Assemble (ensambladas): a éste elemento van a parar los parts

que han sido combinados con otros en una máquina tipo assembly.

4. LAS REGLAS DE ENTRADA Y SALIDA.

Sirven para direccionar los parts a través de los elementos del

modelo, es decir, regulan los mecanismos por los cuales una part

entra en un elemento procedente de otro, o sale del mismo hacia otro

elemento.

Estas reglas se especifican en los campos Input Rule y Output

Rule de la fase Detail de los diversos elementos. No todas las reglas

son aplicables a todos los elementos.

Witness permite introducir reglas de gran complejidad (hasta de

32 Kb cada una).

El significado de cada regla depende de si ésta se utiliza como

regla de entrada o como regla de salida. Las principales Reglas de

Entrada y Salida son:

• Wait (esperar): no realiza acción alguna sobre la part. Es la regla

por defecto.

• Pull (coger): el elemento “coge” la part desde algún otro elemento

que esté en su lista de demanda. Sólo puede emplearse como regla

de entrada. Ejemplos:

PULL from M1, M2. Coge una pieza desde el elemento M1 y si

no puede, desde M2.

PULL A from M1, B from M2. Coge la pieza A desde M1 y si no

puede, pieza B desde M2

• Push (empujar): el elemento “empuja” la part hacia algún otro

elemento que esté en su lista. Sólo puede emplearse como regla de

salida. Ejemplos:

PUSH to M1, M2. Empuja pieza hacia elemento M1 y si no

puede, hacia M2.

PUSH A to M1, B to M2. Empuja la pieza A hacia M1 y si no

puede, pieza B hacia M2.

• Sequence (secuencia): los parts tratan de ser

estirados/empujados desde/hacia una lista de elementos

secuencialmente. Si en un momento dado un part (si se utiliza

como regla de entrada) o un elemento ( si se utiliza como regla de

salida) no está disponible, hay tres opciones, cuyos significados

dependen del tipo de elemento en que sean empleadas:

WAIT: Se espera a que esté disponible (la part -Rule input- o el

elemento -Rule output-).

Ej. SEQUENCE/WAIT B1#(1), B2#(3). En ciclos de trabajo

consecutivos, esperará a coger/empujar una part del/al

elemento B1. Luego, esperará a coger/empujar

sucesivamente tres parts del/al elemento B2. Luego se

repite la secuencia, volviendo a esperar a coger/empujar

NEXT: Si no está disponible, pasar al siguiente (part -Rule

input- o el elemento -Rule output-).

Ej: SEQUENCE/NEXT C1#(2), C2#(3). Primero trata de

coger/empujar sucesivamente tres parts del/al elemento

C1, y si no están disponibles en ese momento (las parts o

el elemento), trata de coger/empujar tres parts del/al

elemento C2. Luego se repite la secuencia.

RESET: Si un part o elemento de la lista no está disponible, se

resetea la secuencia y se vuelve a intentar desde el principio.

Ej. SEQUENCE/RESET J1#(1), J2#(2), J3#(1). Trata de

coger/empujar esas parts de esos elementos en ese orden.

Primero, coge/empuja un part desde/hacia J1. Luego,

coge/empuja un dos parts sucesivamente desde/hacia J2.

Luego, si cuando va a coger/empujar un part desde/hacia J3 no

está disponible (la part -Rule input- o el elemento -Rule output-

), borra la secuencia y trata de nuevo de coger/empujar una

part desde/hacia J1.

• Select (seleccionar): el part se coge/empuja desde/hacia aquel

elemento de la lista que ocupa la posición dada por el valor de

alguna variable. Ej. SELECT on V1 B1, B2, B3, B4. Si la variable V1

tiene en ese instante el valor 3, la part se tomará/empujará del/al

elemento B3.

• Percent (porcentaje): el part se coge/empuja aleatoriamente

desde/hacia alguno de los elementos de la lista en función de unos

determinados porcentajes de probabilidad. Ej. PERCENT/(semilla

aleatoria 1-1000) B1 70.00, B2 30.00. La part se estirará/empujará

desde/hacia el elemento B1 con una probabilidad del 70% o hacia

B2 con un 30%.

• Most (mayor): el elemento coge/empuja el part desde/hacia aquel

elemento de su lista que posea el mayor nº de parts (opción parts)

o el mayor nº de espacios desocupados (opción free).

• Least (menor): el elemento coge/empuja el part desde/hacia aquel

elemento de su lista que posea el menor nº de parts (opción parts)

o el menor nº de espacios desocupados (opción free).

• If (si...): coge/empuja las parts en función de que una expresión

condicional del tipo If/Else/Elseif/End sea verdadera. Puede

combinarse con otras reglas, excepto con Sequence y Percent por

dar un resultado ambiguo y confuso.

Ejemplo:

IF V1>10

Pull from B1

Elseif V1>5

Pull from B2

Elseif V1>1

Pull from B3

ELSE

Wait

ENDIF

Esta regla empleada como una Input Rule significa que, si (if) la

variable V1 es mayor que 10, se estirará part desde el elemento B1,

en caso contrario, si (elseif) V1 es mayor que 5 se estirará part desde

B2, en caso contrario, si (elseif) V1 es mayor que 1 se estirará part

desde B3. En última instancia (else) se esperará (wait).

La regla será evaluada por Witness desde arriba hacia abajo. En

el momento en que resulte verdadera, se saldrá de la regla sin

evaluar el contenido de su parte inferior.

• Random (aleatorio): permite introducir una componente aleatoria

en el modelo, indicando una serie de elementos y la probabilidad

de que una part vaya o venga hacia cada uno de ellos. Por

ejemplo, puede crearse un elemento con una Rule input que sea

Random de modo que tome distintas parts del world en unas

proporciones determinadas de un modo aleatorio.

• Part (pieza): permite enviar parts a un elemento a otro,

dependiendo del part de que se trate. Sólo puede emplearse como

regla de salida.

• Buffer (almacén): el part se coge/empuja desde/hacia el buffer

interno de una máquina que se ha definido de forma que tenga

este buffer interno.

5. LAS ACCIONES (ACTIONS)

Permiten dotar al modelo de la lógica necesaria para que

funcione correctamente y del modo más parecido a la realidad.

Mediante ellas es posible manipular variables y atributos, leer o

escribir datos desde/hacia ficheros de disco, controlar las parts, etc...

Tanto para los actions como para las reglas de entrada y salida,

Witness ofrece una serie de facilidades para su implementación:

• pueden hacerse actions/reglas muy complejas (hasta de 32 Kb

cada una, sin superar los 256 caracteres por línea ), si bien éstas

hacen la simulación más lenta,

• puede moverse o copiarse el texto de los actions/reglas de un

lugar a otro del modelo,

• puede recibirse ayuda del programa para escribir una action/regla

cuyo empleo desconocemos seleccionando el botón Prompt en las

cajas de diálogo.

Instrucciones a emplear

Mediante un action pueden realizarse a la vez cálculos

matemáticos y lógicos:

CÁLCULOS MATEMÁTICOS. Pueden realizarse cálculos con números o

variables, empleando operadores aritméticos que, ordenados

conforme Witness los evalúa son: paréntesis ( ), potenciación **,

multiplicar *, dividir /, sumar +, y restar -.

CÁLCULOS LÓGICOS. Pueden implementarse reglas lógicas en las

que se incluyan los operadores lógicos y aritméticos que, ordenados

por orden de evaluación son: paréntesis ( ), NOT (expresión),

potenciación **, multiplicar *, dividir /, sumar +, restar -, igual=,

desigual < >, menor que <, mayor que >, menor o igual que <=,

mayor o igual que >=, AND (dos subexpresiones), OR (dos sub-

expresiones).

Por ejemplo:

IF V1=5 AND NPARTS(B1)>5

CYCLE=10

ELSE

CYCLE=20

ENDIF

La variable CYCLE tomará el valor 10 si la variable V1 vale en

ese momento 5 y además el nº de parts en B1 es mayor que 5. En

caso contrario, CYCLE tomará el valor 20.

Las expresiones con AND y OR son evaluadas de izquierda a

derecha.

Lenguaje de programación de acciones. Es posible combinar los

cálculos matemáticos y lógicos con funciones matemáticas,

estadísticas y de estado para formar action de gran potencia y

complejidad (aquí no podrán emplearse ninguna de las reglas de

entrada/salida).

Además de los ya vistos, pueden emplearse muchos comandos

entre los que destacamos:

CHANGE: permite modificar el tipo de una part. Por ejemplo:

CHANGE P1, P2 modificará el tipo de pieza P1 a P2.

CHANGE ALL, P2 modificará cualquier tipo de pieza a tipo P2.

READ y WRITE: para leer o grabar datos desde/hacia un fichero. Por

ejemplo:

READ file1 V1, V2. Lee desde el fichero llamado file1 el valor de

las variables V1 y V2.

WRITE file2 V3(5) Escribe el valor del array V3 que ocupa la

posición 5 en el fichero file2.

GOTO y LABEL: se usan conjuntamente para saltar (GOTO) a una

línea marcada por la etiqueta (LABEL).

IF, ELSEIF, ELSE y ENDIF: se emplean juntas para crear sentencias

condicionales. Su modo de empleo ya ha sido tratado anteriormente.

FOR y NEXT: se utilizan conjuntamente para realizar algo un nº

dado de veces. Ejemplo:

FOR X=1 TO 10 STEP 2

PRINT “ El valor de la variable X es de”; X

NEXT

WHILE y ENDWHILE: se usan conjuntamente para realizar algo

mientras se cumpla una condición. Por ejemplo:

WHILE X<10

PRINT “El valor de la variable X es de “; X

X= X+1

ENDWHILE

STOP: se emplea para parar la simulación en un momento dado.

6. ACCIONES ESPECIALES.

El paquete Witness permite implementar una serie de acciones

en unos momentos determinados que pueden ser muy útiles a la hora

de hacer que un modelo funcione correctamente. Si se estima

oportuno, pueden emplearse tres tipos de acciones, cada una de las

cuales se implementa en una caja de diálogo tras seleccionar la

opción oportuna en los menús desplegables de Witness:

• Acciones de inicialización (INITIALIZE ACTIONS) son aquellas que

se realizarán siempre justo antes de que la simulación comience a

correr. Suelen emplearse para dar valores a algunas variables,

para leer datos de un fichero necesarios para la simulación, etc...

Se ha de tener en cuenta que estas acciones se ejecutarán

siempre en cada corrida y que se sobreescriben a los datos leídos

desde ficheros de arranque (P.e. si en un fichero de arranque hemos

puesto a una variable el valor X=15 y en el Initialize Actions tenemos

una orden que dice X=20, la simulación acabará corriendo con el

valor X=20).

• Acciones de usuario (USUARY ACTIONS) son aquellas que se

realizarán sólo cuando el usuario seleccione la opción Run Usuary

Actions del menú de Witness, mostrando la pantalla de la figura

22.:

Figura 22 User Actions

• Acciones inmediatas (INMEDIATE ACTIONS) son aquellas que se

ejecutan justo en el momento en el que el usuario escribe la orden,

a través del cuadro de diálogo de la figura 23:

Figura 23 Actions

7. TIPOS DE FICHEROS MANEJADOS POR WITNESS.

Según su utilización, Witness trabaja con diversos tipos de

ficheros. Los más importantes según su tipo son:

*.mod (modelos): guardan los modelos de los sistemas

modelizados.

*.sim (simulaciones): guardan el modelo en el instante de

simulación que se alcanzó.

*.lst (librería): guardan las características del modelo en un

formato tal que puede ser editado desde otro programa. Por ejemplo,

podemos editar un modelo a través de su fichero *.lst mediante el

Write de Windows, y una vez realizadas las modificaciones y salvado

con formato No-Write como *.lst, este fichero puede ser leído por

Witness, reconstruyendo el modelo con los cambios.

*.icn (iconos): contienen los iconos que son empleados por los

modelos. Pueden mezclarse juegos de iconos de varios modelos

distintos (opción Merged:Yes).

*.dat (datos): contienen los datos que son de entrada o salida de la

simulación. Por ejemplo, para hacer un fichero de entrada de datos

para la simulación, puede emplearse el programa Excel de Windows,

escribiendo los valores de las variables o arrays en columnas (cada

variable o array en una columna distinta). Se grabará el fichero con

formato Tab-delimited y con nombre *.dat. Este fichero, que deberá

guardar para su uso posterior.

*.rpt (reports): contienen los resultados de una simulación con

todos los datos referentes a cada uno de los elementos del modelo.

*.dif: contienen los resultados de una simulación en un formato

legible por hojas de cálculo tipo Excel o 123. De este modo podremos

ver y manipular los resultados de una simulación.

*.sub (submodelos): contienen los submodelos creados y que

pueden ser empleados en cualquier parte de cualquier modelo de

Witness.

*.wcl (arranque): permiten programar una secuencia de

simulaciones seguidas (con sus características) de modo que, una vez

hecho el fichero de arranque y tras su activación mediante el

comando File Read Command se puede dejar al ordenador corriendo

durante largo tiempo mientras realiza cada una de las simulaciones

programadas.

Para realizar un fichero de arranque se emplean una serie de

instrucciones propias (escritas en ASCII con un editor de texto como

Write de Windows) entre las que destacan:

LOAD file: cargar un modelo (*.mod)

RESTORE file: cargar una simulación (*.sim)

NEW file: nuevo fichero, borrar el modelo actual.

BATCH TIME, time: corre la simulación hasta que el reloj marca el

tiempo indicado.

SAVE file: salvar como modelo (*.mod)

STORE file: salvar como simulación (*.sim)

REPORTS DIFFILE file: salvar los resultados de la simulación como

fichero *.dif

RUN ACTION variable=? : dar valor a alguna variable.

DETAIL, SELECT, Nombre Elemento, Campo a modificar =? Para

modificar algún campo de algún elemento del modelo.

QUIT: salir del programa Witness.

8. OPCIONES DE VISUALIZACIÓN.

Witness ofrece facilidades para realizar el efecto visual del

modelo. A todas ellas se accede desde el menú desplegable Edit.

Entre ellas destacamos:

• Editor de pantalla (Screen Editor): permite dibujar líneas,

figuras, tramas, texto, etc..., en la pantalla donde reside el modelo

para mejorar su comprensión y hacerlo más visual. Para ello se

utiliza la barra de herramientas siguiente:

Figura 24 Display Backdrop

• Editor de iconos (Icon Editor): permite modificar los iconos por

defecto que utiliza el programa así como crear nuestros propios

iconos para nuestro modelo particular con las opciones disponibles

que se observan en la pantalla:

Figura 25 Icon Editor

• Ventanas (Windows): se disponen de hasta 4 ventanas distintas

donde pueden guardarse vistas de puntos distintos del modelo,

para mejorar la rapidez en el acceso a alguna zona.

9. RELOJ DE SIMULACIÓN.

Witness dispone de un reloj (Clock) interno para llevar la

cuenta del tiempo de simulación. A través de la opción Clock del

menú Edit puede especificarse la unidad mínima temporal y sus

múltiplos, que se emplearán para confeccionar el modelo y realizar la

simulación. Esto es muy importante, ya que si, por ejemplo,

seleccionamos como unidad temporal mínima el minuto, deberemos

introducir todos los datos referidos a nuestro modelo en minutos.

Podemos visualizar el tiempo que se lleva de simulación

activando la opción Clock del menú desplegable Windows.

Figura 26 Define Clock

10. EJECUCIÓN DE UNA SIMULACIÓN.

Una vez se tiene construido el modelo, hay que proceder a

comenzar a realizar experimentos con el mismo, es decir, hay que

realizar “corridas” del modelo. Witness ofrece en su menú

desplegable Run diversas opciones para ello:

Begin: pone a cero el reloj interno de la simulación.

Stop: para una simulación en el acto.

Run: activa una simulación en el acto.

Batch: activa una simulación hasta el instante temporal indicado en

unidades temporales mínimas. Por ejemplo, si nuestra unidad

temporal es el minuto, poniendo:

Time+60: correrá la simulación desde el punto actual hasta una

hora posterior.

60: correrá la simulación hasta el instante en que el reloj

marque 60 minutos.

Advance: activa la simulación llevando el reloj hacia delante tantas

unidades temporales como el valor introducido.

Walk: disminuye la velocidad de la simulación para poder observar

mejor los sucesos que ocurren durante la simulación en pantalla.

Step: ejecuta la simulación en modo paso a paso, es decir, de modo

que cada vez que se haga click con el ratón sólo se ejecute una

acción de la simulación. Esta opción es muy útil para depurar la

programación lógica del modelo y observar si está bien definida.

Por medio de la opción Step y mediante la visualización de la

ventana Interactive Box del menú desplegable Windows, podremos

observar como se van ejecutando secuencialmente cada una de las

acciones de la simulación y así, detectar posibles errores.

Una vez la simulación se ha puesto en marcha (directamente a

través del menú Run o por medio de un fichero de arranque *.wcl),

Witness ejecuta primero las posibles acciones definidas en el Initialize

Actions. Hecho esto, el tiempo de la simulación comienza a correr.

Witness va testeando todos y cada uno de los elementos que fueron

definidos en el modelo siguiendo el orden en que fueron creados.

Observará si ese elemento tiene o va a tener part y realizará las

acciones oportunas en ese instante. Hecho esto, pasará al siguiente

elemento de la lista.

Se ha de tener en cuenta que si en un momento dado se borra

un elemento del modelo y luego se crea otro, éste último ocupará la

posición dejada por el elemento borrado. Hay que tener presente

todo esto ya que a veces, en modelos complejos, el orden en el que

Witness testea las acciones de los elementos puede resultar un factor

determinante.

El orden de los elementos puede observarse y modificarse

editando el fichero de librería *.lst del modelo (en ASCII) mediante el

programa Write de Windows (por ejemplo).

11. GENERACIÓN DE INFORMES

Esta es una de las posibilidades más potentes que facilita

Witness, así una vez construido el modelo y puesto en marcha, se

pueden utilizar los informes que se pueden generar y que ayudarán n

a medir los cambios producidos por la influencia de los distintos

escenarios en los que se quiere comprobar el comportamiento del

citado sistema modelizado.

Para visualizar los informes generados durante la ejecución de

los experimentos se seleccionará la opción Reports del menú y de

nuevo Reports del menú desplegable, proporcionando las siguientes

alternativas:

Figura 27 Opciones Reports

Used: indica donde es utilizado y referenciado cada elemento del

modelo.

Explode: permite observar si en un determinado elemento hay part,

cuántas, de qué tipo, cuáles son sus atributos, etc...

Summary: ofrece las características generales de cada elemento del

modelo (nombre, tipo, cantidad, regla de entrada/salida, si tiene

programado algún action, etc...)

Reports: para cada uno de los elementos del modelo, lista muy

completa de datos estadísticos recogidos durante el tiempo de

simulación. Por ejemplo:

A continuación se van a explicar más detalladamente cada uno

de los 4 tipos de informes explicando la información que

proporcionan a través de sus campos.

11.1. SUMMURY

Este informe da una descripción resumida de la información

introducida en la opción Detail del elemento, es una forma rápida y

cómoda de resumir un grupo de elementos.

Cada elemento tiene un tipo diferente de resumen, pues los

campos a rellenar en la opción Detail dependen precisamente del tipo

de elemento, por este motivo el informe se prepara por grupos de

elementos, teniendo en cuenta de que tipo son.

Veamos a continuación cuáles son los campos del informe

según el tipo de elemento que se esté resumiendo con el fin de

facilitar la comprensión del anexo 2 en el que se incluye un informe

de ejemplo de cada tipo.

Resumen de elementos tipo PART:

Nombre de los elementos de este tipo.

Tipo de atributos asociados.

Regla de salida.

Acciones a llevar a cabo en la creación de este tipo de piezas.

Resumen de elementos tipo BUFFER:

Nombre del buffer.

Número de buffers con las mismas características.

Retrasos.

Si se ha definido ruta a seguir.

Capacidad.

Regla de entrada al buffer de los elementos tipo part.

Regla de salida para buscar el siguiente elemento a extraer.

Resumen de elementos tipo MACHINE:

Nombre de la machine.

Número de elementos con idénticas características.

Tipo

Reglas de entrada

Regla de salida

Labour, si son necesarios

Acciones: pueden ser de 4 tipos las ejecutadas al llegar un elemento,

las llevadas a cabo al procesar las piezas, los posibles paros y la

reparación de averías.

Resumen de elementos tipo CONVEYOR:

Nombre definido para los elementos de este tipo.

Cantidad de elementos con las mismas características.

Longitud.

Elementos Labour asociados a su reparación.

Reglas de entrada.

Reglas de salida.

Acciones a llevar a cabo al llegar un elemento al conveyor.

Acciones a ejecutar antes de la salida de un elemento del conveyor.

Resumen de elementos tipo ATRIBUTO, VARIABLE:

Nombre del atributo o variable.

Número definido bajo el mismo nombre y con las mismas

características.

Tipo de atributo

Resumen de elementos tipo FUNCIÓN:

Nombre de la función.

Número de parámetros.

Tipo de función teniendo en cuenta lo que devuelve.

11.2. EXPLODE

Este informe permite obtener información acerca del estado

actual de los elementos especificados, para cada elemento indica

cuáles son los elementos de tipo part que contiene y su posición

exacta.

Como es lógico no se puede generar este tipo de informe para

los elementos de tipo file, distribution, histogram, timeserie, function,

attribute, variable o pie chart.

En caso de necesitar el valor de alguna variable en el instante

en el que se genera el informe se deberá usar el informe

“statisticscs”.

Los campos del informe generado dependerán del tipo de

elemento y teniendo en cuenta esto se agruparán los elementos

definidos en el modelo según su tipo, veamos a continuación cuales

son estos campos.

Status of parts.

Nombre del elemento part.

Nombre del elemento o elementos en el que se encuentra situado en

el momento en el que se genera el informe.

Tipo de ese elemento o elementos.

Número de parts en el elemento referido.

Status of parts in buffers.

Nombre del buffer.

Tipo de situación en la que se encuentra.

Nombre del elemento part que contiene.

Posición dentro del buffer en la que se encuentra el elemento

referido.

Atributos y su valor de cada uno de los elementos part que contiene

en el momento en el que se genera el informe.

Status of parts in machines.

Nombre del elemento machine.

Estado en el que se encuentra en el momento en el que se genera el

informe (ocupada, esperando piezas,....)

Número de una de sus posibles posiciones.

Nombre del elemento situado en esa posición.

Valor de los atributos de ese elemento en el instante en el que se

genera el informe.

Status of parts on conveyors.

Nombre del elemento tipo conveyor

Estado en el que se encuentra (vacío, bloqueado,...)

Posición del conveyor a la que se hace referencia.

Elemento part situada en esa posición.

Valor de los atributos del elemento part en el instante en el que se

genera el informe.

11.3. STATISTICS

Este tipo de informe es posible generarlo para elementos

continuos y discretos, de estos últimos está disponible para los

elementos tipo part, machine, buffer, conveyor, labour, track y

vehicle.

Los campos que proporciona dependen del tipo de elemento del

que se haya solicitado el informe, en cualquier caso la información

proporcionada es relativa a lo ocurrido a lo largo de la ejecución del

experimento, desde el instante en el que se inició hasta el momento

en el que se genera el informe. Los parámetros calculados son de

gran interés, por ejemplo, número máximo, mínimo de piezas en un

almacén, estados en los que ha permanecido una máquina y en que

proporción de tiempo, número de piezas en el sistema...

A continuación se exponen los campos del informe según el tipo

de elemento, haciendo siempre referencia sus valores al total del

tiempo que se ha realizado la simulación.

Part statistics.

Nombre del elemento part.

Número de piezas que han entrado al sistema.

Número de piezas que han salido del sistema.

Número de piezas de rechazo.

Número de piezas ensambladas.

Media de número de piezas como trabajo en curso.

Buffer statistics.

Número de elementos que han entrado a lo largo de la simulación.

Número de elementos que han salido.

Número de elementos en el momento de la generación del informe.

Número máximo de elementos que ha llegado a almacenar.

Número mínimo de elementos que ha almacenado.

Media de elementos almacenados.

Tiempo durante el que se ha almacenado la media indicada.

Machine statistics.

Nombre del elemento tipo machine.

Número de operaciones realizadas.

Porcentaje del tiempo esperando piezas

Porcentaje del tiempo procesando.

Porcentaje del tiempo parada.

Porcentaje del tiempo en espera (trabajador, set up).

Conveyor statistics.

Nombre del conveyor.

Número de elementos que contiene en el momento de generar el

informe.

Número total de piezas que ha contenido.

Media en unidades de piezas que ha transportado.

Media en unidades de tiempo.

Porcentaje de tiempo vacío.

Porcentaje de tiempo en movimiento.

Porcentaje de tiempo bloqueado.

Porcentaje de tiempo formando cola con los elementos que contiene.

Variable statistics.

Nombre de la variable.

Índices de la variable.

Valores de cada variable en el instante en el que s genera el informe.

11.4. USED

Seleccionando este tipo de informe se podrá saber cómo y

donde están referenciados cada uno de los elementos del modelo.

Los campos disponibles en este informe son:

• Nombre: el nombre del elemento.

• Tipo: el tipo del elemento.

Además para cada otro elemento que usa del que se genera el

informe se dice:

• Cómo se usa: cómo el elemento es referenciado, por ejemplo, en

una input rule, un cycle time,...

• Donde se usa: el elemento desde el que se le hace referencia.

Como ya se ha dicho anteriormente, los reports ofrecen gran

utilidad pudiéndose grabar en un fichero de modo que sean

manipulables por hojas de cálculo para analizar los resultados

obtenidos.