Zayeemk commited on
Commit
e7da8f8
·
verified ·
1 Parent(s): ecf132a

Update route_optimizer/green_route_optimizer.py

Browse files
route_optimizer/green_route_optimizer.py CHANGED
@@ -4,24 +4,45 @@ import math
4
 
5
  class GreenRouteOptimizer:
6
  """
7
- A simple placeholder class for route optimization.
8
- In real-world apps, integrate APIs like Google Maps or OpenRouteService for real routes.
9
  """
10
 
 
 
 
 
 
 
 
11
  def __init__(self):
12
  pass
13
 
14
  def optimize(self, start, end, mode="driving"):
15
  """
16
- Returns a mock optimized route result.
17
- Replace this with real API calls if needed.
18
  """
19
- distance_km = math.dist(start, end) # Euclidean distance (approximation)
20
  optimized_route = {
21
  "start": start,
22
  "end": end,
23
  "mode": mode,
24
  "optimized_distance_km": round(distance_km, 2),
25
- "estimated_emission_kg": round(distance_km * 0.21, 3) # example emission factor
26
  }
27
  return optimized_route
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
 
5
  class GreenRouteOptimizer:
6
  """
7
+ Green Route Optimizer class.
8
+ Provides route optimization and recommends the most eco-friendly route.
9
  """
10
 
11
+ # Approximate emission factors (kg CO2 per km)
12
+ EMISSION_FACTORS = {
13
+ "driving": 0.21, # example: car
14
+ "cycling": 0.0, # bicycles produce zero direct emissions
15
+ "walking": 0.0 # walking produces zero direct emissions
16
+ }
17
+
18
  def __init__(self):
19
  pass
20
 
21
  def optimize(self, start, end, mode="driving"):
22
  """
23
+ Returns a mock optimized route for a given transport mode.
24
+ Uses Euclidean distance as a simple approximation.
25
  """
26
+ distance_km = math.dist(start, end)
27
  optimized_route = {
28
  "start": start,
29
  "end": end,
30
  "mode": mode,
31
  "optimized_distance_km": round(distance_km, 2),
32
+ "estimated_emission_kg": round(distance_km * self.EMISSION_FACTORS.get(mode, 0.21), 3)
33
  }
34
  return optimized_route
35
+
36
+ def recommend_green_routes(self, start, end):
37
+ """
38
+ Recommends the greenest route among driving, cycling, and walking.
39
+ Returns a sorted list by estimated emissions.
40
+ """
41
+ routes = []
42
+ for mode in self.EMISSION_FACTORS.keys():
43
+ route = self.optimize(start, end, mode)
44
+ routes.append(route)
45
+
46
+ # Sort routes by estimated emissions (ascending)
47
+ routes_sorted = sorted(routes, key=lambda x: x["estimated_emission_kg"])
48
+ return routes_sorted