Compare commits

..

14 Commits

Author SHA1 Message Date
d65c262d1e 写了一个白噪声干扰算法的实际应用案例(指读取文件然后随机选列最后在规定位置输出) 2022-08-25 16:35:16 +08:00
24f84a392e Changes:已解决ray进程无法关闭问题,观察资源管理器显示是有效的。 2022-06-06 17:13:40 +08:00
638bfb3156 Changes:测试ray模块占用资源设置中 2022-06-02 10:38:14 +08:00
ecb44f84f4 Changes:修正版迭代方差计算,在自己证明了csdn上那个例子后觉得可以用,不过细节处理有微调 2022-05-31 07:08:03 +08:00
61dcd34d09 Changes:修正版迭代方差计算,消除了无限递增的问题,但是具体计算公式需要后期再确认 2022-05-30 16:42:42 +08:00
cbf24656f9 Changes:迭代方差计算 2022-05-27 16:44:49 +08:00
8c3d752e13 Changes:方差计算代码与测试 2022-05-25 16:46:34 +08:00
48334d9381 Changes:方差计算 2022-05-24 16:58:52 +08:00
ffbccc94b9 Changes:递归均值计算以及测试代码完成 2022-05-24 16:30:29 +08:00
20bcd73cac Changes:完整窗口均值计算以及对应测试代码完成 2022-05-23 09:39:54 +08:00
79bc30ea79 Changes:小于窗口数的增加逻辑写完 2022-05-22 11:14:36 +08:00
8c1fc2af7e Changes:小于窗口数的增加逻辑写完 2022-05-19 17:55:51 +08:00
bc6951ac0f Changes:增加了自动生成修改数据变csv的格式 2022-05-19 17:26:32 +08:00
dbd5240a1a Changes:增加了自动生成修改数据变csv的格式 2022-05-17 16:50:49 +08:00
19 changed files with 375 additions and 18 deletions

2
.idea/misc.xml generated
View File

@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (python_vitual_3.85)" project-jdk-type="Python SDK" />
</project>

View File

@@ -2,7 +2,7 @@
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="Python 3.8 (python_vitual_3.85)" jdkType="Python SDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PyDocumentationSettings">

41
average.py Normal file
View File

@@ -0,0 +1,41 @@
from algorithm import algorithm
import json
import ray
@ray.remote
class average(algorithm):
def __init__(self):
self.config_dict_ = None
self.config_ = None
self.average_number_ = 10
self.present_number_ = 0
self.window_1_ = []
self.sum = 0
self.average = 0
def set_config(self, config):
self.config_ = config
self.config_dict_ = json.loads(self.config_)
self.average_number_ = self.config_dict_["AVERAGE_NUMBER"]
def config(self):
return self.config_
def eval(self, value):
self.present_number_ = len(self.window_1_)
if self.present_number_ < self.average_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_)
return self.average
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_)
return self.average

10
average_func_test.py Normal file
View File

@@ -0,0 +1,10 @@
from algorithm import algorithm
import json
import ray
import numpy as np
a = np.zeros(shape=(5,2))
b = []
print(a)
print(type(b))
print(len(b))

31
average_test_csv.py Normal file
View File

@@ -0,0 +1,31 @@
import pandas as pd
from average import average
import ray
ray.init()
ray.RAY_DISABLE_MEMORY_MONITOR=1
filepath = "D:/python_project_data/1.csv"
origin_data = pd.read_csv(filepath)
row_len = origin_data.shape[0]
cow_len = origin_data.shape[1]
average_data = origin_data
algorithm_average = average.remote()
cow_name = "G1.TTXD1_3"
contrast_data = pd.DataFrame()
contrast_data[cow_name+'_origin'] = origin_data[cow_name]
algorithm_average.set_config.remote('{"AVERAGE_NUMBER": 5 }')
# algorithm_step.set_config('{"CYCLE_TIME_BASE": 5 }')
for i in range(0,row_len):
futures=algorithm_average.eval.remote(origin_data.loc[i,cow_name])
average_data.loc[i, cow_name]=ray.get(futures)
print(average_data.loc[:, cow_name])
contrast_data[cow_name+'_average'] = average_data[cow_name]
# average_data.to_csv("D:/python_project_data/1_disturb.csv", index=False)
contrast_data.to_csv("D:/python_project_data/average_data.csv", index=False)
# 以下均为测试性能用
# print(algorithm_step.config_)

29
average_x.py Normal file
View File

@@ -0,0 +1,29 @@
from algorithm import algorithm
import json
import ray
@ray.remote
class average_x(algorithm):
def __init__(self):
self.config_dict_ = None
self.config_ = None
self.average_number_ = 10
self.present_number_ = 0
self.avg_ = 0
def set_config(self, config):
self.config_ = config
self.config_dict_ = json.loads(self.config_)
self.average_number_ = self.config_dict_["AVERAGE_NUMBER"]
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
else:
self.avg_ = self.avg_ * (self.average_number_ - 1)/self.average_number_ + value / self.average_number_
return self.avg_

31
average_x_test_csv.py Normal file
View File

@@ -0,0 +1,31 @@
import pandas as pd
from average_x import average_x
import ray
ray.init()
ray.RAY_DISABLE_MEMORY_MONITOR=1
filepath = "D:/python_project_data/1.csv"
origin_data = pd.read_csv(filepath)
row_len = origin_data.shape[0]
cow_len = origin_data.shape[1]
average_data = origin_data
algorithm_average = average_x.remote()
cow_name = "G1.TTXD1_3"
contrast_data = pd.DataFrame()
contrast_data[cow_name+'_origin'] = origin_data[cow_name]
algorithm_average.set_config.remote('{"AVERAGE_NUMBER": 5 }')
# algorithm_step.set_config('{"CYCLE_TIME_BASE": 5 }')
for i in range(0,row_len):
futures=algorithm_average.eval.remote(origin_data.loc[i,cow_name])
average_data.loc[i, cow_name]=ray.get(futures)
print(average_data.loc[:, cow_name])
contrast_data[cow_name+'_average_x'] = average_data[cow_name]
# average_data.to_csv("D:/python_project_data/1_disturb.csv", index=False)
contrast_data.to_csv("D:/python_project_data/average_x_data.csv", index=False)
# 以下均为测试性能用
# print(algorithm_step.config_)

View File

@@ -1,8 +1,9 @@
from algorithm import algorithm
import json
import math
import ray
@ray.remote
class cycle(algorithm):
def __init__(self):
self.config_dict_ = None

View File

@@ -1,25 +1,29 @@
import pandas as pd
from cycle import cycle
import ray
ray.init()
filepath = "D:/python_project_data/1.csv"
origin_data = pd.read_csv(filepath)
row_len = origin_data.shape[0]
cow_len = origin_data.shape[1]
disturb_data = origin_data
algorithm_step = cycle()
algorithm_step = cycle.remote()
cow_name = "G1.TTXD1_3"
contrast_data = pd.DataFrame()
contrast_data[cow_name+'_origin'] = origin_data[cow_name]
algorithm_step.set_config('{"CYCLE_AMPLITUDE_BASE": 200 , "CYCLE_TIME_BASE": 5 ,"CYCLE_START_ANGLE_BASE": 3.14}')
algorithm_step.set_config.remote('{"CYCLE_AMPLITUDE_BASE": 200 , "CYCLE_TIME_BASE": 5 ,"CYCLE_START_ANGLE_BASE": 3.14}')
# algorithm_step.set_config('{"CYCLE_TIME_BASE": 5 }')
for i in range(0,row_len):
disturb_data.loc[i,cow_name]=algorithm_step.eval(origin_data.loc[i,cow_name],i)
print(disturb_data)
futures=algorithm_step.eval.remote(origin_data.loc[i,cow_name],i)
disturb_data.loc[i,cow_name]=ray.get(futures)
print(disturb_data.loc[:,cow_name])
contrast_data[cow_name+'_disturb'] = disturb_data[cow_name]
disturb_data.to_csv("D:/python_project_data/1_disturb.csv", index=False)
contrast_data.to_csv("D:/python_project_data/contrast_data.csv", index=False)
# 以下均为测试性能用
print(algorithm_step.config_)
# print(algorithm_step.config_)

40
disturb_data_to_csv.py Normal file
View File

@@ -0,0 +1,40 @@
import pandas as pd
import random
import numpy
from white_noise import white_noise
import ray
ray.init()
filepath = "E:/Data_sum/ttxd200.csv"
origin_data = pd.read_csv(filepath)
row_len = origin_data.shape[0]
cow_len = origin_data.shape[1]
columns_index=origin_data.columns
columns_list=columns_index.tolist()
disturb_data = origin_data
real_origin_data = origin_data
algorithm_white_noise = white_noise.remote()
algorithm_white_noise.set_config.remote('{"WHITE_NOISE_STANDARD_DEVIATION_BASE": 30}')
#cow_name = "ttxd_12_1"
contrast_data = pd.DataFrame()
for i in range(0,row_len-50,10):
col_number = random.randint(0,cow_len)
cow_name = columns_list[col_number]
for j in range(i,i+50):
futures = algorithm_white_noise.eval.remote(origin_data.loc[j, cow_name])
disturb_data.loc[i, cow_name] = ray.get(futures)
contrast_data[cow_name+'_disturb'+str(i)] = disturb_data[cow_name]
disturb_data = real_origin_data
origin_data = real_origin_data
# print(columns_list)
contrast_data.to_csv("E:/Data_sum/ttxd200_disturb.csv", index=False)
contrast_data_only = contrast_data.values
# contrast_data_only.to_csv("E:/Data_sum/ttxd200_disturb_data.csv", index=False)
print(contrast_data_only)
# pd.DataFrame(contrast_data_only).to_csv("E:/Data_sum/ttxd200_disturb_data.csv", index=False)
numpy.savetxt("E:/Data_sum/ttxd200_disturb_data.csv", contrast_data_only, delimiter=",")

View File

@@ -1,7 +1,8 @@
from algorithm import algorithm
import json
import ray
@ray.remote
class excursion(algorithm):
def __init__(self):
self.config_dict_ = None

18
ray_example.py Normal file
View File

@@ -0,0 +1,18 @@
import ray
ray.init()
@ray.remote
class Counter(object):
def __init__(self):
self.n = 0
def increment(self):
self.n += 1
def read(self):
return self.n
counters = [Counter.remote() for i in range(4)]
[c.increment.remote() for c in counters]
futures = [c.read.remote() for c in counters]
print(ray.get(futures))

View File

@@ -1,7 +1,8 @@
from algorithm import algorithm
import json
import ray
@ray.remote
class step(algorithm):
def __init__(self):
self.config_dict_ = None

View File

@@ -1,14 +1,17 @@
import pandas as pd
from step import step
import ray
ray.init()
filepath = "D:/python_project/TurbineExhaustTemperatureTheromcouple-FourWorkingCondition.xlsx"
origin_data = pd.read_excel(filepath,sheet_name='s4_ttxd')
filepath = "D:/python_project_data/1.csv"
origin_data = pd.read_csv(filepath)
row_len = origin_data.shape[0]
cow_len = origin_data.shape[1]
disturb_data = origin_data
algorithm_step = step()
cow_name = "ttxd_12_1"
algorithm_step.set_config('{"STEP_AMPLITUDE_BASE": 1.3}')
algorithm_step = step.remote()
cow_name = "G1.TTXD1_3"
algorithm_step.set_config.remote('{"STEP_AMPLITUDE_BASE": 1.3}')
for i in range(0,row_len):
disturb_data.loc[i,cow_name]=algorithm_step.eval(origin_data.loc[i,cow_name])
print(disturb_data)
futures=algorithm_step.eval.remote(origin_data.loc[i,cow_name])
disturb_data.loc[i, cow_name] = ray.get(futures)
print(disturb_data.loc[:,cow_name])

51
variance.py Normal file
View File

@@ -0,0 +1,51 @@
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

31
variance_test_csv.py Normal file
View File

@@ -0,0 +1,31 @@
import pandas as pd
from variance import variance
import ray
ray.init()
ray.RAY_DISABLE_MEMORY_MONITOR=1
filepath = "D:/python_project_data/1.csv"
origin_data = pd.read_csv(filepath)
row_len = origin_data.shape[0]
cow_len = origin_data.shape[1]
variance_data = origin_data
algorithm_variance = variance.remote()
cow_name = "G1.TTXD1_3"
contrast_data = pd.DataFrame()
contrast_data[cow_name+'_origin'] = origin_data[cow_name]
algorithm_variance.set_config.remote('{"VARIANCE_NUMBER": 5 }')
# algorithm_step.set_config('{"CYCLE_TIME_BASE": 5 }')
for i in range(0,row_len):
futures=algorithm_variance.eval.remote(origin_data.loc[i,cow_name])
variance_data.loc[i, cow_name]=ray.get(futures)
print(variance_data.loc[:, cow_name])
contrast_data[cow_name+'_variance'] = variance_data[cow_name]
# average_data.to_csv("D:/python_project_data/1_disturb.csv", index=False)
contrast_data.to_csv("D:/python_project_data/variance_data.csv", index=False)
# 以下均为测试性能用
# print(algorithm_step.config_)

33
variance_x.py Normal file
View File

@@ -0,0 +1,33 @@
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_

31
variance_x_test_csv.py Normal file
View File

@@ -0,0 +1,31 @@
import pandas as pd
from variance_x import variance_x
import ray
ray.init()
RAY_DISABLE_MEMORY_MONITOR=1
filepath = "D:/python_project_data/1.csv"
origin_data = pd.read_csv(filepath)
row_len = origin_data.shape[0]
cow_len = origin_data.shape[1]
variance_data = origin_data
algorithm_variance_x = variance_x.remote()
cow_name = "G1.TTXD1_3"
contrast_data = pd.DataFrame()
contrast_data[cow_name+'_origin'] = origin_data[cow_name]
algorithm_variance_x.set_config.remote('{"WINDOW_LENGTH": 5 }')
# algorithm_step.set_config('{"CYCLE_TIME_BASE": 5 }')
for i in range(0,row_len):
futures=algorithm_variance_x.eval.remote(origin_data.loc[i,cow_name])
variance_data.loc[i, cow_name]=ray.get(futures)
print(variance_data.loc[:, cow_name])
contrast_data[cow_name+'_variance_x'] = variance_data[cow_name]
# average_data.to_csv("D:/python_project_data/1_disturb.csv", index=False)
contrast_data.to_csv("D:/python_project_data/variance_data_x.csv", index=False)
ray.shutdown()
# 以下均为测试性能用
# print(algorithm_step.config_)

View File

@@ -2,8 +2,9 @@ from random import random
import numpy as np
from algorithm import algorithm
import json
import ray
@ray.remote
class white_noise(algorithm):
def __init__(self):
self.config_dict_ = None