34 lines
1.0 KiB
Python
34 lines
1.0 KiB
Python
from algorithm import algorithm
|
|
import json
|
|
import ray
|
|
|
|
# @ray.remote
|
|
@ray.remote
|
|
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_
|