52 lines
1.7 KiB
Python
52 lines
1.7 KiB
Python
from algorithm import algorithm
|
|
import json
|
|
import ray
|
|
|
|
@ray.remote
|
|
class variance(algorithm):
|
|
def __init__(self):
|
|
self.config_dict_ = None
|
|
self.config_ = None
|
|
self.variance_number_ = 10
|
|
self.present_number_ = 0
|
|
self.window_1_ = []
|
|
self.sum = 0
|
|
self.average = 0
|
|
self.variance = 0
|
|
self.variance_sum = 0
|
|
|
|
def set_config(self, config):
|
|
self.config_ = config
|
|
self.config_dict_ = json.loads(self.config_)
|
|
self.variance_number_ = self.config_dict_["VARIANCE_NUMBER"]
|
|
|
|
def config(self):
|
|
return self.config_
|
|
|
|
def eval(self, value):
|
|
self.present_number_ = len(self.window_1_)
|
|
if self.present_number_ < self.variance_number_:
|
|
self.window_1_.append(value)
|
|
self.sum = 0
|
|
for i in self.window_1_:
|
|
self.sum = self.sum + i
|
|
self.average = self.sum / len(self.window_1_)
|
|
self.variance_sum = 0
|
|
for i in self.window_1_:
|
|
self.variance_sum = self.variance_sum + (i-self.average)*(i-self.average)
|
|
self.variance = self.variance_sum / len(self.window_1_)
|
|
return self.variance
|
|
else:
|
|
self.sum = 0
|
|
del self.window_1_[0]
|
|
self.window_1_.append(value)
|
|
for i in self.window_1_:
|
|
self.sum = self.sum + i
|
|
self.average = self.sum / len(self.window_1_)
|
|
self.variance_sum = 0
|
|
for i in self.window_1_:
|
|
self.variance_sum = self.variance_sum + (i-self.average)*(i-self.average)
|
|
self.variance = self.variance_sum / len(self.window_1_)
|
|
return self.variance
|
|
|