Browse Source

set targets's range by previous targets instead of default 2, and create targets/temperature_v2.py

chenhaiyang 4 years ago
parent
commit
47b21d0d81

+ 3 - 3
app/api/routers/targets.py

@@ -3,7 +3,7 @@
 from fastapi import APIRouter, HTTPException, Query
 from loguru import logger
 
-from app.controllers.targets import readjust_all_target
+from app.controllers.targets.targets_v1 import readjust_all_target
 from app.models.domain.targets import TargetReadjustResponse
 from app.utils.date import get_time_str
 
@@ -42,9 +42,9 @@ async def test_readjust_target(
         space_id: str = Query(..., max_length=50, regex='^Sp')
 ):
     feedback = {
-        'a little cold': 1,
+        'a little cold': 0,
         'so cold': 0,
-        'a little hot': 0,
+        'a little hot': 1,
         'so hot': 0,
         'switch on': 0,
     }

+ 0 - 0
app/controllers/targets/__init__.py


+ 18 - 18
app/controllers/targets.py

@@ -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:

+ 7 - 0
app/controllers/targets/temperature_v2.py

@@ -0,0 +1,7 @@
+# -*- coding: utf-8 -*-
+
+from app.controllers.controller import Controller
+
+
+class TemperatureTargetControllerV2(Controller):
+