Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| # Simple simulation model for EV trip energy use | |
| def estimate_energy(distance_km, elevation_m, avg_speed, temp_c): | |
| base_kwh_per_km = 0.18 # typical EV consumption | |
| speed_penalty = 0.001 * (avg_speed - 70) # penalty per km/h above 70 | |
| temp_penalty = 0.002 * abs(temp_c - 20) # penalty per Β°C deviation | |
| elevation_penalty = elevation_m * 0.00002 # kWh per meter of climb | |
| kwh = distance_km * (base_kwh_per_km + speed_penalty + temp_penalty) | |
| kwh += elevation_penalty | |
| return round(max(kwh, 0.1), 2) | |
| def range_safe(available_kWh, reserve_kWh, distance_km, elevation_m, avg_speed, temp_c): | |
| needed_kWh = estimate_energy(distance_km, elevation_m, avg_speed, temp_c) | |
| # safety check | |
| margin = available_kWh - reserve_kWh - needed_kWh | |
| if margin >= 5: | |
| status = "SAFE TO PROCEED" | |
| confidence = "High confidence" | |
| bar = "π©π©π©" | |
| elif margin >= 0: | |
| status = "MARGINALLY SAFE" | |
| confidence = "Medium confidence" | |
| bar = "π¨π¨β¬" | |
| else: | |
| status = "CHARGING REQUIRED" | |
| confidence = "Low confidence" | |
| bar = "π₯β¬β¬" | |
| explanation = ( | |
| f"Trip requires {needed_kWh} kWh. " | |
| f"You have {available_kWh} kWh available with {reserve_kWh} kWh reserved.\n" | |
| f"Energy margin: {round(margin,2)} kWh.\n" | |
| f"Confidence level: {confidence} {bar}" | |
| ) | |
| return f"{status}\n\n{explanation}" | |
| demo = gr.Interface( | |
| fn=range_safe, | |
| inputs=[ | |
| gr.Number(label="Available Battery (kWh)", value=50), | |
| gr.Number(label="Reserve to Keep (kWh)", value=10), | |
| gr.Number(label="Distance (km)", value=120), | |
| gr.Number(label="Elevation Gain (m)", value=300), | |
| gr.Number(label="Average Speed (km/h)", value=80), | |
| gr.Number(label="Temperature (Β°C)", value=15), | |
| ], | |
| outputs=gr.Textbox(lines=8, label="Result", interactive=False), | |
| title="Enhanced Range Safe Mode Prototype", | |
| description="Multi-factor range safety calculator simulating realistic EV behavior.", | |
| ) | |
| demo.launch() | |