fh = logging.FileHandler(file_name + '.log')
fh.setLevel(logging.DEBUG)
sh = logging.StreamHandler()
sh.setLevel(logging.INFO)
logger.addHandler(fh)
logger.addHandler(sh)

#Config File
parameters = u.get_info_file(args.parameters)
episodes = parameters['episodes']
parameters['log_path'] = args.log_dir
action_interval = parameters['action_interval']

#start wandb
u.wand_init("TLC - Results C2",
            f"new_dqn: {ntpath.basename(args.parameters)[:-5]}", "new_dqn")

# create world
world = World(args.config_file, thread_num=args.thread)

# create agents
agents = []

#parameters['buffer_size'] = parameters['buffer_size']*len(world.intersections)
#parameters['batch_size'] = parameters['batch_size']*len(world.intersections)

for i in world.intersections:
    action_space = gym.spaces.Discrete(len(i.phases))
    agents.append(
        DQNAgent(
            action_space,
Exemple #2
0
    episodes_rewards += rewards[0]

    #Check if it's over by flag "Done"
    if all(dones) == True:
        print(i)
        break

print(f"\n--SOTL Results--")
print(f"Steps: {steps}")
print(f"Episodes Rewards: {episodes_rewards/steps:.4f}")
# for metric in env.metric:
#     print(f"{metric.name}: {metric.eval():.4f}")

#start wandb
u.wand_init(
    "TLC - Results C2",
    f"SOTL: {options['green_time']} {options['green_v']} {options['red_v']}",
    "SOTL")

eval_dict = {}
eval_dict["epsilon"] = 0
eval_dict["steps"] = steps
eval_dict["mean_episode_reward"] = episodes_rewards / steps
for metric in env.metric:
    eval_dict[metric.name] = metric.eval()
    print(f"{metric.name}: {metric.eval():.4f}")

for e in range(200):
    eval_dict["episode"] = e

    u.wand_log(eval_dict)
Exemple #3
0
fh = logging.FileHandler(file_name + '.log')
fh.setLevel(logging.DEBUG)
sh = logging.StreamHandler()
sh.setLevel(logging.INFO)
logger.addHandler(fh)
logger.addHandler(sh)

#Config File
parameters = u.get_info_file(args.parameters)
episodes = parameters['episodes']
parameters['log_path'] = args.log_dir
action_interval = parameters['action_interval']

parameters['dataset_path'] = args.dataset
#start wandb
u.wand_init("TLC - Results C2",
            f"XQN : {ntpath.basename(args.parameters)[:-5]}", "XQN")

# create world
world = World(args.config_file, thread_num=args.thread)

# create agents
agents = []
for i in world.intersections:
    action_space = gym.spaces.Discrete(len(i.phases))
    agents.append(
        XQNAgent(
            action_space,
            PhaseVehicleGenerator(world,
                                  i, ["phase_vehicles"],
                                  in_only=True,
                                  average=None,
Exemple #4
0
sh = logging.StreamHandler()
sh.setLevel(logging.INFO)
logger.addHandler(fh)
logger.addHandler(sh)

#Get file with informations
info_file = u.get_info_file(args.info_file)
offset_phase_train = info_file['offset_phase_train']
offset_phase = info_file['offset_phase']
flag_default_reward = info_file['flag_default_reward']
flag_mean_reward = info_file['flag_mean_reward']

episodes = args.episodes if info_file['flag_arg_episode'] else info_file['episodes']

#start wandb
u.wand_init("TLC - Results", f"ES_DQN: {ntpath.basename(args.info_file)[:-5]}",'ES_DQN')

# create world
world = World(args.config_file, thread_num=args.thread)

# define tempo de amarelo
yellow_phase_time = 0
# create agents
agents = []
for i in world.intersections:
    yellow_phase_time = i.yellow_phase_time
    action_space = gym.spaces.Discrete(11)
    agents.append(DQNAgent(
        action_space,
        StateOfThreeGenerator(world, i, ["state_of_three"], in_only=True, average=None),
        LaneVehicleGenerator(world, i, ["lane_waiting_count"], in_only=True, average="all", negative=True),
Exemple #5
0
parser.add_argument('--save_dir', type=str, default="model/dqn", help='directory in which model should be saved')
parser.add_argument('--log_dir', type=str, default="log/dqn", help='directory in which logs should be saved')
args = parser.parse_args()

if not os.path.exists(args.log_dir):
    os.makedirs(args.log_dir)
logger = logging.getLogger('main')
logger.setLevel(logging.DEBUG)
fh = logging.FileHandler(os.path.join(args.log_dir, datetime.now().strftime('%Y%m%d-%H%M%S') + ".log"))
fh.setLevel(logging.DEBUG)
sh = logging.StreamHandler()
sh.setLevel(logging.INFO)
logger.addHandler(fh)
logger.addHandler(sh)

u.wand_init("TLC - Results",f"dqn:", "dqn")

# create world
world = World(args.config_file, thread_num=args.thread)

# create agents
agents = []
for i in world.intersections:
    action_space = gym.spaces.Discrete(len(i.phases))
    agents.append(DQNAgent(
        action_space,
        LaneVehicleGenerator(world, i, ["lane_count"], in_only=True, average=None),
        LaneVehicleGenerator(world, i, ["lane_waiting_count"], in_only=True, average="all", negative=True),
        i.id
    ))
    if args.load_model:
    obs, rewards, dones, info = env.step(actions)
    steps += 1
    episodes_rewards += rewards[0]

    #Check if it's over by flag "Done"
    if all(dones) == True:
        print(i)
        break

print(f"\n--MaxPressure Results--")
print(f"Steps: {steps}")
print(f"Episodes Rewards: {episodes_rewards/steps:.4f}")
# for metric in env.metric:
#     print(f"{metric.name}: {metric.eval():.4f}")

#start wandb
u.wand_init("TLC - Results C2", f"MaxPressure: {options['delta_t']}",
            "MaxPressure")

eval_dict = {}
eval_dict["epsilon"] = 0
eval_dict["steps"] = steps
eval_dict["mean_episode_reward"] = episodes_rewards / steps
for metric in env.metric:
    eval_dict[metric.name] = metric.eval()
    print(f"{metric.name}: {metric.eval():.4f}")

for e in range(200):
    eval_dict["episode"] = e

    u.wand_log(eval_dict)
Exemple #7
0
fh = logging.FileHandler(file_name + '.log')
fh.setLevel(logging.DEBUG)
sh = logging.StreamHandler()
sh.setLevel(logging.INFO)
logger.addHandler(fh)
logger.addHandler(sh)

#Config File
parameters = u.get_info_file(args.parameters)
episodes = parameters['episodes']
parameters['log_path'] = args.log_dir
action_interval = parameters['action_interval']

parameters['dataset_path'] = args.dataset
#start wandb
u.wand_init("TLC - Results", f"xqn : {ntpath.basename(args.parameters)[:-5]}",
            "xqn")

# create world
world = World(args.config_file, thread_num=args.thread)

# create agents
agents = []
for i in world.intersections:
    action_space = gym.spaces.Discrete(len(i.phases))
    agents.append(
        XQNAgent(
            action_space,
            LaneVehicleGenerator(world,
                                 i, ["lane_count"],
                                 in_only=True,
                                 average=None,
    obs, rewards, dones, info = env.step(actions)
    steps += 1
    episodes_rewards += rewards[0]

    #Check if it's over by flag "Done"
    if all(dones) == True:
        print(i)
        break

print(f"\n--FixedTime Results--")
print(f"Steps: {steps}")
print(f"Episodes Rewards: {episodes_rewards/steps:.4f}")
# for metric in env.metric:
#     print(f"{metric.name}: {metric.eval():.4f}")

#start wandb
u.wand_init("TLC - Results C2", f"FixedTime: {options['phase_time']}",
            "FixedTime")

eval_dict = {}
eval_dict["epsilon"] = 0
eval_dict["steps"] = steps
eval_dict["mean_episode_reward"] = episodes_rewards / steps
for metric in env.metric:
    eval_dict[metric.name] = metric.eval()
    print(f"{metric.name}: {metric.eval():.4f}")

for e in range(200):
    eval_dict["episode"] = e

    u.wand_log(eval_dict)
    obs, rewards, dones, info = env.step(actions)
    steps += 1
    episodes_rewards += rewards[0]

    #Check if it's over by flag "Done"
    if all(dones) == True:
        print(i)
        break

print(f"\n--MaxVehicle Results--")
print(f"Steps: {steps}")
print(f"Episodes Rewards: {episodes_rewards/steps:.4f}")
# for metric in env.metric:
#     print(f"{metric.name}: {metric.eval():.4f}")

#start wandb
u.wand_init("TLC - Results C2", f"MaxVehicle: {options['delta_t']}",
            "MaxVehicle")

eval_dict = {}
eval_dict["epsilon"] = 0
eval_dict["steps"] = steps
eval_dict["mean_episode_reward"] = episodes_rewards / steps
for metric in env.metric:
    eval_dict[metric.name] = metric.eval()
    print(f"{metric.name}: {metric.eval():.4f}")

for e in range(200):
    eval_dict["episode"] = e

    u.wand_log(eval_dict)