bareethul commited on
Commit
09340cb
·
verified ·
1 Parent(s): 47b8c5a

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -0
app.py ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ !pip install gradio --quiet
2
+ import gradio as gr
3
+
4
+ # Simple simulation model for EV trip energy use
5
+ def estimate_energy(distance_km, elevation_m, avg_speed, temp_c):
6
+ base_kwh_per_km = 0.18 # typical EV consumption
7
+ speed_penalty = 0.001 * (avg_speed - 70) # penalty per km/h above 70
8
+ temp_penalty = 0.002 * abs(temp_c - 20) # penalty per °C deviation
9
+ elevation_penalty = elevation_m * 0.00002 # kWh per meter of climb
10
+
11
+ kwh = distance_km * (base_kwh_per_km + speed_penalty + temp_penalty)
12
+ kwh += elevation_penalty
13
+ return round(max(kwh, 0.1), 2)
14
+
15
+ def range_safe(available_kWh, reserve_kWh, distance_km, elevation_m, avg_speed, temp_c):
16
+ needed_kWh = estimate_energy(distance_km, elevation_m, avg_speed, temp_c)
17
+
18
+ # safety check
19
+ margin = available_kWh - reserve_kWh - needed_kWh
20
+
21
+ if margin >= 5:
22
+ status = "SAFE TO PROCEED"
23
+ confidence = "High confidence"
24
+ bar = "🟩🟩🟩"
25
+ elif margin >= 0:
26
+ status = "MARGINALLY SAFE"
27
+ confidence = "Medium confidence"
28
+ bar = "🟨🟨⬜"
29
+ else:
30
+ status = "CHARGING REQUIRED"
31
+ confidence = "Low confidence"
32
+ bar = "🟥⬜⬜"
33
+
34
+ explanation = (
35
+ f"Trip requires {needed_kWh} kWh. "
36
+ f"You have {available_kWh} kWh available with {reserve_kWh} kWh reserved.\n"
37
+ f"Energy margin: {round(margin,2)} kWh.\n"
38
+ f"Confidence level: {confidence} {bar}"
39
+ )
40
+
41
+ return f"{status}\n\n{explanation}"
42
+
43
+ demo = gr.Interface(
44
+ fn=range_safe,
45
+ inputs=[
46
+ gr.Number(label="Available Battery (kWh)", value=50),
47
+ gr.Number(label="Reserve to Keep (kWh)", value=10),
48
+ gr.Number(label="Distance (km)", value=120),
49
+ gr.Number(label="Elevation Gain (m)", value=300),
50
+ gr.Number(label="Average Speed (km/h)", value=80),
51
+ gr.Number(label="Temperature (°C)", value=15),
52
+ ],
53
+ outputs="text",
54
+ title="Enhanced Range Safe Mode Prototype",
55
+ description="Multi-factor range safety calculator simulating realistic EV behavior.",
56
+ )
57
+
58
+ demo.launch()