Realice un seguimiento más claro de la utilización y el comportamiento del sistema en Haskoning Witness 28 mediante atributos de estado, informes mejorados y nuevas funciones de modelado

La versión Witness 28 introduce una mejora práctica en la forma en que se trabaja con atributos en los modelos de simulación. El objetivo es facilitar la visualización de lo que sucede con las piezas a medida que se mueven a través de un sistema, pero los atributos de estado también se pueden usar en máquinas.

Este artículo presenta los atributos de estado, junto con nuevas funciones y mejoras en los informes que le ayudarán a realizar un seguimiento y comprender la utilización.

¿Qué son los atributos de estado?

Los atributos de estado son un nuevo tipo de atributo que solo puede tomar valores de una lista predefinida de estados.

Igualmente importante, un atributo de estado solo puede estar en un estado a la vez.

Puede que parezca un cambio pequeño, pero marca una gran diferencia. En lugar de asignar cualquier valor al atributo en Acciones que se ajuste al tipo de datos, ahora puede definir estados personalizados claros, como en este ejemplo, donde definimos los estados en los que puede estar una Pieza para representar el área en el proceso.


Figura 1 : Atributo de estado personalizado – as_MyStates

Estado de configuración

Con los estados definidos para los atributos de estado, ahora puede establecer el atributo en cualquier acción que desee. Si ha definido el atributo de estado como una cadena, como en el ejemplo, puede verificar cuál es esa cadena con la función StateName si conoce el índice, o, por el contrario, si conoce la cadena pero no el índice, puede usar StateIndexStr (o el equivalente StateIndexNum o StateIndexName).

Seguimiento de la utilización con mayor claridad

Ahora puede realizar un seguimiento del tiempo que las piezas permanecen en cada uno de sus estados personalizados.

Esto le da una idea mucho más clara de cómo se comporta su sistema, mostrando:

  • Donde las partes pasan la mayor parte del tiempo
  • Donde se acumulan los retrasos
  • De dónde provienen los tiempos de entrega en términos de procesos de valor añadido y no de valor añadido o tiempos de espera.

Los informes de Explode se han actualizado para incluir atributos de estado. Ahora puede ver el porcentaje de tiempo que cada pieza ha pasado en cada estado y la cantidad de veces que cada pieza ha estado en cada estado:

Nuevas funciones para trabajar con los estados

Se han añadido varias funciones nuevas para ayudarle a trabajar con los atributos de estado.

Comprensión de los datos estatales

  • StateUtil: devuelve la utilización para un estado específico para una parte.
  • StateCount: indica el número de veces que una pieza ha cambiado a un estado.
  • StateIndexStr (& Num y Name): Permite trabajar con índices de estado mediante programación

Accesorios ACME.mod

La versión actualizada de ACME.mod tiene un nuevo atributo de estado Model.as_FixtureState para demostrarlo.

Si se estás empezando, este ejemplo le resultará útil. Consulte el Informe de uso del atributo Estado para ver cómo cambia y el Informe de desglose de cualquier elemento con Partes presentes para ver las estadísticas.

Estados de máquina

La gran ventaja de los atributos de estado es que también pueden usarse como atributos de grupo 0, aplicables a otros elementos como máquinas, lo que permite definir estados personalizados para cada una. Esto permite replicar las funcionalidades de PUtil y SUtil, pero con definiciones de estado propias. Por ejemplo, se podría usar para controlar el tiempo que una máquina dedica a procesar piezas de diferentes tipos.

INSTANCE y SEQNO

El seguimiento del estado también funciona junto con dos nuevos atributos del sistema:

  • INSTANCE: un identificador único para cada parte.
  • SEQNO: El identificador del orden en que se crearon las piezas

Cómo funcionan INSTANCE y SEQNO en la práctica

Cada componente del modelo recibe un valor de INSTANCE al crearse. Este valor es una cadena de texto compuesta por el nombre del componente y un número entre corchetes.

Por ejemplo: Pallet(123)

Witness asigna automáticamente ese número, y ninguna parte del modelo lo compartirá al mismo tiempo. No es necesario configurarlo ni gestionarlo; es de solo lectura.

Los números no siempre serán secuenciales, ya que una vez que una pieza sale del modelo, su número puede reutilizarse posteriormente. Considere INSTANCE como un identificador único temporal mientras la pieza se encuentra en el sistema.

SEQNO es un número entero que registra el orden en que las piezas del mismo tipo ingresan al modelo. Cada tipo de pieza tiene su propio contador.

Esto significa que SEQNO es único dentro de un tipo de pieza, no en todo el modelo. Al igual que INSTANCE, SEQNO se asigna automáticamente y es de solo lectura.

Por qué INSTANCE y SEQNO son útiles

INSTANCE le ofrece una forma fiable de rastrear y comparar piezas específicas a medida que se mueven por su modelo. Puede almacenar el "nombre" de la pieza en la variable name y acceder a ella posteriormente sin saber qué elemento ocupa actualmente. Por ejemplo, registrar la INSTANCE en algunas acciones:

Vn_PartName = INSTANCE

Donde INSTANCE podría devolver Pallet(123)

Y posteriormente, utilice eso para establecer los demás atributos de las piezas:

Vn_PartName:ai_Release = 1

SEQNO resulta útil cuando se desea realizar un seguimiento de todas las partes de un tipo, y especialmente cuando se necesita un número de fila para almacenar datos sobre esa parte en una tabla de datos.

Funciones iteradoras

Las nuevas funciones iteradoras facilitan el recorrido por los elementos y el análisis de estads:

  • EltFirstByType() / EltNextByType() – Utilice estas funciones en un bucle que recorra elementos de un tipo específico.
  • EltFirst() / EltNext() – Utilice estas funciones en un bucle a través de las instancias de piezas de un tipo de pieza específico.

Resultan útiles al crear lógica personalizada o informes que necesitan analizar varios elementos del mismo tipo, o cuando la variable del sistema N no es aplicable.

Validación y búsqueda de estado

Para ayudar a evitar errores y mantener la coherencia de los modelos, se incluye un conjunto de funciones de apoyo en Witness 28:

  • MaxState() – Devuelve el número máximo de estados para un elemento (hasta el cual se puede iterar).
  • ValidState() – Comprueba si un estado es válido (no todos los estados inferiores al máximo son estados válidos).
  • StateName() – Devuelve el nombre de un estado – útil para generar informes

Esto hará que los modelos que generan informes sean más sólidos y que el código de Actions pueda ser genérico.

Por qué esta actualización es importante

Esta versión facilita la descripción de lo que sucede en su modelo de una manera clara y estructurada.

Ahora puede:

  • Realizar un seguimiento de su propia definición de utilización sin soluciones alternativas adicionales.
  • Construir una lógica más limpia utilizando estados definidos.
  • Comprender el comportamiento del sistema más rápidamente
  • Elaborar informes que sean más fáciles de explicar a los demás.
Reflexiones finales

Witness 28 mejora la forma en que se utilizan los atributos: para definir estados, realizar un seguimiento adecuado de los mismos y utilizar esa información para comprender el sistema.

Si alguna vez ha tenido dificultades para explicar en qué se invierte el tiempo en un modelo, esta actualización debería simplificarlo mucho.