World

World class wraps the simulator inside. It can extract information directly from simulators and Intersection class, and integrates the information. The processed information, packaged in info_informations, will be passed to Agent class by calling Generator class. Currently, LibSignal supports SUMO World and CityFlow World. Users can also add new simulator world into LibSignal, the details can be found in Customize World.

Intersection

Intersections are the basic components of the World. An intersection consists of different roads, and a road may contain multiple lanes. Also, the intersection can be controlled by traffic phases produced by Agent. All of the information is stored in variables of Intersection class, for example, self.roads, self.lane_links and self.phases, etc.

When the World needs to get some information or take action, the actual executor is Intersection, which will call the corresponding methods. For example, when World calls step to take relative action and update information, it actually will call step method of each Intersection to execute.

info_functions

info_functions retrieves information from different simulators environments and update information after each simulator stepped. It contains state information including lane_count, lane_waiting_count, lane_waiting_time_count, pressure, phase ,and metrics including throughput, average_travel_time, lane_delay, lane_vehicles. These info_functions will later be called by Generator class and pass information into Agent.