コード例 #1
0
def make_env(obs_converter, action_converter, port, id, seed, subset,
             video_every, video_dir, reward_class_name, experiment_suite,
             benchmark, city_name):
    return lambda: CarlaEnv(obs_converter,
                            action_converter,
                            id,
                            seed,
                            reward_class_name=reward_class_name,
                            port=port,
                            subset=subset,
                            video_every=video_every,
                            video_dir=video_dir,
                            exp_suite_name=experiment_suite,
                            benchmark=benchmark,
                            city_name=city_name)
コード例 #2
0
env_name = "carla_env"
env_config = ENV_CONFIG.copy()
env_config.update({
    "verbose": False,
    "x_res": 80,
    "y_res": 80,
    "use_depth_camera": False,
    "discrete_actions": True,
    "server_map": "/Game/Maps/Town02",
    "reward_function": "lane_keep",
    "enable_planner": False,
    "scenarios": [LANE_KEEP],
})

register_env(env_name, lambda env_config: CarlaEnv(env_config))
register_carla_model()

ray.init()
run_experiments({
    "carla-dqn": {
        "run": "DQN",
        "env": "carla_env",
        "config": {
            "env_config": env_config,
            "model": {
                "custom_model": "carla",
                "custom_options": {
                    "image_shape": [80, 80, 6],
                },
                "conv_filters": [
コード例 #3
0
    def update_epsilon(self):
        if self.epsilon > self.epsilon_min:
            self.epsilon *= self.epsilon_decay

    def exit(self):
        self.logger.save_fit_history(self.dqnetwork.loss_hist,
                                     self.dqnetwork.acc_hist)
        self.logger.save_model_weights(self.dqnetwork.model, "_exit")


if __name__ == '__main__':
    prepare_environment()

    logger = Logger()
    env = CarlaEnv(spawn_index=0, action_size=5)
    state = env.reset()
    agent = DQNAgent(state.shape, 5, logger)

    try:
        max_episodes = 10000
        max_frames = 5000
        total_rewards = []
        epsilons = []
        mean_max_q_values = []

        for episode in range(max_episodes):
            spawn_index = random.randint(0, len(env.spawn_points) - 1)
            state = env.reset(spawn_index)
            state = np.expand_dims(state, axis=0)
            total_reward = 0