es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Agregando datos a los gráficos de tiempo durante la ejecución de la simulación en Anylogic.

Tengo un modelo con múltiples agentes, cada uno con un par de flujos y stocks, y un agente de análisis. Quiero permitir que el usuario agregue una gráfica de tiempo para cualquier flujo/stock/variable durante la ejecución de la simulación. La idea es tener múltiples botones de selección o cuadros de combinación que permitan al usuario seleccionar cualquier elemento de cualquier agente y crear automáticamente una gráfica del elemento. He tenido cierto éxito al activar un evento cíclico con un botón de selección y luego el evento actualiza una variable auxiliar en mi agente de análisis con un elemento predefinido de otro agente y traza la variable. El problema, sin embargo, es que tengo que predefinir el elemento que quiero trazar en mi evento activado por el usuario. Podría crear un evento para cada elemento individual de mi modelo, pero esperaba que haya una manera de traducir directamente la entrada del usuario en una ruta utilizable del elemento.

Como ejemplo: tengo dos agentes, a y b. En el agente a, hay el flujo “flujo”, en el agente b una gráfica “gráfica” y un botón “botón” (o cualquier otro elemento de control si es más útil en este caso). Cuando el modelo se ejecuta, se supone que el usuario puede presionar el botón que agrega “flujo” a “gráfica”. ¿Existe una solución fácil a este problema que sea (al menos en cierta medida) escalable a un alto número de agentes y elementos trazables?

¡Cualquier ayuda es muy apreciada!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una solución potencial es crear un mapeo entre la entrada del usuario y el elemento correspondiente en el modelo. Por ejemplo, podrías crear una estructura de datos (por ejemplo, un diccionario) que mapee los elementos seleccionados por el usuario a sus rutas correspondientes en el modelo. Entonces, cuando el usuario seleccione un elemento, puedes buscar su ruta correspondiente y utilizarla para crear el gráfico.

    Para hacer que este enfoque sea escalable a un alto número de agentes y elementos trazables, podrías crear una convención de nomenclatura consistente para tus elementos y utilizar expresiones regulares para analizar la entrada del usuario e identificar la ruta correspondiente. Por ejemplo, podrías nombrar todos los flujos en el agente “a” como “a_flow1”, “a_flow2”, etc., y luego utilizar una expresión regular para coincidir con la entrada del usuario e identificar la ruta correspondiente.

    Otra solución potencial es utilizar reflexión para acceder dinámicamente a los elementos en el modelo basado en la entrada del usuario. Esto te permitiría evitar tener que definir previamente todos los elementos posibles en tu código. Sin embargo, este enfoque puede ser más complejo y podría tener implicaciones de rendimiento si necesitas acceder a los elementos con frecuencia durante la ejecución de la simulación.

    En general, la mejor solución dependerá de los detalles específicos de tu modelo y de la interfaz de usuario.

Comments are closed.