|
@@ -147,33 +147,33 @@ class TemperatureTargetController(TargetController):
|
|
|
|
|
|
return new_lower_bound, new_upper_bound
|
|
|
|
|
|
- async def get_targets(self) -> float:
|
|
|
+ async def get_targets(self) -> Tuple[float, float]:
|
|
|
current_lower_target = self._current_targets['temperatureMin'].loc[self._quarter_time]
|
|
|
current_upper_target = self._current_targets['temperatureMax'].loc[self._quarter_time]
|
|
|
- if np.isnan(current_lower_target):
|
|
|
- current_lower_target = 23.0
|
|
|
- if np.isnan(current_upper_target):
|
|
|
- current_upper_target = 25.0
|
|
|
+ # if np.isnan(current_lower_target):
|
|
|
+ # current_lower_target = 23.0
|
|
|
+ # if np.isnan(current_upper_target):
|
|
|
+ # current_upper_target = 25.0
|
|
|
|
|
|
- return (current_lower_target + current_upper_target) / 2
|
|
|
+ return (current_lower_target + current_upper_target) / 2, current_upper_target - current_lower_target
|
|
|
|
|
|
- async def readjust_current(self, current: float, diff: float) -> float:
|
|
|
- _RANGE = 2
|
|
|
- new_target = current
|
|
|
+ async def readjust_current(self, current_target: float, extent: float, diff: float) -> float:
|
|
|
+ # _RANGE = 2
|
|
|
+ new_target = current_target
|
|
|
if not np.isnan(self._realtime_data):
|
|
|
|
|
|
- if (diff < 0 and self._realtime_data > current + _RANGE / 2
|
|
|
- or diff > 0 and self._realtime_data < current - _RANGE / 2):
|
|
|
- new_target = current
|
|
|
+ if (diff < 0 and self._realtime_data > current_target + extent / 2
|
|
|
+ or diff > 0 and self._realtime_data < current_target - extent / 2):
|
|
|
+ new_target = current_target
|
|
|
else:
|
|
|
new_target = self._realtime_data + diff
|
|
|
|
|
|
return new_target
|
|
|
|
|
|
- async def generate_global(self):
|
|
|
+ async def generate_global(self, extent: float):
|
|
|
_RANGE = 1
|
|
|
- new_targets = self._current_targets['new_targets'].apply(lambda x: [self._cut(x) - _RANGE,
|
|
|
- self._cut(x) + _RANGE])
|
|
|
+ new_targets = self._current_targets['new_targets'].apply(lambda x: [self._cut(x) - extent / 2,
|
|
|
+ self._cut(x) + extent / 2])
|
|
|
time_index = self._current_targets.reset_index()['time']
|
|
|
result = {}
|
|
|
for i in range(len(time_index)):
|
|
@@ -187,13 +187,13 @@ class TemperatureTargetController(TargetController):
|
|
|
lower_bound, upper_bound = await self.init_temporary()
|
|
|
await self.generate_temporary(lower_bound, upper_bound)
|
|
|
else:
|
|
|
- current_target = await self.get_targets()
|
|
|
- new_target = await self.readjust_current(current_target, diff)
|
|
|
+ current_target, extent = await self.get_targets()
|
|
|
+ new_target = await self.readjust_current(current_target, extent, diff)
|
|
|
new_target = self._cut(new_target)
|
|
|
if not self._is_temporary:
|
|
|
self._results.update({'latest_change': new_target})
|
|
|
await self.readjust_global(new_target, self._previous_changes)
|
|
|
- await self.generate_global()
|
|
|
+ await self.generate_global(extent)
|
|
|
else:
|
|
|
await self.generate_temporary(new_target - 1.0, new_target + 1.0)
|
|
|
else:
|