Source generates agents according to timestamps in DB
You can set the Source
block to generate agents according to the timestamps read from the
can generate one agent per one database record, or multiple agents
If you need to generate agents with certain parameters read from the database,
please refer here to
know how to implement this.
Generating one agent per database record
Assume we have data on arrivals and all agent attributes
stored in an external database:
To make Source block generate agents
according to the database records, one agent per one record
- Import the
data from the external database into AnyLogic built-in database.
- In the Source
properties, choose Arrivals
defined by: Arrival table in Database.
- In the Database
table field, choose the name of the internal AnyLogic
database table that contains the data on agent arrivals.
- In the Arrival
date field, choose the column of this database table that
contains agent arrival timestamps.
- If you want to create agents with custom attributes, you
create a custom agent type in your model. If you have agent attribute
values defined in a database, we recommend to create a new agent type
using this database table as the template.
- To create a new agent type with parameters corresponding to
the columns of a database table, in the Projects view,
right-click this table and choose New
> Agent type from the popup menu. Follow the steps
the New agent
wizard, specify the Agent
type name, choose animation shape, and set up the agent
parameters on the next wizard page.
- Now you have created a custom agent type with the
we need. Open the properties of the Source block again
and let it
generate agents of this custom type. In the New agent property,
the custom agent type name. In the table below, you can set the
mapping of agent parameters to the columns of the database table you
have specified earlier.
- Now this Source
block will generate agents according to the
records in the database. Each record defines one agent arrival. Agent
attributes will be read and stored in the corresponding agent
multiple agents per one record
You may need to set the Source
block to generate multiple agents per one arrival. For example, a
shuttle bus arrives at the airport terminal, and multiple new
passengers appear in the model, or a delivery truck arrives, and a
number of pallets appear.
Let's use the same example we used above, but assume
now we are not defining the process for
the truck, but for the cargo, so on every truck arrival our Source block should
generate the specified number of agents (pallets).
To make Source generate multiple
agents per one database record
- Do the steps 1-8 of the previous scenario.
- In the Source
properties, select the checkbox Multiple agents per arrival.
- In the Agents
field below, you can define the number of agents that should be
generated per one database table record. If you do not have
you can generate agents randomly,
specifying here a stochastic expression. By default it is set to
a random number from 3 to 5: uniform_discr(3,5).
You can substitute it with some other probability function call, just
delete the existing line, and click the Choose Probability Distribution
toolbar button that will open the wizard with the list of all
probability distribution functions supported by AnyLogic.
- If you have the data on the number of agents to be
arrival, use the data. Assume we have one more
column in our database table, named n. This column stores
the number of pallets delivered by the truck. Let's
set the Source
block to use the data from there.
- Click the icon to the right of the Agents per arrival field, and select Select
column from the table from the list. Now you should just select the name
of the required column (n)
from the Agents
per arrival list.