def setUp(self): network_args = { 'network_id': 'grid', 'horizon': 999, 'demand_type': 'constant', 'tls_type': 'rl' } self.network = Network(**network_args)
def get_lanes_lengths(train_args): network_args = { 'network_id': train_args['network'], 'horizon': int(train_args['experiment_time']), 'demand_type': train_args['demand_type'], 'demand_mode': train_args['demand_mode'], 'tls_type': train_args['tls_type'] } network = Network(**network_args) lanes_lengths = { (edge['id'], int(lane['index'])): float(lane['length']) for edge in network.edges for lane in sorted(edge['lanes'], key=lambda x: int(x['index'])) } return lanes_lengths
def setUp(self): network_args = { 'network_id': 'grid', 'horizon': 999, 'demand_type': 'constant', 'tls_type': 'rl' } self.network = Network(**network_args) # with open('tests/unit/data/grid_kernel_data.dat', "rb") as f: # kernel_data = pickle.load(f) # self.kernel_data = kernel_data with open('tests/unit/data/grid_kernel_data_new_1.dat', "rb") as f: kernel_data_1 = pickle.load(f) self.kernel_data_1 = kernel_data_1 with open('tests/unit/data/grid_kernel_data_new_2.dat', "rb") as f: kernel_data_2 = pickle.load(f) self.kernel_data_2 = kernel_data_2
def main(train_config_path=None): # Setup config parser path. if train_config_path is not None: print(f'Loading train parameters from: {train_config_path}') config_parser.set_config_path(train_config_path) else: print('Loading train parameters from: configs/train.config [DEFAULT]') # Parse train parameters. train_args = config_parser.parse_train_params(print_params=True) network_args = { 'network_id': train_args.network, 'horizon': train_args.experiment_time, 'demand_type': train_args.demand_type, 'demand_mode': train_args.demand_mode, 'tls_type': train_args.tls_type } network = Network(**network_args) # Create directory to store data. experiment_path = EMISSION_PATH / network.name os.makedirs(experiment_path, exist_ok=True) print(f'Experiment: {str(experiment_path)}\n') sumo_args = { 'render': train_args.sumo_render, 'print_warnings': False, 'sim_step': 1, # Do not change. 'restart_instance': True, 'teleport_time': 120 } # Setup seeds. if train_args.experiment_seed is not None: random.seed(train_args.experiment_seed) np.random.seed(train_args.experiment_seed) sumo_args['seed'] = train_args.experiment_seed # Setup emission path. if train_args.sumo_emission: sumo_args['emission_path'] = experiment_path.as_posix() sim_params = SumoParams(**sumo_args) additional_params = {} additional_params['tls_type'] = train_args.tls_type env_args = { 'evaluate': True, 'additional_params': additional_params } env_params = EnvParams(**env_args) # Load MDP parameters from file (train.config[mdg_args]). mdp_params = config_parser.parse_mdp_params(network.tls_ids) env = TrafficLightEnv( env_params=env_params, sim_params=sim_params, mdp_params=mdp_params, network=network, exp_path=experiment_path.as_posix(), seed=train_args.experiment_seed, ) exp = Experiment( env=env, exp_path=experiment_path.as_posix(), train=True, save_agent=train_args.experiment_save_agent, save_agent_interval=train_args.experiment_save_agent_interval, tls_type=train_args.tls_type ) # Store train parameters (config file). config_parser.store_config(experiment_path / 'config') # Store a copy of the tls_config.json file. tls_config_path = NETWORKS_PATH / train_args.network / 'tls_config.json' copyfile(tls_config_path, experiment_path / 'tls_config.json') # Store a copy of the demands.json file. demands_file_path = NETWORKS_PATH / train_args.network / 'demands.json' copyfile(demands_file_path, experiment_path / 'demands.json') # Run the experiment. info_dict = exp.run(train_args.experiment_time) # Store train info dict. os.makedirs(experiment_path/ 'logs', exist_ok=True) train_log_path = experiment_path / 'logs' / "train_log.json" with train_log_path.open('w') as f: json.dump(info_dict, f) return str(experiment_path)
def main(config_file_path=None): args = get_arguments(config_file_path) print_arguments(args) print('Loading from train run: {0}\n'.format(args.run_path)) # Setup parser with custom path (load correct train parameters). config_path = Path(args.run_path) / 'config' / 'train.config' config_parser.set_config_path(config_path) # Parse train parameters. train_args = config_parser.parse_train_params(print_params=False) network_args = { 'network_id': train_args.network, 'horizon': args.rollout_time, 'demand_type': train_args.demand_type, 'demand_mode': train_args.demand_mode, 'tls_type': train_args.tls_type } network = Network(**network_args) # Create directory to store evaluation script data. experiment_path = Path(args.run_path) / 'eval' / f'{network.name}' os.makedirs(experiment_path, exist_ok=True) print(f'Experiment: {str(experiment_path)}') sumo_args = { 'render': args.sumo_render, 'print_warnings': False, 'sim_step': 1, # Do not change. 'restart_instance': True, 'teleport_time': 120 } # Setup seeds. if args.seed is not None: random.seed(args.seed) np.random.seed(args.seed) sumo_args['seed'] = args.seed # Setup emission path. if args.sumo_emission: sumo_args['emission_path'] = experiment_path.as_posix() sim_params = SumoParams(**sumo_args) additional_params = {} additional_params['tls_type'] = train_args.tls_type env_args = { 'evaluate': True, 'additional_params': additional_params } env_params = EnvParams(**env_args) # Load MDP parameters from file (train.config[mdg_args]). mdp_params = config_parser.parse_mdp_params(network.tls_ids) env = TrafficLightEnv( env_params=env_params, sim_params=sim_params, mdp_params=mdp_params, network=network, exp_path=experiment_path.as_posix(), seed=args.seed ) # Setup checkpoints. checkpoints_dir_path = Path(args.run_path) / 'checkpoints' env.tsc.load_checkpoint(checkpoints_dir_path, args.chkpt_number) # Stop training. env.stop = True exp = Experiment( env=env, exp_path=experiment_path.as_posix(), train=False, # Stop training. save_agent=False ) # Run the experiment. info_dict = exp.run(args.rollout_time) info_dict['id'] = args.chkpt_number return info_dict
def main(preprocess_config_path=None): # Setup config parser path. if preprocess_config_path is not None: print(f'Loading train parameters from: {preprocess_config_path}') config_parser.set_config_path(preprocess_config_path) else: print('Loading train parameters from: configs/train.config [DEFAULT]') # Parse pre-process parameters. # Since there is not a preprocess file we just use config/train.config preprocess_args = config_parser.parse_train_params(print_params=True) network_args = { 'network_id': preprocess_args.network, 'horizon': preprocess_args.experiment_time, 'demand_type': preprocess_args.demand_type, 'demand_mode': preprocess_args.demand_mode, 'tls_type': preprocess_args.tls_type } network = Network(**network_args) # Create directory to store data. # experiment_path = EMISSION_PATH / network.name # os.makedirs(experiment_path, exist_ok=True) # print(f'Experiment: {str(experiment_path)}\n') sumo_args = { 'render': preprocess_args.sumo_render, 'print_warnings': False, 'sim_step': 1, # Do not change. 'restart_instance': True, 'teleport_time': 120 } # Setup seeds. if preprocess_args.experiment_seed is not None: random.seed(preprocess_args.experiment_seed) np.random.seed(preprocess_args.experiment_seed) sumo_args['seed'] = preprocess_args.experiment_seed sim_params = SumoParams(**sumo_args) additional_params = {} additional_params['tls_type'] = preprocess_args.tls_type env_args = {'evaluate': True, 'additional_params': additional_params} env_params = EnvParams(**env_args) # Load MDP parameters from file (train.config[mdg_args]). mdp_params = config_parser.parse_mdp_params(network.tls_ids) env = TrafficLightEnv( env_params=env_params, sim_params=sim_params, mdp_params=mdp_params, network=network, exp_path=None, seed=preprocess_args.experiment_seed, ) exp = Experiment( env=env, train=True, exp_path=None, save_agent=preprocess_args.experiment_save_agent, save_agent_interval=preprocess_args.experiment_save_agent_interval, tls_type=preprocess_args.tls_type) # Run the experiment. info_dict = exp.run(preprocess_args.experiment_time) return info_dict