增加行为监控指标

This commit is contained in:
2026-04-26 17:42:30 +08:00
parent 5c2df10150
commit 00b26af3ed
3 changed files with 112 additions and 0 deletions

View File

@@ -80,6 +80,9 @@ class Preprocessor:
self.stuck_steps = 0
self.recharge_no_progress_steps = 0
self.fake_charger_steps = 0
self.stuck_count = 0
self.max_stuck_steps = 0
self.recharge_escape_count = 0
self.dirt_cleaned = 0
self.last_dirt_cleaned = 0
@@ -138,6 +141,10 @@ class Preprocessor:
self.nearest_npc_dist = float(self.GRID_SIZE)
self.npc_danger = False
self.npcs = []
self.npc_close_steps = 0
self.npc_danger_steps = 0
self.npc_collision = 0
self.battery_fail = 0
self.local_dirt_ratio = 0.0
self.local_obstacle_ratio = 0.0
@@ -412,6 +419,8 @@ class Preprocessor:
if self.prev_pos is not None and self.cur_pos == self.prev_pos and 0 <= self.last_action < 8:
if self.charge_delta <= 0:
self.stuck_steps += 1
self.stuck_count += 1
self.max_stuck_steps = max(self.max_stuck_steps, self.stuck_steps)
else:
self.stuck_steps = 0
else:
@@ -431,6 +440,17 @@ class Preprocessor:
)
self.recharge_no_progress_steps = self.recharge_no_progress_steps + 1 if no_progress else 0
if self.step_no > 0 and self.nearest_npc_dist <= 3:
self.npc_close_steps += 1
if self.step_no > 0 and self.npc_danger:
self.npc_danger_steps += 1
if self.terminated and not self.truncated:
if self.battery <= 0 or self.remaining_charge <= 0:
self.battery_fail = 1
if self.npc_danger or self.nearest_npc_dist <= 1:
self.npc_collision = 1
def _need_recharge_escape(self):
return self.stuck_steps >= 2 or self.recharge_no_progress_steps >= 5 or self.fake_charger_steps >= 2
@@ -775,6 +795,7 @@ class Preprocessor:
if not ranked:
return list(recharge_action)
self.recharge_escape_count += 1
ranked.sort()
escape = [0] * 8
for _, action in ranked[: min(4, len(ranked))]: