Risk Assessment¶
Identify and manage risk across your vehicle fleet.
Overview¶
The risk module assesses:
- Asset failure probability - Likelihood of vehicle breakdown
- Contract violation risk - Risk of exceeding operational limits
- Remaining useful life - Time until maintenance required
Risk Scoring Methods¶
| Method | Description | Phase |
|---|---|---|
| Heuristic | Rule-based scoring | MVP |
| Classification | ML-based prediction | Phase 2 |
| Survival Analysis | Time-to-failure estimation | Phase 4 |
How It Works¶
graph LR
A[Fleet State] --> B[Feature Extraction]
B --> C[Risk Model]
C --> D[Risk Scores]
D --> E[Risk Categories]
E --> F[Action Recommendations]
Usage¶
Via Python¶
from src.risk import RiskScorer
from src.utils.config import load_config
# Load configuration
config = load_config()
# Initialize scorer
scorer = RiskScorer(config)
# Calculate risk scores
risk_scores = scorer.calculate(fleet_state)
# Review results
print(risk_scores.head())
# vehicle_id risk_score risk_category
# 0 V001 0.15 low
# 1 V002 0.72 high
# 2 V003 0.45 medium
Heuristic Scoring (MVP)¶
The heuristic scorer uses weighted factors:
risk_score = (
age_weight * normalized_age +
utilization_weight * utilization_rate +
maintenance_weight * days_since_maintenance
)
Configuration:
risk:
model: "heuristic"
heuristic_weights:
age: 0.3
utilization: 0.4
maintenance_history: 0.3
thresholds:
high: 0.7
medium: 0.4
low: 0.0
Risk Factors¶
Vehicle Age¶
graph LR
A[Vehicle Age] --> B{Age Category}
B -->|< 1 year| C[Low Risk]
B -->|1-3 years| D[Medium Risk]
B -->|> 3 years| E[High Risk]
Utilization Rate¶
| Utilization | Risk Impact |
|---|---|
| < 50% | Low - underused |
| 50-80% | Normal |
| > 80% | High - overused |
Maintenance History¶
| Days Since Maintenance | Risk Level |
|---|---|
| < 7 days | Low |
| 7-21 days | Medium |
| > 21 days | High |
Output Format¶
Risk Scores DataFrame¶
pd.DataFrame({
"vehicle_id": ["V001", "V002", "V003"],
"risk_score": [0.15, 0.72, 0.45],
"risk_category": ["low", "high", "medium"],
"age_days": [180, 900, 450],
"utilization_rate": [0.65, 0.92, 0.78],
"days_since_maintenance": [5, 28, 14]
})
Risk Distribution¶
pie title Fleet Risk Distribution
"Low Risk" : 60
"Medium Risk" : 25
"High Risk" : 15
Integration with Optimization¶
Risk scores can be integrated into optimization:
# Add risk penalties to optimization
optimizer = CascadingOptimizer(config)
result = optimizer.optimize(
demand_forecast=forecasts,
fleet_state=fleet_state,
network_costs=network_costs,
constraints=constraints,
risk_scores=risk_scores # Include risk
)
Risk integration options:
- Soft constraint: Penalize high-risk vehicle usage
- Hard constraint: Exclude high-risk vehicles
- Cost adjustment: Increase cost for risky assignments
Recommended Actions¶
| Risk Level | Action |
|---|---|
| High | Schedule immediate maintenance |
| Medium | Monitor closely, plan maintenance |
| Low | Normal operation |
Monitoring Dashboard¶
Track risk metrics over time:
| Metric | Description | Target |
|---|---|---|
| Avg Risk Score | Fleet average | < 0.4 |
| High Risk % | Vehicles at high risk | < 10% |
| Risk Trend | Score change over time | Decreasing |
Best Practices¶
Regular Assessment
- Run risk scoring daily
- Update fleet state in real-time
- Track risk trends over time
Threshold Tuning
- Start with default thresholds
- Adjust based on maintenance data
- Validate against actual failures
Data Quality
- Ensure accurate vehicle age data
- Track actual utilization
- Record all maintenance events
Next Steps¶
- Optimization Guide - Use risk in optimization
- Results Guide - Interpret risk outputs
- API Reference - Risk endpoint details