MPLight icon indicating copy to clipboard operation
MPLight copied to clipboard

How to run the manhattan data?

Open LuckyLeeLL opened this issue 3 years ago • 10 comments

How to modify the parameters to run the manhattan data? I try to adjust the road_net and the volum, but the 'json' file without NUM_COL and NUM_ROW.

Thank you very much.

LuckyLeeLL avatar Jan 10 '22 10:01 LuckyLeeLL

How to modify the parameters to run the manhattan data? I try to adjust the road_net and the volum, but the 'json' file without NUM_COL and NUM_ROW.

Thank you very much.

Hello, I am also facing the same problem. Could you please tell me if you have solved it? Thank you very much.

MPHarryZhang avatar Jul 27 '22 13:07 MPHarryZhang

Same problem

jianghaoyuan1994 avatar Aug 31 '22 03:08 jianghaoyuan1994

Same problem,has anyone solve it?

WaterFountain-Jack avatar Dec 28 '22 12:12 WaterFountain-Jack

I have read the json files of Manhattan in deatails, and the traffic network is not a regular pattern. Therefore, just use NUM_COL and NUM_ROW can describe it.

Additionally, the intersections under Manhattan also different from each other, rather than a 4-way 4-phase intersection. And the current file and model cannot support running under Manhattan.

In summary, it is impossible to train and test models under Manhattan, unless you design a unified neural network like AttendLight.

LiangZhang1996 avatar Mar 10 '23 01:03 LiangZhang1996

Thank you for your answer!

WaterFountain-Jack avatar Mar 12 '23 03:03 WaterFountain-Jack

hello, guys. intersection number in MPLight/data/manhattan/manhattan.json just 1 while tsc says "The road network contains 2510 intersections in Manhattan". other files like manhattan_*.json are just flowFile not roadnetFile. so why the roadnetFile just contain 1 intersection?

BackMountainDevil avatar Dec 12 '23 03:12 BackMountainDevil

my mistake. 1 intersections can contains all intersection. I got it. sorry to borther you guys.

BackMountainDevil avatar Dec 12 '23 03:12 BackMountainDevil

my mistake. 1 intersections can contains all intersection. I got it. sorry to borther you guys. Great answer, thank you very much!

WaterFountain-Jack avatar Dec 12 '23 03:12 WaterFountain-Jack

I count the different intersection with diff phase and got some wired data: {1: 1421, 2: 1459, 3: 16, 4: 6, 8: 678, 9: 182, 10: 1}. The amount of them is 3763. If the time of lightphases is 0, I just cut it off when counting

  1. paper say there is 2510 traffic lights, I count the not virtual intersection num is 3763. Am I counting wrong?
  2. The number of traffic light with only 1 phase is 1421, such as cluster_5333189427_5333189428. I wonder if only 1 phase, why would it need to be controned? I think those which >=2 should be control.
def parse_roadnet(roadnetFile):
    roadnet = json.load(open(roadnetFile))
    lane_phase_info_dict ={}

    # many intersections exist in the roadnet and virtual intersection is controlled by signal
    for intersection in roadnet["intersections"]:
        if intersection['virtual']:
            continue
        lane_phase_info_dict[intersection['id']] = {"location": {
                                                    "x": float(intersection["point"]["x"]),
                                                    "y": float(intersection["point"]["y"]),},
                                                    "start_lane": [],
                                                    "end_lane": [],
                                                    "phase": [],
                                                    "phase_startLane_mapping": {},
                                                    "phase_roadLink_mapping": {},
                                                     
                                                }
        road_links = intersection["roadLinks"]

        start_lane = []
        end_lane = []
        roadLink_lane_pair = {ri: [] for ri in
                              range(len(road_links))}  # roadLink includes some lane_pair: (start_lane, end_lane)

        for ri in range(len(road_links)):
            road_link = road_links[ri]
            for lane_link in road_link["laneLinks"]:
                sl = road_link['startRoad'] + "_" + str(lane_link["startLaneIndex"])
                el = road_link['endRoad'] + "_" + str(lane_link["endLaneIndex"])
                start_lane.append(sl)
                end_lane.append(el)
                roadLink_lane_pair[ri].append((sl, el))

        lane_phase_info_dict[intersection['id']]["start_lane"] = sorted(list(set(start_lane)))
        lane_phase_info_dict[intersection['id']]["end_lane"] = sorted(list(set(end_lane)))

        # ["trafficLight"]["lightphases"] 中的长度并不一定等于红绿灯的全部相位,比如生成脚本的第一个相位就是全红,只允许右转,还有的是该相位的时间为0,manhattan中就有不少是availableRoadLinks和time都是0的情况
        phase_i = 0
        start_index= 0 # 设置为1来跳过第一个红灯相位
        for _ in range(start_index, len(intersection["trafficLight"]["lightphases"])):  
            p = intersection["trafficLight"]["lightphases"][phase_i]
            if p['time']<=0:
                continue
            lane_pair = []
            start_lane = []
            for ri in p["availableRoadLinks"]:
                lane_pair.extend(roadLink_lane_pair[ri])
                if roadLink_lane_pair[ri][0][0] not in start_lane:
                    start_lane.append(roadLink_lane_pair[ri][0][0])
            lane_phase_info_dict[intersection['id']]["phase"].append(phase_i)
            lane_phase_info_dict[intersection['id']]["phase_startLane_mapping"][phase_i] = start_lane
            lane_phase_info_dict[intersection['id']]["phase_roadLink_mapping"][phase_i] = lane_pair
            phase_i += 1
    return lane_phase_info_dict

if __name__ == "__main__":
    lane_phase_info = parse_roadnet("manhattan/manhattan.json")
    print(len(lane_phase_info)) # 3763
    count_phase = defaultdict(int)
    for inter in lane_phase_info.keys():
        count_phase[len(lane_phase_info[inter]['phase'])]+=1
    print(count_phase) # defaultdict(<class 'int'>, {1: 1421, 2: 1459, 4: 6, 9: 182, 8: 678, 10: 1, 3: 16})

BackMountainDevil avatar Mar 07 '24 06:03 BackMountainDevil

你好,我是宣传部的乔嗣尧,已收到您的来信,我会及时查收并回复。如果您有急事,请联系我: 19823327107  或   18087037706

WaterFountain-Jack avatar Mar 07 '24 06:03 WaterFountain-Jack