Exemple #1
0
    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