The continuous space support includes ability to set and retrieve the current agent location, to move the agent with the specified speed from one location to another, to execute action upon arrival, to animate the (static or moving) agent at its location, to establish connections based on agents layout, and other useful services. Part of continuous space functionality does not even require the agents to belong to an explicitly specified environment - without the environment the default space type assumed is continuous space.
To set the environment space
type to continuous
The space dimensions specified in the same section (Width and Height) are only used to lay out agents when any of the standard layout types are applied and do not restrict the agents mobility.
You can use the following methods to get the space dimensions:
double
spaceHeight() - Returns the height of environment in
continuous space.
double spaceWidth() -
Returns the width of environment in continuous space.
double spaceZHeight()
- Returns the height of environment space along Z-axis.
Location of an agent in continuous space is defined by real coordinates. There are several ways to define initial locations for agents living in continuous space:
The initial location can either be defined "centrally" by environment or specified at the agent type.
You can set initial location for agents, by calling the function setXYZ() in the top-level agent's On startup code (in the Agent actions section of the agent type properties).
void
setXYZ(double x, double y,
double z)
- Sets the coordinates of the agent location. It is only used to
initialize the agent location. Assumes the agent is not moving.
Parameters:
x -
X-coordinate of the location
y - Y-coordinate of
the location
z - Z-coordinate of
the location
To define the initial layout for
agent population
The User-defined layout type assumes you will take care of the agent locations yourself in e.g. Startup code of the top-level agent (Main). The standard continuous layouts supported by AnyLogic are:
Random |
Ring |
Arranged |
Spring
mass |
You can change the layout type dynamically while the model is running using the environment API, for example:
The type parameter can take one of the constants: Agent.LAYOUT_RANDOM, Agent.LAYOUT_ARRANGED, Agent.LAYOUT_RING, Agent.LAYOUT_SPRING_MASS, Agent.USER_DEFINED
Demo model: Agent Network and Layouts Demo
While the agent is moving, its presentation will also be animated as moving and will always be at its current position (x,y) relative to its origin. This means that if in design time the agent's presentation was placed at (50,100) on the container (e.g. Main diagram) and the current location of the agent is (17,64), the agent will be shown at (67,164). The rotation of the agent's presentation is always set to its heading. Note that if you have several embedded objects representing agents living in the same space, you need to place their (embedded) presentations at the same location on the container diagram to get a consistent picture.