from algorithm import algorithm import json import ray # @ray.remote @ray.remote( num_cpus=2, object_store_memory= 1000000) class variance_x(algorithm): def __init__(self): self.config_dict_ = None self.config_ = None self.window_length_ = 10 self.avg_ = 0 self.var_ = 0 def set_config(self, config): self.config_ = config self.config_dict_ = json.loads(self.config_) self.window_length_ = self.config_dict_["WINDOW_LENGTH"] self.init_flag_ = False def config(self): return self.config_ def eval(self, value): if self.init_flag_ == False: self.init_flag_ = True self.avg_ = value self.var_ = 0 else: present_avg_ = self.avg_ * (self.window_length_ - 1)/self.window_length_ + value / self.window_length_ self.var_ = (self.window_length_ - 1)/self.window_length_ * self.var_ + (self.window_length_ - 1) / (self.window_length_ ** 2) * ((value - self.avg_)**2) self.avg_ = present_avg_ return self.var_