uxsim.Node¶
- class uxsim.Node(W, name, x, y, signal=[0], signal_offset=0, flow_capacity=None, auto_rename=False, number_of_lanes=None, attribute=None, user_attribute=None, user_function=None)[source]¶
Node in a network.
Create a node
- Parameters:
W (object) – The world to which the node belongs.
name (str) – The name of the node.
x (float) – The x-coordinate of the node (for visualization purposes).
y (float) – The y-coordinate of the node (for visualization purposes).
signal (list of int, optional) – A list representing the signal at the node. Default is [0], representing no signal. If a signal is present, the list contains the green times for each group. For example, `signal`=[60, 10, 50, 5] means that this signal has 4 phases, and green time for the 1st group is 60 s.
signal_offset (float, optional) – The offset of the signal. Default is 0.
flow_capacity (float, optional) – The maximum flow capacity of the node. Default is None, meaning infinite capacity.
auto_rename (bool, optional) – Whether to automatically rename the node if the name is already used. Default is False.
number_of_lanes (int, optional) – The number of lanes that can be green simultaniously at the node. Default is None.
attribute (any, optional) – Additional (meta) attributes defined by users.
user_attribute (any, optional) – Additional (meta) attributes defined by users. Same functionality to attribute, but with more understandable name.
user_function (func, optinal) – User-defined custom function that is automatically called when timestep is incremented (more precisely, when update() is called). It takes only one argument: the Node object itself. Example: The following code prints the current number of incoming vehicles to the node at each timestep. If user_function=None (default), no functions will be executed. >>> def user_function(node): >>> print(len(node.incoming_vehicles)) >>> W = World(…) >>> W.addNode(“node”, 0, 0, user_function=user_function) >>> … #define your scenario >>> W.exec_simulation()
- signal_phase¶
The phase of current signal. Links that have the same signal_group have a green signal.
- Type:
int
- signal_t¶
The elapsed time since the current signal phase started. When it is larger than Link.signal[Link.signal_phase], the phase changes to the next one.
- Type:
float
- __init__(W, name, x, y, signal=[0], signal_offset=0, flow_capacity=None, auto_rename=False, number_of_lanes=None, attribute=None, user_attribute=None, user_function=None)[source]¶
Create a node
- Parameters:
W (object) – The world to which the node belongs.
name (str) – The name of the node.
x (float) – The x-coordinate of the node (for visualization purposes).
y (float) – The y-coordinate of the node (for visualization purposes).
signal (list of int, optional) – A list representing the signal at the node. Default is [0], representing no signal. If a signal is present, the list contains the green times for each group. For example, `signal`=[60, 10, 50, 5] means that this signal has 4 phases, and green time for the 1st group is 60 s.
signal_offset (float, optional) – The offset of the signal. Default is 0.
flow_capacity (float, optional) – The maximum flow capacity of the node. Default is None, meaning infinite capacity.
auto_rename (bool, optional) – Whether to automatically rename the node if the name is already used. Default is False.
number_of_lanes (int, optional) – The number of lanes that can be green simultaniously at the node. Default is None.
attribute (any, optional) – Additional (meta) attributes defined by users.
user_attribute (any, optional) – Additional (meta) attributes defined by users. Same functionality to attribute, but with more understandable name.
user_function (func, optinal) – User-defined custom function that is automatically called when timestep is incremented (more precisely, when update() is called). It takes only one argument: the Node object itself. Example: The following code prints the current number of incoming vehicles to the node at each timestep. If user_function=None (default), no functions will be executed. >>> def user_function(node): >>> print(len(node.incoming_vehicles)) >>> W = World(…) >>> W.addNode(“node”, 0, 0, user_function=user_function) >>> … #define your scenario >>> W.exec_simulation()
- signal_phase¶
The phase of current signal. Links that have the same signal_group have a green signal.
- Type:
int
- signal_t¶
The elapsed time since the current signal phase started. When it is larger than Link.signal[Link.signal_phase], the phase changes to the next one.
- Type:
float
Methods
__init__
(W, name, x, y[, signal, ...])Create a node
flow capacity updates.
generate
()Departs vehicles from the waiting queue.
Updates the signal timings for a traffic signal node.
transfer
()Transfers vehicles between links at the node.
update
()Make necessary updates when the timestep is incremented.
- generate()[source]¶
Departs vehicles from the waiting queue.
Notes
If there are vehicles in the generation queue of the node, this method attempts to depart a vehicle to one of the outgoing links. The choice of the outgoing link is based on the vehicle’s route preference for each link. Once a vehicle is departed, it is removed from the generation queue, added to the list of vehicles on the chosen link, and its state is set to “run”.
- transfer()[source]¶
Transfers vehicles between links at the node.
Notes
This method handles the transfer of vehicles from one link to another at the node. A vehicle is eligible for transfer if:
The next link it intends to move to has space.
The vehicle has the right signal phase to proceed.
The current link has enough capacity to allow the vehicle to exit.
The node capacity is not exceeded.