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)
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": [
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