def update(self, user: User, video: Video, watch_time: float, gamma: float = 0.05): """ Updates the environment :param user: user :param video: video recommended to the user :param watch_time: effective watch time of the video by the user :param gamma: evolution parameter (learning rate) """ # Type-checking if not isinstance(user, User): raise TypeError if not isinstance(video, Video): raise TypeError if not isinstance(watch_time, float): raise TypeError if not isinstance(gamma, float): raise TypeError user.add_to_history(video.video_id, watch_time) # history update if self.evolutive: # if the environment is evolutive, user.evolve(video, watch_time, gamma) # the user tastes can evolve