-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSumoMain.py
67 lines (52 loc) · 2.01 KB
/
SumoMain.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import os
import sys
import time
import traci.constants as tc
from Credits import CreditSystem, CreditPolicy
from FirstToReach import DistanceFromJunctionNoPolicy
from Random import RandomPolicy
import Graphs
import released
if 'SUMO_HOME' in os.environ:
tools = os.path.join(os.environ['SUMO_HOME'], 'tools')
sys.path.append(tools)
else:
sys.exit("please declare environment variable 'SUMO_HOME'")
import traci.constants
sumoCmd = ["sumo-gui", "-c", "SUMOFiles/sumomain.sumo.cfg", "--start"]
traci.start(sumoCmd)
print("Starting SUMO")
traci.gui.setSchema("View #0", "real world")
# loads vehicles loaded into simulation
vehicles = traci.simulation.getLoadedIDList()
df = CreditSystem.read_reputation()
all_vehicles = traci.simulation.getLoadedIDList()
speed_data, waiting_time, credit = Graphs.create_object(vehicles)
for veh in range(0, len(vehicles)):
# subscribes to check for neighbours 75m away
traci.vehicle.subscribeContext(vehicles[veh], tc.CMD_GET_VEHICLE_VARIABLE, 65, [tc.VAR_SPEED])
# CreditSystem.random_rep(df, vehicles)
traci.simulationStep()
df = CreditPolicy.credit_policy(vehicles, df)
# RandomPolicy.random_policy(vehicles)
# DistanceFromJunctionNoPolicy.Distance(vehicles)
speed_data = Graphs.speed_record(speed_data, vehicles)
waiting_time = Graphs.waiting_time(waiting_time, vehicles)
credit = Graphs.credit_track(credit, df, vehicles)
# runs until no cars left in simulation
while traci.vehicle.getIDList():
# this runs one simulation step
time.sleep(0.01)
traci.simulationStep()
vehicles = traci.vehicle.getIDList()
df = CreditPolicy.credit_policy(vehicles, df)
# RandomPolicy.random_policy(vehicles)
# DistanceFromJunctionNoPolicy.Distance(vehicles)
speed_data = Graphs.speed_record(speed_data, vehicles)
waiting_time = Graphs.waiting_time(waiting_time, vehicles)
credit = Graphs.credit_track(credit, df, vehicles)
traci.close()
print(released.released)
# Graphs.export_speed(speed_data)
# Graphs.export_wait(waiting_time)
# Graphs.export_credits(credit)