# Generator **Generator** class aims to provide state, reward, phase and other information to **Agent** class by interacting with **World** class. The information is divided into phase, intersection and lane levels, corresponding to **IntersectionPhaseGenerator**, **IntersectionVehicleGenerator** and **LaneVehicleGenerator**. ## BaseGenerator **BaseGenerator** is an abstract class. It uses `generate` method to generate state or reward based on current simulation state. In `generate` method, it takes the name of the required information as parameters of input, then integrates the information, and outputs the values. Different types of generators have different methods to implement. It is required to override the `generate` method in other **Generator** classes, otherwise, it will display `NotImplementedError` message. ## IntersectionPhaseGenerator **IntersectionPhaseGenerator** generates state or reward based on statistics of intersection phases. Currently, it supports the value of `cur_phase` to return. Details can be found in [API REFERENCE.IntersectionPhaseGenerator](). ## IntersectionVehicleGenerator **IntersectionVehicleGenerator** generates state or reward based on statistics of intersection vehicles. Currently, it supports `vehicle_trajectory`, `lane_vehicles`, `history_vehicles` and `vehicle_distance` as parameters of input, and supports `vehicle_map`, `passed_count`, `passed_time_count`, `cur_phase` as output. Details can be found in [API REFERENCE.IntersectionVehicleGenerator](). ## LaneVehicleGenerator **LaneVehicleGenerator** generates state or reward based on statistics of lane vehicles. Currently, it supports `lane_count`, `lane_waiting_count`, `lane_waiting_time_count`, `lane_delay` and `pressure` as parameters of input, and supports the same information as output. Details can be found in [API REFERENCE.LaneVehicleGenerator]().