Skip to content

Commit 6cd78e4

Browse files
committed
can change to no control
1 parent 21ceaec commit 6cd78e4

File tree

3 files changed

+100
-94
lines changed

3 files changed

+100
-94
lines changed

src/deadlock.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,15 +108,18 @@ def init(is_gui):
108108
PRIORITY = {"gneJ12": "PRIORITY"}
109109

110110

111-
def simulation(num, is_gui):
111+
def simulation(num, is_gui, with_program):
112112

113113
init(is_gui)
114114
make_deadlock_vehicle(num)
115115
while traci.simulation.getMinExpectedNumber() > 0:
116-
solve_deadlock("gneJ12", 0, {})
116+
if with_program:
117+
solve_deadlock("gneJ12", 0, {})
117118
traci.simulationStep()
118119
traci.close()
119120

120121

121122
num_of_vehicles = int(input("Num of vehicles :"))
122-
simulation(num_of_vehicles, True)
123+
with_program = int(input("With control program (0=false, 1=true):"))
124+
125+
simulation(num_of_vehicles, True, bool(with_program))

src/gridlock.py

Lines changed: 54 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ def control_vehicle(vehID, net):
8989
}
9090

9191

92-
def simulation(num_of_vehicles):
92+
def simulation(num_of_vehicles, with_program):
9393
init(True)
9494
for i in range(1, num_of_vehicles):
9595
traci.route.add(
@@ -109,38 +109,53 @@ def simulation(num_of_vehicles):
109109
traci.vehicle.setMaxSpeed(f"{k}_{i}", SPEED)
110110
traci.vehicle.setColor(f"{k}_{i}", color_dic[k])
111111
while traci.simulation.getMinExpectedNumber() > 0:
112-
locked_vehicles = {}
113-
leaders = []
114-
gridlock = []
115-
control_arr = []
116-
current_time = traci.simulation.getTime()
117-
all_vehicles = traci.vehicle.getIDList()
118-
119-
for vehicle in all_vehicles:
120-
leader = (traci.vehicle.getLeader(vehicle))
121-
vehicle_lane = traci.vehicle.getLaneID(vehicle)
122-
try:
123-
if vehicle_lane[0] != ":":
124-
if leader == None:
125-
leaders.append(vehicle)
126-
else:
127-
leader_lane = traci.vehicle.getLaneID(leader[0])
128-
if vehicle_lane != leader_lane:
112+
if with_program:
113+
locked_vehicles = {}
114+
leaders = []
115+
gridlock = []
116+
control_arr = []
117+
current_time = traci.simulation.getTime()
118+
all_vehicles = traci.vehicle.getIDList()
119+
120+
for vehicle in all_vehicles:
121+
leader = (traci.vehicle.getLeader(vehicle))
122+
vehicle_lane = traci.vehicle.getLaneID(vehicle)
123+
try:
124+
if vehicle_lane[0] != ":":
125+
if leader == None:
129126
leaders.append(vehicle)
130-
except:
131-
pass
132-
for leader in leaders:
133-
leader_lanes = traci.vehicle.getBestLanes(leader)[0][5]
134-
control_arr.append(leader)
135-
136-
if len(leader_lanes) > 1:
137-
locked_veh = detect_gridlock(leader, leader_lanes[1])
138-
if locked_veh:
139-
locked_vehicles[locked_veh[0]] = locked_veh[1]
140-
141-
for init_veh in (locked_vehicles):
142-
if len(gridlock) > 0:
143-
if init_veh not in gridlock[0]:
127+
else:
128+
leader_lane = traci.vehicle.getLaneID(leader[0])
129+
if vehicle_lane != leader_lane:
130+
leaders.append(vehicle)
131+
except:
132+
pass
133+
for leader in leaders:
134+
leader_lanes = traci.vehicle.getBestLanes(leader)[0][5]
135+
control_arr.append(leader)
136+
137+
if len(leader_lanes) > 1:
138+
locked_veh = detect_gridlock(leader, leader_lanes[1])
139+
if locked_veh:
140+
locked_vehicles[locked_veh[0]] = locked_veh[1]
141+
142+
for init_veh in (locked_vehicles):
143+
if len(gridlock) > 0:
144+
if init_veh not in gridlock[0]:
145+
temp = []
146+
index = init_veh
147+
for k in range(15):
148+
try:
149+
next_vehicle = locked_vehicles[index]
150+
temp.append(next_vehicle)
151+
index = next_vehicle
152+
if next_vehicle == init_veh:
153+
gridlock.append(temp)
154+
break
155+
156+
except:
157+
break
158+
elif len(gridlock) == 0:
144159
temp = []
145160
index = init_veh
146161
for k in range(15):
@@ -154,31 +169,18 @@ def simulation(num_of_vehicles):
154169

155170
except:
156171
break
157-
elif len(gridlock) == 0:
158-
temp = []
159-
index = init_veh
160-
for k in range(15):
161-
try:
162-
next_vehicle = locked_vehicles[index]
163-
temp.append(next_vehicle)
164-
index = next_vehicle
165-
if next_vehicle == init_veh:
166-
gridlock.append(temp)
167-
break
168-
169-
except:
170-
break
171172

172-
for v in control_arr:
173-
control_vehicle(v, net)
174-
for vehicles in gridlock:
175-
for v in vehicles:
176-
traci.vehicle.setSpeed(v, SPEED)
173+
for v in control_arr:
174+
control_vehicle(v, net)
175+
for vehicles in gridlock:
176+
for v in vehicles:
177+
traci.vehicle.setSpeed(v, SPEED)
177178
traci.simulationStep()
178179
if traci.simulation.getTime() == 5000:
179180
traci.close()
180181
traci.close()
181182

182183

183184
num_of_vehicles = int(input("Num of vehicles :"))
184-
simulation(num_of_vehicles)
185+
with_program = int(input("With control program (0=false, 1=true):"))
186+
simulation(num_of_vehicles, bool(with_program))

src/randomScenario.py

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -161,35 +161,50 @@ def init(is_gui):
161161
PRIORITY_ARR = []
162162

163163

164-
def simulation(num, is_gui):
164+
def simulation(num, with_program):
165165
for node in net.getNodes():
166166
NODES.append(node.getID())
167167
PRIORITY[node.getID()] = "PRIORITY"
168-
init(is_gui)
168+
init(True)
169169
teleportNum = 0
170170
departedNum = 0
171171
arrivedNum = 0
172172
for i in range(num):
173173
make_vehicle(f"vehicle_{i}", make_random_route(i), 0)
174174
while traci.simulation.getMinExpectedNumber() > 0:
175-
locked_vehicle = {}
176-
collisions_arr = traci.simulation.getCollisions()
177-
if collisions_arr:
178-
print(traci.simulation.getCollisions())
179-
for index, node in enumerate(NODES):
180-
solve_deadlock(node, index, locked_vehicle)
181-
del_arr = []
182-
for vehicle_key in locked_vehicle.keys():
183-
if vehicle_key not in locked_vehicle.values():
184-
del_arr.append(vehicle_key)
185-
for key in del_arr:
186-
del locked_vehicle[key]
187-
188-
#GRIDLOCK
189-
gridlock = []
190-
for init_veh in (locked_vehicle):
191-
if len(gridlock) > 0:
192-
if init_veh not in gridlock[0]:
175+
if with_program:
176+
locked_vehicle = {}
177+
collisions_arr = traci.simulation.getCollisions()
178+
if collisions_arr:
179+
print(traci.simulation.getCollisions())
180+
for index, node in enumerate(NODES):
181+
solve_deadlock(node, index, locked_vehicle)
182+
del_arr = []
183+
for vehicle_key in locked_vehicle.keys():
184+
if vehicle_key not in locked_vehicle.values():
185+
del_arr.append(vehicle_key)
186+
for key in del_arr:
187+
del locked_vehicle[key]
188+
189+
#GRIDLOCK
190+
gridlock = []
191+
for init_veh in (locked_vehicle):
192+
if len(gridlock) > 0:
193+
if init_veh not in gridlock[0]:
194+
temp = []
195+
index = init_veh
196+
for k in range(6):
197+
try:
198+
next_vehicle = locked_vehicle[index]
199+
temp.append(next_vehicle)
200+
index = next_vehicle
201+
if next_vehicle == init_veh:
202+
gridlock.append(temp)
203+
break
204+
205+
except:
206+
break
207+
elif len(gridlock) == 0:
193208
temp = []
194209
index = init_veh
195210
for k in range(6):
@@ -203,30 +218,16 @@ def simulation(num, is_gui):
203218

204219
except:
205220
break
206-
elif len(gridlock) == 0:
207-
temp = []
208-
index = init_veh
209-
for k in range(6):
210-
try:
211-
next_vehicle = locked_vehicle[index]
212-
temp.append(next_vehicle)
213-
index = next_vehicle
214-
if next_vehicle == init_veh:
215-
gridlock.append(temp)
216-
break
217221

218-
except:
219-
break
220-
221-
for vehicles in gridlock:
222-
for v in vehicles:
223-
traci.vehicle.setSpeed(v, SPEED)
222+
for vehicles in gridlock:
223+
for v in vehicles:
224+
traci.vehicle.setSpeed(v, SPEED)
224225
traci.simulationStep()
225226
if traci.simulation.getTime() == 3600:
226227
traci.close()
227228
traci.close()
228229

229230

230231
num_of_vehicles = int(input("Num of vehicles :"))
231-
232-
simulation(num_of_vehicles, True)
232+
with_program = int(input("With control program (0=false, 1=true):"))
233+
simulation(num_of_vehicles, with_program)

0 commit comments

Comments
 (0)