Example #1
0
def evaluate_st(num_episodes=1000):
    aggregate_stats = control.evaluate_control(
        do_st_control,
        num_episodes=num_episodes,
        state_function=prediction.HighwayState.from_sumo,
        verbose=True)
    aggregate_stats.print_stats()
Example #2
0
def evaluate_st_and_dump_crash(num_episodes=1000):
    aggregate_stats = control.evaluate_control(
        do_st_control,
        num_episodes,
        state_function=prediction.HighwayState.from_sumo,
        crash_callback=plot_crash,
        verbose=True,
        save_state_on_crash=True)
    aggregate_stats.print_stats()
Example #3
0
 def evaluate(self, num_episodes):
     self._setup()
     output = control.evaluate_control(
         control_function=self.do_control,
         state_function=prediction.HighwayState.from_sumo,
         crash_callback=None,
         num_episodes=num_episodes,
         end_episode_callback=self.end_episode_callback,
         verbose=True)
     output.print_stats()
     self._cleanup()
Example #4
0
def evaluate(model_name, num_iterations):
    dqn = DQN.load(model_name)
    control_function = partial(do_dqn_control, dqn=dqn, epsilon=0.0)
    reward_function = get_reward_function()
    evaluation_stats = control.evaluate_control(
        control_function=control_function,
        state_function=prediction.HighwayState.from_sumo,
        custom_stats_function=partial(rl.get_rl_custom_episode_stats,
                                      reward_function=reward_function),
        max_episode_length=Settings.EVALUATION_EPISODE_LENGTH,
        num_episodes=num_iterations,
        wait_before_start=20)
    evaluation_stats.print_stats()
Example #5
0
 def evaluate_combined(self, num_episodes):
     self._setup()
     output = control.evaluate_control(
         control_function=self.do_combined_control,
         state_function=prediction.HighwayState.from_sumo,
         crash_callback=None,
         end_episode_callback=self.end_episode_callback,
         num_episodes=num_episodes,
         custom_stats_function=self.combined_stats_callback,
         verbose=True)
     self._cleanup()
     output.print_stats()
     self.plot_st_proportion()
Example #6
0
def evaluate_q_model_and_log_metrics(dqn, iteration, writer, reward_function):
    sumo.change_step_size(Settings.EVALUATION_TICK_LENGTH)
    control_function = partial(do_dqn_control, dqn=dqn, epsilon=0.0)
    evaluation_stats = control.evaluate_control(
        control_function=control_function,
        state_function=prediction.HighwayState.from_sumo,
        custom_stats_function=partial(rl.get_rl_custom_episode_stats,
                                      reward_function=reward_function),
        max_episode_length=Settings.EVALUATION_EPISODE_LENGTH,
        num_episodes=Settings.NUM_EVALUATION_EPISODES,
        wait_before_start=20)
    metrics = evaluation_stats.get_stat_averages()

    for metric in metrics:
        writer.add_scalar(metric, metrics[metric], iteration)
    logging.info(metrics)
    sumo.change_step_size(Settings.TRAINING_TICK_LENGTH)
Example #7
0
def evaluate_q_model_and_log_metrics(Q,
                                     iteration,
                                     writer,
                                     visits,
                                     reward_function=slotted_reward):
    sumo.change_step_size(control.Settings.EVALUATION_TICK_LENGTH)
    control_function = partial(get_control, Q=Q, visits=visits, epsilon=0.0)
    evaluation_stats = control.evaluate_control(
        control_function=control_function,
        state_function=get_state_tuple,
        custom_stats_function=partial(get_rl_custom_episode_stats,
                                      reward_function=reward_function),
        max_episode_length=control.Settings.EVALUATION_EPISODE_LENGTH,
        num_episodes=control.Settings.NUM_EVALUATION_EPISODES,
        wait_before_start=20)
    metrics = evaluation_stats.get_stat_averages()
    metrics["unvisited_states"] = visits.size - np.count_nonzero(visits)

    for metric in metrics:
        writer.add_scalar(metric, metrics[metric], iteration)
    logging.info(metrics)
    sumo.change_step_size(control.Settings.TRAINING_TICK_LENGTH)