AnyLogic
Expand
Font size

CarMoveTo

The block that controls the car movement. A car can move only when it is inside a CarMoveTo block. When a car enters CarMoveTo, it tries to calculate the way from its current location to the specified destination.

The destinations a car can move to include: a road, a parking lot, a bus stop, or a stop line. Specified destination should belong to the same road network as the one the car is currently in. If there is no way from the car’s current location to the specified destination, car exits the block via outWayNotFound port.

If a car is set to move to a road, direction of the road should be additionally specified. The car will try to use the shortest way to get to the beginning of the specified road. Once on it, the car will move along the specified road till the end of it. Once a car reaches the end of the road, it should be immediately removed from the model by the CarDispose block or proceed to the other CarMoveTo block to be sent further. If a car is unable to leave the end of the destination road immediately, an error will be generated.

If a car is set to move to a parking lot, the car will move to the specified parking lot and try to reserve a free parking space. You can choose the required Parking space selection policy: the car can occupy the nearest free parking space, the farthest free space, the randomly selected one, or the specified explicitly parking space. Cars reserve parking spaces only when they approach the parking lot. If a car is unable to reserve a parking space, it exits the block via outWayNotFound port. If a car is able to successfully reserve a parking space, it parks on it and exits this block. A car can remain in parking space until it is removed from the road network or is sent to other destination by the CarMoveTo block.

If a car is set to move to a bus stop, the car will move to the specified bus stop. If a bus stop is already occupied by another car, the car approaching the bus stop will stop at the bus stop and wait until the bus stop is vacant. When a car arrives at a bus stop, it parks in it and exits this block. A car can remain at the bus stop until it is removed from the road network or is sent to some other destination by the CarMoveTo block.

If a car is set to move to a stop line, two options of behavior at the destination stop line are possible, see the Behavior at stop line parameter for description.

While the car is moving under control of the CarMoveTo block, you still can partially control it by using the Car API.

Demo model: CarMoveTo Open the model page in AnyLogic Cloud. There you can run the model or download it (by clicking Model source files).

Parameters

Moves to
Type of destination where the car is sent: Road, Parking lot, Stop line, or Bus stop.
Get value: movesTo
Set new value at runtime: set_movesTo(new value)
Valid values:
CarMoveTo.ROAD
CarMoveTo.PARKING_LOT
CarMoveTo.STOP_LINE
CarMoveTo.BUS_STOP
Road
[Visible and applies only if the Moves to: Road option is set]
Road to which the car is sent. The movement direction needs to be specified below in the Destination parameter.
If the Road is not specified, or it is not found in the current road network, error is generated.
If a car is not able to find the way to the specified road through the road network, this car leaves the block via its outWayNotFound port.
Value type: Road
Local variable: car — Car that is being sent to the destination road
Destination
[Visible and applies only if the Moves to: Road option is set]
Specifies the destination (end of forward lane or end of backward lane) of the road to which the car will move. If the road does not have the specified destination (e.g. is one-way), the error is generated.
Get value: destination
Set new value at runtime: set_destination(new value)
Valid values:
CarMoveTo.END_OF_FORWARD_LANE
CarMoveTo.END_OF_BACKWARD_LANE
Parking lot
[Visible and applies only if the Moves to: Parking lot option is set]
The parking lot to which the car is sent. The car starts movement from its current location to the specified parking lot. When it approaches the parking lot, it tries to reserve a parking space in the lot. If the car is able to reserve a parking space, it parks at this space and exits this CarMoveTo block. If the car is not able to reserve a parking space (parking lot has no free parking spaces), an error is generated in the model.
If the Parking lot is not specified, or it is not found in the current road network, error is generated.
If a car is not able to find the way to the specified parking lot through the road network, the car leaves the block via its outWayNotFound port.
Value type: ParkingLot
Local variable: car — Car that is being sent to the parking lot
Parking space selection policy
[Visible and applies only if the Moves to: Parking lot option is set]
Defines how the car will choose the parking space in the parking lot. The possible options are to choose either the nearest free parking space, the farthest free space, randomly selected free parking space (random), or the parking space with the index specified explicitly in the Parking space index property.
Syntax: RoadTrafficLibraryConstants.CarParkingLotDestination parkingLotDestination
Set new value at runtime: set_parkingLotDestination(new value)
Valid values:
CarMoveTo.NEAREST — nearest
CarMoveTo.FARTHEST — farthest
CarMoveTo.RANDOM — random
CarMoveTo.SPECIFIED — specified explicitly
Parking space index
[Visible and applies only if the Parking space selection policy is specified explicitly]
The index of the parking space the car should occupy. The numbering starts with 0. If the specified Parking lot does not have the parking space with the specified index, an error is generated.
Value type: int
Local variable: car — Car that will drive to the parking lot
Stop line
[Visible and applies only if the Moves to: Stop line option is set]
Stop line to which the car is sent. The car starts movement from its current location to the specified stop line. When it approaches the stop line, it decelerates, stops, and exits this CarMoveTo block (its behavior can be set in the Behavior at stop line option below).
If the Stop line is not specified, or it is not found in the current road network, error is generated.
If a car is not able to find the way to the specified stop line through the road network, the car leaves the block via its outWayNotFound port.
Value type: StopLine
Local variable: car — Car that is being sent to the stop line
Behavior at stop line

[Visible and applies only if the Moves to: Stop line option is set]
Specifies the behavior at destination stop line:

Pass through stop line — The car does not stop before the stop line and exits CarMoveTo block immediately after passing the specified stop line. The car should be immediately removed from model or sent to some destination by other CarMoveTo block, otherwise an error will be generated
Stop before stop line — The car will stop before the specified stop line. The car will exit CarMoveTo block with zero speed. It is not necessary to immediately remove the car or send it to the next destination.
Get value: stopLineBehavior
Local variable: car — The car that is being sent to the stop line
Set new value at runtime: set_stopLineBehavior(new value)
Valid values:
CarMoveTo.PASS_THROUGH_STOP_LINE
CarMoveTo.STOP_BEFORE_STOP_LINE
Bus stop
[Visible and applies only if the Moves to: Bus Stop option is set]
Bus stop to which the car is sent. The car starts movement from its current location to the specified bus stop. When it approaches the bus stop, it tries to reserve a place in the bus stop. If the car is able to reserve place, it occupies this place and exits the CarMoveTo block. If the car is not able to reserve place (bus stop has no free place), the vehicle stops on the road right next to the bus stop, expecting its turn to enter the bus stop.
If the Bus stop is not specified, or it is not found in the current road network, error is generated.
If the car is not able to find the way to the specified bus stop through the road network, this car leaves the block via its outWayNotFound port.
Value type: BusStop
Local variable: car — Car that is being sent to the bus stop

Actions

On enter
Code that is executed when the car enters the block.
Local variable: car — The car that enters the block
On exit
Code that is executed when car reaches its destination. If the destination was road, the code is executed at the end of the destination road. If the destination was parking lot, the code is executed when the car is parked at parking space of the specified parking lot.
Local variable: car — The car that reached its destination
On way not found
Code that is executed when a car is unable to find its way to the specified destination from its current position.
Local variable: car — The car that is unable to find the way

Functions

Cars
Function Description
long size() Returns the number of cars inside this block.
java.util.List<Agent> getCars() Returns a non-modifiable collection containing the cars that are currently in this block.

Ports

in
The input port.
out
The output port.
outWayNotFound
The output port that a car uses to leave the block if there is no way from the car’s current location to the specified destination.
How can we improve this article?