示例#1
0
    def setUp(self):

        network_args = {
            'network_id': 'grid',
            'horizon': 999,
            'demand_type': 'constant',
            'tls_type': 'rl'
        }
        self.network = Network(**network_args)
示例#2
0
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
示例#3
0
文件: test_grid.py 项目: GAIPS/ILU-RL
    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
示例#4
0
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)
示例#5
0
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
示例#6
0
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