acmpesuecc / acmpesuecc/traffic_simulation

Bug in propagation algorithm for updates

Abierto
#10 49 comentarios 0 reacciones 0 asignados Ver en GitHub
BOUNTY:150 hacknight-2025 hacktoberfest
Lenguaje dominante
Python
Estrellas
1
Forks
13
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

# Bounty Points: 150

## Branch Instructions
push changes to a new *'propogation'* branch

***

**Explanation:**

* **`num_of_cars()`** function incorrectly calculates car redistribution
* Only counts incoming cars from **one edge** instead of all incoming edges
* **Logic error:** uses `cars_initial[node]` when should use **source node count**
* Distribution ratios applied incorrectly
* Causes **negative car counts** and **simulation errors**

---

### Current buggy code:

```python
def num_of_cars(node):
t = 0
for i in distances:
if i[1] == node:
for j in distribution:
if j == i[0]:
for k in distribution[j]:
if k[0] == node:
t += (cars_initial[node]) * k[1] # BUG: wrong node
t -= (distribution[node][0][1]) * (cars_initial[node])
cars_initial[node] = t
return t
```

### Possible fix/approach:

* For each edge (`source -> target`) where `target == node`:
* Add `cars_initial[source] * distribution[source][target_ratio]`
* Calculate outgoing cars separately
* Formula: **`new_count = current + incoming - outgoing`**
* Ensure **non-negative** car counts
* Fix global state mutation issue

---

### Correct logic (Example):

```python
incoming = sum(cars_initial[src] * ratio
for edge in distances if edge[1] == node
for src, ratio in get_incoming_ratio(edge[0], node))
outgoing = sum(cars_initial[node] * ratio
for dest, ratio in distribution[node] if dest != node)
```

### Maintainer notes:

* **Critical bug** affecting entire simulation accuracy
* Test with simple **2-3 node graphs** first
* Verify **car conservation** (total cars should remain constant)
* Check distribution ratios sum to **1.0**

---

### Resources:

* Traffic flow conservation principles
* Graph theory: flow networks

---

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.