tokev's picture
Add files using upload-large-folder tool
5893134 verified
# env
CityFlow environment implementation for intersection-level RL with district-type metadata.
## Main files
- [traffic_env.py](/Users/aditya/Developer/traffic-llm/env/traffic_env.py)
Main environment. One episode corresponds to one `(city, scenario)` pair.
- [cityflow_adapter.py](/Users/aditya/Developer/traffic-llm/env/cityflow_adapter.py)
Thin wrapper around the CityFlow Python engine.
- [observation_builder.py](/Users/aditya/Developer/traffic-llm/env/observation_builder.py)
Converts variable city topology into fixed-size per-intersection tensors.
- [reward.py](/Users/aditya/Developer/traffic-llm/env/reward.py)
Configurable local reward calculation.
- [utils.py](/Users/aditya/Developer/traffic-llm/env/utils.py)
Topology parsing and helper functions.
- [intersection_config.py](/Users/aditya/Developer/traffic-llm/env/intersection_config.py)
Internal topology dataclasses.
## How it works
- Reads `roadnet.json`, `district_map.json`, and district types from `metadata.json`.
- Identifies non-virtual controllable intersections with at least two green phases.
- Uses one action per controllable intersection.
- Enforces `min_green_time` inside the environment.
- Advances CityFlow for `decision_interval` simulator steps between policy decisions.
- Returns a batched observation for all controlled intersections.
## Observation model
Per intersection:
- padded incoming lane vehicle counts
- padded incoming lane waiting counts
- incoming lane mask
- current green phase index
- elapsed time in current phase
- optional outgoing congestion summary
- district-type one-hot features
- optional small district context
- boundary-intersection indicator
The observation dimension is exposed as `TrafficEnv.observation_dim`.