arrow072 commited on
Commit
55e4de5
·
verified ·
1 Parent(s): 08fff15

Update env.py

Browse files
Files changed (1) hide show
  1. env.py +12 -6
env.py CHANGED
@@ -153,11 +153,11 @@ class TrafficEnv:
153
  "avg_waiting_time": 0.0,
154
  "max_queue_length": 0,
155
  "signal_switch_count": 0,
156
- "congestion_score": 0.0,
157
  "avg_ev_clear_time": 0.0,
158
  "total_ev_cleared": 0,
159
  "total_ev_penalty": 0.0,
160
- "fairness_score": 1.0,
161
  }
162
 
163
  # Track waiting steps for emergency vehicles and phase stability
@@ -247,9 +247,10 @@ class TrafficEnv:
247
  total_wait_sum = sum(self.waiting_times.values())
248
  denom = max(1, self.total_cleared)
249
  self._metrics["avg_waiting_time"] = total_wait_sum / denom
250
- self._metrics["congestion_score"] = (
251
- sum(self.queues.values()) / (self.max_queue * len(LANES))
252
- )
 
253
 
254
  # ── 7. Calculate reward ───────────────────────────────────────
255
  post_total_queue = sum(self.queues.values())
@@ -265,7 +266,12 @@ class TrafficEnv:
265
  # Simple fairness: (1 - variance of wait times / threshold)
266
  wait_vals = list(self.waiting_times.values())
267
  if max(wait_vals) > 0:
268
- self._metrics["fairness_score"] = max(0.0, 1.0 - (np.std(wait_vals) / self.starvation_limit))
 
 
 
 
 
269
 
270
  # ── 9. Termination ────────────────────────────────────────────
271
  done = self.step_count >= self.max_steps
 
153
  "avg_waiting_time": 0.0,
154
  "max_queue_length": 0,
155
  "signal_switch_count": 0,
156
+ "congestion_score": 1e-5,
157
  "avg_ev_clear_time": 0.0,
158
  "total_ev_cleared": 0,
159
  "total_ev_penalty": 0.0,
160
+ "fairness_score": 1.0 - 1e-5,
161
  }
162
 
163
  # Track waiting steps for emergency vehicles and phase stability
 
247
  total_wait_sum = sum(self.waiting_times.values())
248
  denom = max(1, self.total_cleared)
249
  self._metrics["avg_waiting_time"] = total_wait_sum / denom
250
+ self._metrics["congestion_score"] = float(np.clip(
251
+ sum(self.queues.values()) / (self.max_queue * len(LANES)),
252
+ 1e-5, 1.0 - 1e-5
253
+ ))
254
 
255
  # ── 7. Calculate reward ───────────────────────────────────────
256
  post_total_queue = sum(self.queues.values())
 
266
  # Simple fairness: (1 - variance of wait times / threshold)
267
  wait_vals = list(self.waiting_times.values())
268
  if max(wait_vals) > 0:
269
+ self._metrics["fairness_score"] = float(np.clip(
270
+ 1.0 - (np.std(wait_vals) / self.starvation_limit),
271
+ 1e-5, 1.0 - 1e-5
272
+ ))
273
+ else:
274
+ self._metrics["fairness_score"] = 1.0 - 1e-5
275
 
276
  # ── 9. Termination ────────────────────────────────────────────
277
  done = self.step_count >= self.max_steps