docstr: Make any changes needed when each episode is ended.
  This includes incrementing counters, updating full episode dependent values, updating logs, etc.
  This function is called right after each episode is ended.
  
  :return: None
docstr_tok: ["Make","any","changes","needed","when","each","episode","is","ended",".","This","includes","incrementing","counters",",","updating","full","episode","dependent","values",",","updating","logs",",","etc",".","This","function","is","called","right","after","each","episode","is","ended",".",":","return",":","None"]
code: def handle_episode_ended(self) -> None:
      """
      Make any changes needed when each episode is ended.
      This includes incrementing counters, updating full episode dependent values, updating logs, etc.
      This function is called right after each episode is ended.
  
      :return: None
      """
      raise NotImplementedError("")
  
imports: from typing import Union, List, Dict
  import numpy
  from rl_coach.core_types import EnvResponse, ActionInfo, RunPhase, PredictionType, ActionType, Transition
  from rl_coach.saver import SaverCollection
label_desc: Use image node_id 14 for calling the AgentInterface obj's underlying member method code with example usage: obj.handle_episode_ended() without return types