Spaces:
Sleeping
Sleeping
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 |
-
|
| 8 |
-
|
| 9 |
"""
|
| 10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
def __init__(self):
|
| 12 |
pass
|
| 13 |
|
| 14 |
def optimize(self, start, end, mode="driving"):
|
| 15 |
"""
|
| 16 |
-
Returns a mock optimized route
|
| 17 |
-
|
| 18 |
"""
|
| 19 |
-
distance_km = math.dist(start, end)
|
| 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)
|
| 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
|