Entidades, agentes, atributos y variables
Last updated
Last updated
Aunque el término “atributo” no apareció en este tutorial, es común en los libros de simulación de eventos discretos. En la simulación basada en agentes, en la que se basa AnyLogic, el atributo se representa como una variable que pertenece al agente.
Imagine, por ejemplo, que queremos crear un atributo que represente la hora de entrada del cliente que ingresa a la agencia. En este caso, necesitamos, inicialmente, crear un agente que represente al cliente. En AnyLogic, la creación de un agente es una tarea de la paleta Agent. Haga clic en él y arrastre el icono rojo al área del modelo:
AnyLogic abrirá un asistente para crear agentes, poblaciones o tipos de agentes. Con la práctica, descubrirás varias formas de crear agentes, pero el asistente siempre será el más didáctico.
Queremos crear un tipo de agente, llamado Cliente, no nos preocupa una población (con un tamaño limitado, por ejemplo), por lo que nuestra elección debe recaer en la 3ª opción Agent type only:
Haga clic en Agent type only;
En Agent type name, ponga el nombre Cliente con la primera letra en mayúsculas, ya que es una convención adoptada por los usuarios;
Haga clic en el botón Next>;
Como no queremos usar animación, seleccione None y luego el botón Finish.
AnyLogic creó un nuevo tipo de agente llamado Cliente. Tenga en cuenta que ya ha abierto la pantalla del agente para que pueda modelarse como desee. El agente también aparece en la pestaña Projects:
Queremos crear un atributo tiempoEntrada, que marcará la hora exacta en que el cliente ingresó al banco. Simplemente cree una variable con el nombre tiempoEntrada:
Ahora, regrese a Main e informe al bloque de llegadas (que es un bloque de tipo Source) que el agente a crear es del tipo Cliente, siguiendo los siguientes pasos:
Seleccione el elemento de llegadas;
En Properties abra la barra de(menú) Agent;
En New agent sustituya la opción Cliente.
Para asignar el valor del tiempo de simulación actual a cada cliente que ingresa a la agencia, AnyLogic tiene la función time()
. Por lo tanto, asignaremos la hora de entrada directamente en el bloque de llegadas:
Busque la barra de Actions en la ventana Properties del elemento de llegadas;
En On exit, escriba: agent.tiempoEntrada = time();
Notas:
agent es el nombre genérico del agente que pasa por el bloque. Como es de tipo Cliente, AnyLogic sabe que tiene la variable (atributo) tiempoEntrada;
Cada bloque de AnyLogic tiene opciones de Actions donde puede agregar comandos en el momento en que el agente ingresa al bloque, sale, es destruido, etc;
Por lo tanto, si desea, por ejemplo, calcular el tiempo que el cliente estuvo en línea en el cajero automático, simplemente agregue el campo de On exit al bloque de queue la línea de comando:
agent.tiempoEntrada = time () - agent.tiempoEntrada;
o
agent.tiempoEntrada - = time ();