123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595 |
- <<<<<<< HEAD
- <<<<<<< HEAD
- '''
- 基于单一状态(一次行车、一次静置、一次充电)的指标统计库
- '''
- __author__ = 'lmstack'
- import CONFIGURE.PathSetting as PathSetting
- import sys
- sys.path.append(PathSetting.backend_path)
- import datetime
- import Tools
- import pandas as pd
- import numpy as np
- class IndexStaByOneCycle():
- def __init__(self):
- pass
- def odo_sta(self, odo_array):
- '''
- 一次行车行驶里程统计
- ---------输入参数------------
- odo_array : 一次行车对应的odo数据
- ---------输出参数------------
- 如果gps 可信,则输出本次行车的累积行驶里程;
- 否则,输出None
- '''
- odo_array = odo_array[~pd.isnull(odo_array)]
- if len(odo_array) > 0:
- return np.sum(odo_array)
- else:
- return None
- def capacity_sta(self, cap, soc_array, soh_array):
- '''
- 一个cycle净累积ah统计
- ---------输入参数------------
- cap : 标称容量
- soc_array : 一个cycle对应的soc数据
- soh_array : 一个cycle对应的soh数据
- ---------输出参数------------
- 本次行车的累积ah
- '''
- soc_array = soc_array[~pd.isnull(soc_array)]
- soh_array = soh_array[~pd.isnull(soh_array)]
- if len(soc_array) > 0 and len(soh_array) > 0 :
- return (soc_array[0] - soc_array[-1]) * np.mean(soh_array) * cap / 100.0 / 100.0
- else:
- return None
- def energy_sta(self, cap, soc_array, soh_array, volt_array):
- '''
- 一个cycle净累积能量统计
- ---------输入参数------------
- cap : 标称容量
- soc_array : 一个cycle对应的soc数据
- soh_array : 一个cycle对应的soh数据
- volt_array : 一个cycle对应的volt数据
- ---------输出参数------------
- 本次行车的累积能量
- '''
- soc_array = soc_array[~pd.isnull(soc_array)]
- soh_array = soh_array[~pd.isnull(soh_array)]
- volt_array = volt_array[~pd.isnull(volt_array)]
- if len(soc_array) > 0 and len(soh_array) > 0 and len(volt_array)>0:
- cap = self.capacity_sta(cap, soc_array, soh_array)
- return cap * np.mean(volt_array) / 1000.0
- else:
- return None
- def acc_time_sta(self, time_array):
- '''
- 一个cycle的持续时间
- ---------输入参数------------
- time_array : 一次cycle对应的time数据
- ---------输出参数------------
- 本cycle的持续时间,单位 h
- '''
- time_array = time_array[~pd.isnull(time_array)]
- if len(time_array) > 0:
- return float(abs(time_array[0] - time_array[-1]))/1e9/3600.0
- else:
- return None
- def mean_temp_sta(self, temp_array):
- '''
- 一个cycle的单体平均温度
- ---------输入参数------------
- temp_array : 一个cycle对应的某个单体的temp数据
- ---------输出参数------------
- 本cycle的单体平均温度
- '''
- temp_array = temp_array[~pd.isnull(temp_array)]
- if len(temp_array) > 0:
- return np.mean(temp_array)
- else:
- return None
- def temp_change_rate_sta(self, time_array, temp_array):
- '''
- 一个cycle的单体温度变化率
- ---------输入参数------------
- time_array : 一个cycle对应的time数据
- temp_array : 一个cycle对应的temp数据
- ---------输出参数------------
- 本cycle的单体温度变化率
- '''
- time_array = time_array[~pd.isnull(time_array)]
- temp_array = temp_array[~pd.isnull(temp_array)]
- if len(temp_array) > 0 and len(time_array) > 0:
- return abs(temp_array[0] - temp_array[-1])/\
- (float(abs(time_array[0] - time_array[-1]))/1e9/3600.0)
- else:
- return None
- def dischrg_max_pwr_sta(self, volt_array, crnt_array):
- '''
- 一个cycle的放电功率最大值
- ---------输入参数------------
- volt_array : 一个cycle对应的volt数据
- crnt_array : 一个cycle对应的crnt数据
- ---------输出参数------------
- 本cycle的放电功率最大值
- '''
- volt_array = volt_array[~pd.isnull(volt_array)]
- crnt_array = crnt_array[~pd.isnull(crnt_array)]
- if len(volt_array) > 0 and len(crnt_array) > 0:
- pwr = volt_array * crnt_array / 1000.0
- pwr = pwr[pwr > 0]
- return np.max(pwr)
- else:
- return None
- def chrg_max_pwr_sta(self, volt_array, crnt_array):
- '''
- 一个cycle的充电功率最大值
- ---------输入参数------------
- volt_array : 一个cycle对应的volt数据
- crnt_array : 一个cycle对应的crnt数据
- ---------输出参数------------
- 本cycle的充电功率最大值
- '''
- volt_array = volt_array[~pd.isnull(volt_array)]
- crnt_array = crnt_array[~pd.isnull(crnt_array)]
- if len(volt_array) > 0 and len(crnt_array) > 0:
- pwr = volt_array * crnt_array / 1000.0
- pwr = pwr[pwr < 0]
- return np.max(abs(pwr))
- else:
- return None
- def regen_count_sta(self, crnt_array):
- '''
- 一个行车cycle的regen 行数
- ---------输入参数------------
- crnt_array : 一个行车cycle对应的crnt数据
- ---------输出参数------------
- 本行车cycle的regen行数, 总行数
- '''
- crnt_array = crnt_array[~pd.isnull(crnt_array)]
- if len(crnt_array) > 0:
- return len(crnt_array[crnt_array < -1]), len(crnt_array)
- else:
- return None, None
- def speed_sta(self, sum_odo, acc_time, speed_array):
- '''
- 一个行车cycle的平均速度和最大瞬时速度
- ---------输入参数------------
- sum_odo : 一个行车cycle对应的累积odo数据
- acc_time : 一个行车cycle对应的累积time数据
- speed_array : 一个行车cycle对应的speed数据
- ---------输出参数------------
- 本行车cycle的平均速度和最大速度
- '''
- speed_array = speed_array[~pd.isnull(speed_array)]
- if ~pd.isnull(sum_odo) and ~pd.isnull(acc_time) and len(speed_array) > 0:
- return sum_odo/acc_time, np.max(speed_array)
- else:
- return None, None
- def speed_sta(self, sum_odo, acc_time, speed_array):
- '''
- 一个行车cycle的平均速度和最大瞬时速度
- ---------输入参数------------
- sum_odo : 一个行车cycle对应的累积odo数据
- acc_time : 一个行车cycle对应的累积time数据
- speed_array : 一个行车cycle对应的speed数据
- ---------输出参数------------
- 本行车cycle的平均速度和最大速度
- '''
- speed_array = speed_array[~pd.isnull(speed_array)]
- if ~pd.isnull(sum_odo) and ~pd.isnull(acc_time) and len(speed_array) > 0:
- return sum_odo/acc_time, np.max(speed_array)
- else:
- =======
- '''
- 基于单一状态(一次行车、一次静置、一次充电)的指标统计库
- '''
- __author__ = 'lmstack'
- import CONFIGURE.PathSetting as PathSetting
- import sys
- sys.path.append(PathSetting.backend_path)
- import datetime
- import Tools
- import pandas as pd
- import numpy as np
- class IndexStaByOneCycle():
- def __init__(self):
- pass
- def odo_sta(self, odo_array):
- '''
- 一次行车行驶里程统计
- ---------输入参数------------
- odo_array : 一次行车对应的odo数据
- ---------输出参数------------
- 如果gps 可信,则输出本次行车的累积行驶里程;
- 否则,输出None
- '''
- odo_array = odo_array[~pd.isnull(odo_array)]
- if len(odo_array) > 0:
- return np.sum(odo_array)
- else:
- return None
- def capacity_sta(self, cap, soc_array, soh_array):
- '''
- 一个cycle净累积ah统计
- ---------输入参数------------
- cap : 标称容量
- soc_array : 一个cycle对应的soc数据
- soh_array : 一个cycle对应的soh数据
- ---------输出参数------------
- 本次行车的累积ah
- '''
- soc_array = soc_array[~pd.isnull(soc_array)]
- soh_array = soh_array[~pd.isnull(soh_array)]
- if len(soc_array) > 0 and len(soh_array) > 0 :
- return (soc_array[0] - soc_array[-1]) * np.mean(soh_array) * cap / 100.0 / 100.0
- else:
- return None
- def energy_sta(self, cap, soc_array, soh_array, volt_array):
- '''
- 一个cycle净累积能量统计
- ---------输入参数------------
- cap : 标称容量
- soc_array : 一个cycle对应的soc数据
- soh_array : 一个cycle对应的soh数据
- volt_array : 一个cycle对应的volt数据
- ---------输出参数------------
- 本次行车的累积能量
- '''
- soc_array = soc_array[~pd.isnull(soc_array)]
- soh_array = soh_array[~pd.isnull(soh_array)]
- volt_array = volt_array[~pd.isnull(volt_array)]
- if len(soc_array) > 0 and len(soh_array) > 0 and len(volt_array)>0:
- cap = self.capacity_sta(cap, soc_array, soh_array)
- return cap * np.mean(volt_array) / 1000.0
- else:
- return None
- def acc_time_sta(self, time_array):
- '''
- 一个cycle的持续时间
- ---------输入参数------------
- time_array : 一次cycle对应的time数据
- ---------输出参数------------
- 本cycle的持续时间,单位 h
- '''
- time_array = time_array[~pd.isnull(time_array)]
- if len(time_array) > 0:
- return float(abs(time_array[0] - time_array[-1]))/1e9/3600.0
- else:
- return None
- def mean_temp_sta(self, temp_array):
- '''
- 一个cycle的单体平均温度
- ---------输入参数------------
- temp_array : 一个cycle对应的某个单体的temp数据
- ---------输出参数------------
- 本cycle的单体平均温度
- '''
- temp_array = temp_array[~pd.isnull(temp_array)]
- if len(temp_array) > 0:
- return np.mean(temp_array)
- else:
- return None
- def temp_change_rate_sta(self, time_array, temp_array):
- '''
- 一个cycle的单体温度变化率
- ---------输入参数------------
- time_array : 一个cycle对应的time数据
- temp_array : 一个cycle对应的temp数据
- ---------输出参数------------
- 本cycle的单体温度变化率
- '''
- time_array = time_array[~pd.isnull(time_array)]
- temp_array = temp_array[~pd.isnull(temp_array)]
- if len(temp_array) > 0 and len(time_array) > 0:
- return abs(temp_array[0] - temp_array[-1])/\
- (float(abs(time_array[0] - time_array[-1]))/1e9/3600.0)
- else:
- return None
- def dischrg_max_pwr_sta(self, volt_array, crnt_array):
- '''
- 一个cycle的放电功率最大值
- ---------输入参数------------
- volt_array : 一个cycle对应的volt数据
- crnt_array : 一个cycle对应的crnt数据
- ---------输出参数------------
- 本cycle的放电功率最大值
- '''
- volt_array = volt_array[~pd.isnull(volt_array)]
- crnt_array = crnt_array[~pd.isnull(crnt_array)]
- if len(volt_array) > 0 and len(crnt_array) > 0:
- pwr = volt_array * crnt_array / 1000.0
- pwr = pwr[pwr > 0]
- return np.max(pwr)
- else:
- return None
- def chrg_max_pwr_sta(self, volt_array, crnt_array):
- '''
- 一个cycle的充电功率最大值
- ---------输入参数------------
- volt_array : 一个cycle对应的volt数据
- crnt_array : 一个cycle对应的crnt数据
- ---------输出参数------------
- 本cycle的充电功率最大值
- '''
- volt_array = volt_array[~pd.isnull(volt_array)]
- crnt_array = crnt_array[~pd.isnull(crnt_array)]
- if len(volt_array) > 0 and len(crnt_array) > 0:
- pwr = volt_array * crnt_array / 1000.0
- pwr = pwr[pwr < 0]
- return np.max(abs(pwr))
- else:
- return None
- def regen_count_sta(self, crnt_array):
- '''
- 一个行车cycle的regen 行数
- ---------输入参数------------
- crnt_array : 一个行车cycle对应的crnt数据
- ---------输出参数------------
- 本行车cycle的regen行数, 总行数
- '''
- crnt_array = crnt_array[~pd.isnull(crnt_array)]
- if len(crnt_array) > 0:
- return len(crnt_array[crnt_array < -1]), len(crnt_array)
- else:
- return None, None
- def speed_sta(self, sum_odo, acc_time, speed_array):
- '''
- 一个行车cycle的平均速度和最大瞬时速度
- ---------输入参数------------
- sum_odo : 一个行车cycle对应的累积odo数据
- acc_time : 一个行车cycle对应的累积time数据
- speed_array : 一个行车cycle对应的speed数据
- ---------输出参数------------
- 本行车cycle的平均速度和最大速度
- '''
- speed_array = speed_array[~pd.isnull(speed_array)]
- if ~pd.isnull(sum_odo) and ~pd.isnull(acc_time) and len(speed_array) > 0:
- return sum_odo/acc_time, np.max(speed_array)
- else:
- return None, None
- def speed_sta(self, sum_odo, acc_time, speed_array):
- '''
- 一个行车cycle的平均速度和最大瞬时速度
- ---------输入参数------------
- sum_odo : 一个行车cycle对应的累积odo数据
- acc_time : 一个行车cycle对应的累积time数据
- speed_array : 一个行车cycle对应的speed数据
- ---------输出参数------------
- 本行车cycle的平均速度和最大速度
- '''
- speed_array = speed_array[~pd.isnull(speed_array)]
- if ~pd.isnull(sum_odo) and ~pd.isnull(acc_time) and len(speed_array) > 0:
- return sum_odo/acc_time, np.max(speed_array)
- else:
- >>>>>>> master
- =======
- '''
- 基于单一状态(一次行车、一次静置、一次充电)的指标统计库
- '''
- __author__ = 'lmstack'
- # import CONFIGURE.PathSetting as PathSetting
- # import sys
- # sys.path.append(PathSetting.backend_path)
- # import datetime
- # import Tools
- import pandas as pd
- import numpy as np
- class IndexStaByOneCycle():
- def __init__(self):
- pass
- def odo_sta(self, odo_array):
- '''
- 一次行车行驶里程统计
- ---------输入参数------------
- odo_array : 一次行车对应的odo数据
- ---------输出参数------------
- 如果gps 可信,则输出本次行车的累积行驶里程;
- 否则,输出None
- '''
- odo_array = odo_array[~pd.isnull(odo_array)]
- if len(odo_array) > 0:
- return np.sum(odo_array)
- else:
- return None
- def capacity_sta(self, cap, soc_array, soh_array):
- '''
- 一个cycle净累积ah统计
- ---------输入参数------------
- cap : 标称容量
- soc_array : 一个cycle对应的soc数据
- soh_array : 一个cycle对应的soh数据
- ---------输出参数------------
- 本次行车的累积ah
- '''
- soc_array = soc_array[~pd.isnull(soc_array)]
- soh_array = soh_array[~pd.isnull(soh_array)]
- if len(soc_array) > 0 and len(soh_array) > 0 :
- return (soc_array[0] - soc_array[-1]) * np.mean(soh_array) * cap / 100.0 / 100.0
- else:
- return None
- def energy_sta(self, cap, soc_array, soh_array, volt_array):
- '''
- 一个cycle净累积能量统计
- ---------输入参数------------
- cap : 标称容量
- soc_array : 一个cycle对应的soc数据
- soh_array : 一个cycle对应的soh数据
- volt_array : 一个cycle对应的volt数据
- ---------输出参数------------
- 本次行车的累积能量
- '''
- soc_array = soc_array[~pd.isnull(soc_array)]
- soh_array = soh_array[~pd.isnull(soh_array)]
- volt_array = volt_array[~pd.isnull(volt_array)]
- if len(soc_array) > 0 and len(soh_array) > 0 and len(volt_array)>0:
- cap = self.capacity_sta(cap, soc_array, soh_array)
- return cap * np.mean(volt_array) / 1000.0
- else:
- return None
- def acc_time_sta(self, time_array):
- '''
- 一个cycle的持续时间
- ---------输入参数------------
- time_array : 一次cycle对应的time数据
- ---------输出参数------------
- 本cycle的持续时间,单位 h
- '''
- time_array = time_array[~pd.isnull(time_array)]
- if len(time_array) > 0:
- return float(abs(time_array[0] - time_array[-1]))/1e9/3600.0
- else:
- return None
- def mean_temp_sta(self, temp_array):
- '''
- 一个cycle的单体平均温度
- ---------输入参数------------
- temp_array : 一个cycle对应的某个单体的temp数据
- ---------输出参数------------
- 本cycle的单体平均温度
- '''
- temp_array = temp_array[~pd.isnull(temp_array)]
- if len(temp_array) > 0:
- return np.mean(temp_array)
- else:
- return None
- def temp_change_rate_sta(self, time_array, temp_array):
- '''
- 一个cycle的单体温度变化率
- ---------输入参数------------
- time_array : 一个cycle对应的time数据
- temp_array : 一个cycle对应的temp数据
- ---------输出参数------------
- 本cycle的单体温度变化率
- '''
- time_array = time_array[~pd.isnull(time_array)]
- temp_array = temp_array[~pd.isnull(temp_array)]
- if len(temp_array) > 0 and len(time_array) > 0:
- return abs(temp_array[0] - temp_array[-1])/\
- (float(abs(time_array[0] - time_array[-1]))/1e9/3600.0)
- else:
- return None
- def dischrg_max_pwr_sta(self, volt_array, crnt_array):
- '''
- 一个cycle的放电功率最大值
- ---------输入参数------------
- volt_array : 一个cycle对应的volt数据
- crnt_array : 一个cycle对应的crnt数据
- ---------输出参数------------
- 本cycle的放电功率最大值
- '''
- volt_array = volt_array[~pd.isnull(volt_array)]
- crnt_array = crnt_array[~pd.isnull(crnt_array)]
- if len(volt_array) > 0 and len(crnt_array) > 0:
- pwr = volt_array * crnt_array / 1000.0
- pwr = pwr[pwr > 0]
- return np.max(pwr)
- else:
- return None
- def chrg_max_pwr_sta(self, volt_array, crnt_array):
- '''
- 一个cycle的充电功率最大值
- ---------输入参数------------
- volt_array : 一个cycle对应的volt数据
- crnt_array : 一个cycle对应的crnt数据
- ---------输出参数------------
- 本cycle的充电功率最大值
- '''
- volt_array = volt_array[~pd.isnull(volt_array)]
- crnt_array = crnt_array[~pd.isnull(crnt_array)]
- if len(volt_array) > 0 and len(crnt_array) > 0:
- pwr = volt_array * crnt_array / 1000.0
- pwr = pwr[pwr < 0]
- return np.max(abs(pwr))
- else:
- return None
- def regen_count_sta(self, crnt_array):
- '''
- 一个行车cycle的regen 行数
- ---------输入参数------------
- crnt_array : 一个行车cycle对应的crnt数据
- ---------输出参数------------
- 本行车cycle的regen行数, 总行数
- '''
- crnt_array = crnt_array[~pd.isnull(crnt_array)]
- if len(crnt_array) > 0:
- return len(crnt_array[crnt_array < -1]), len(crnt_array)
- else:
- return None, None
- def speed_sta(self, sum_odo, acc_time, speed_array):
- '''
- 一个行车cycle的平均速度和最大瞬时速度
- ---------输入参数------------
- sum_odo : 一个行车cycle对应的累积odo数据
- acc_time : 一个行车cycle对应的累积time数据
- speed_array : 一个行车cycle对应的speed数据
- ---------输出参数------------
- 本行车cycle的平均速度和最大速度
- '''
- speed_array = speed_array[~pd.isnull(speed_array)]
- if ~pd.isnull(sum_odo) and ~pd.isnull(acc_time) and len(speed_array) > 0:
- return sum_odo/acc_time, np.max(speed_array)
- else:
- return None, None
- def speed_sta(self, sum_odo, acc_time, speed_array):
- '''
- 一个行车cycle的平均速度和最大瞬时速度
- ---------输入参数------------
- sum_odo : 一个行车cycle对应的累积odo数据
- acc_time : 一个行车cycle对应的累积time数据
- speed_array : 一个行车cycle对应的speed数据
- ---------输出参数------------
- 本行车cycle的平均速度和最大速度
- '''
- speed_array = speed_array[~pd.isnull(speed_array)]
- if ~pd.isnull(sum_odo) and ~pd.isnull(acc_time) and len(speed_array) > 0:
- return sum_odo/acc_time, np.max(speed_array)
- else:
- >>>>>>> 65a87ae16013552e359df047df19f46fc4e6eb08
- return None, None
|