An intelligent ride-hailing optimization platform with predictive surge pricing and real-time ETA forecasting
پلتفرم بهینهسازی هوشمند درخواست خودرو با قیمتگذاری پویا پیشبینیشده و پیشبینی ETA زنده
# Clone the repository
git clone https://github.com/yourusername/FlowCast.git
cd FlowCast
# Set up virtual environment
python -m venv venv
.\venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/Mac
# Install dependencies
pip install -r requirements.txt
# Prepare data
python -m src.data.preprocess
python -m src.data.zones
python -m src.features.demand_features
python -m src.models.eta_baseline
# Run the API
uvicorn src.api.app:app --reloadOpen http://127.0.0.1:8000 in your browser! 🚀
# کلون کردن مخزن
git clone https://github.com/yourusername/FlowCast.git
cd FlowCast
# راهاندازی محیط مجازی
python -m venv venv
.\venv\Scripts\activate # ویندوز
# source venv/bin/activate # لینوکس/مک
# نصب وابستگیها
pip install -r requirements.txt
# آمادهسازی دادهها
python -m src.data.preprocess
python -m src.data.zones
python -m src.features.demand_features
python -m src.models.eta_baseline
# اجرای API
uvicorn src.api.app:app --reloadآدرس http://127.0.0.1:8000 را در مرورگر خود باز کنید! 🚀
FlowCast is an advanced Surge Pricing & ETA Optimization Engine designed for ride-hailing platforms. The primary goal is to optimize surge pricing strategies, improve ETA prediction accuracy, and enhance operational efficiency through predictive demand-supply balancing and real-time API services for ETA and surge pricing optimization.
The solution provides:
- Predictive Demand Forecasting: Anticipates future demand-supply imbalances using historical trip data and machine learning models
- Real-Time ETA Prediction: Delivers accurate Estimated Time of Arrival using travel time, distance, and zone-specific load factors
- Dynamic Pricing Optimization: Balances multiple objectives including ETA targets, trip completion rates, driver earnings, and platform revenue
- Real-Time Marketplace Dashboard: Visualizes live data through heatmaps, KPIs, and interactive pricing optimization controls
Technologies Used:
- Backend: FastAPI (Python) for RESTful API services
- Frontend: React.js for interactive dashboard and real-time visualizations
- Data Processing: Python, Pandas, GeoPandas for geospatial analysis
- Routing & Mapping: OSMNX, NetworkX for graph-based routing and map analysis
- Machine Learning: Scikit-learn for demand forecasting and ETA prediction models
- Geographic Data: OpenStreetMap (OSM) PBF files and shapefiles for Tehran
These technologies integrate seamlessly to create an end-to-end solution from data ingestion and preprocessing to model training, API deployment, and real-time dashboard visualization.
graph TB
A[NYC Taxi Data] --> B[Data Preprocessing]
C[OSM Data] --> B
D[Weather API] --> B
B --> E[Feature Engineering]
E --> F[Demand Forecasting Model]
E --> G[ETA Prediction Model]
F --> H[Pricing Policy Engine]
G --> H
H --> I[FastAPI Backend]
I --> J[React Dashboard]
I --> K[Real-time API]
J --> L[Heatmaps & KPIs]
K --> M[Quote Service]
H --> N[Policy Simulation]
N --> O[KPI Comparison]
| Policy | Type | Surge Multiplier | Volatility | Best For |
|---|---|---|---|---|
| Base | Fixed | 1.0x | None | Baseline comparison |
| Smart Surge v1 | Reactive | 1.0x - 2.5x | High | Peak hour response |
| Predictive Surge v2 | Anticipatory | 1.0x - 2.8x | Low | Revenue optimization |
FlowCast یک موتور بهینهسازی قیمتگذاری پویا و تخمین زمان رسیدن پیشرفته برای پلتفرمهای درخواست خودرو است. هدف اصلی این پروژه، بهینهسازی استراتژیهای قیمتگذاری پویا، بهبود دقت پیشبینی ETA و افزایش بهرهوری عملیاتی از طریق تعادل پیشبینیشده عرضه و تقاضا و سرویسهای API زنده برای بهینهسازی ETA و قیمتگذاری پویا است.
این راهکار شامل موارد زیر است:
- پیشبینی تقاضا: پیشبینی عدم تعادل عرضه و تقاضا در آینده با استفاده از دادههای تاریخی سفر و مدلهای یادگیری ماشین
- تخمین زمان رسیدن زنده: ارائه ETA دقیق با استفاده از زمان سفر، مسافت و عوامل بار ترافیکی منطقهای
- بهینهسازی قیمتگذاری پویا: ایجاد تعادل بین اهداف مختلف از جمله اهداف ETA، نرخ تکمیل سفر، درآمد رانندگان و درآمد پلتفرم
- داشبورد زنده بازار: بصریسازی دادههای زنده از طریق نقشههای حرارتی، شاخصهای کلیدی عملکرد و کنترلهای تعاملی بهینهسازی قیمت
تکنولوژیهای استفاده شده:
- بکاند: FastAPI (Python) برای سرویسهای RESTful API
- فرانتاند: React.js برای داشبورد تعاملی و بصریسازیهای زنده
- پردازش داده: Python، Pandas، GeoPandas برای تحلیل جغرافیایی
- مسیریابی و نقشه: OSMNX، NetworkX برای مسیریابی مبتنی بر گراف و تحلیل نقشه
- یادگیری ماشین: Scikit-learn برای مدلهای پیشبینی تقاضا و ETA
- دادههای جغرافیایی: فایلهای PBF و shapefileهای OpenStreetMap برای تهران
این تکنولوژیها به صورت یکپارچه برای ایجاد یک راهکار end-to-end از دریافت و پیشپردازش داده تا آموزش مدل، استقرار API و بصریسازی داشبورد زنده یکپارچه شدهاند.
graph TB
A[داده تاکسی NYC] --> B[پیشپردازش داده]
C[داده OSM] --> B
D[API آب و هوا] --> B
B --> E[مهندسی ویژگی]
E --> F[مدل پیشبینی تقاضا]
E --> G[مدل پیشبینی ETA]
F --> H[موتور سیاست قیمت]
G --> H
H --> I[بکاند FastAPI]
I --> J[داشبورد React]
I --> K[API زنده]
J --> L[نقشه حرارتی و KPI]
K --> M[سرویس قیمت]
H --> N[شبیهسازی سیاست]
N --> O[مقایسه KPI]
| سیاست | نوع | ضریب Surge | نوسان | بهترین برای |
|---|---|---|---|---|
| Base | ثابت | 1.0x | هیچ | مقایسه خط پایه |
| Smart Surge v1 | واکنشی | 1.0x - 2.5x | بالا | پاسخ به ساعات اوج |
| Predictive Surge v2 | پیشفعال | 1.0x - 2.8x | پایین | بهینهسازی درآمد |
-
NYC Taxi Dataset (2024-01 → 2024-04): Used for building demand forecasting models, understanding fare baselines, and establishing ETA relationships based on historical trip data. The dataset includes trip records with pickup/dropoff locations, timestamps, distances, durations, and fare information.
-
OpenStreetMap (OSM) Data: Used for geographic analysis, map-based routing, and creating a Tehran-based road network graph. Data includes OSM PBF files and shapefiles for Tehran's road network, enabling accurate routing and distance calculations.
-
Uber Movement Speed/Traffic Data (optional): Used to adjust ETA predictions based on real-time and historical traffic conditions, improving accuracy during peak hours and congestion periods.
-
Weather API: Integrated to understand causal effects of weather conditions on demand variation, helping the model account for weather-related demand spikes or drops.
-
مجموعه داده تاکسیهای نیویورک (2024-01 → 2024-04): برای ساخت مدلهای پیشبینی تقاضا، درک خطوط پایه کرایه و ایجاد روابط ETA بر اساس دادههای تاریخی سفر استفاده شده است. این مجموعه داده شامل رکوردهای سفر با مکانهای سوار و پیادهشدن، برچسبهای زمانی، مسافتها، مدت زمانها و اطلاعات کرایه است.
-
دادههای OpenStreetMap (OSM): برای تحلیل جغرافیایی، مسیریابی مبتنی بر نقشه و ایجاد گراف شبکه جادهای تهران استفاده شده است. دادهها شامل فایلهای PBF و shapefileهای OSM برای شبکه جادهای تهران است که امکان مسیریابی دقیق و محاسبه مسافت را فراهم میکند.
-
دادههای سرعت/ترافیک Uber Movement (اختیاری): برای تنظیم پیشبینیهای ETA بر اساس شرایط ترافیکی زنده و تاریخی استفاده میشود و دقت را در ساعات اوج و دورههای ترافیک بهبود میبخشد.
-
API آب و هوا: برای درک تأثیرات علّی شرایط آب و هوایی بر تغییرات تقاضا یکپارچه شده است و به مدل کمک میکند تا افزایش یا کاهش تقاضای مرتبط با آب و هوا را در نظر بگیرد.
┌─────────────────────────────────────────────────────────────┐
│ Performance Improvements │
├─────────────────────────────────────────────────────────────┤
│ ETA Accuracy: ████████████░░░░░░░░ +20% │
│ Demand Forecast: ████████████████░░░░ ±15% error │
│ Completion Rate: ██████████░░░░░░░░░░ +5-15% │
│ Revenue Efficiency: ██████████████░░░░░░ +10-25% │
│ Price Volatility: ████████░░░░░░░░░░░░ -30-40% │
└─────────────────────────────────────────────────────────────┘
ETA Prediction:
- ✅ Achieved 20%+ improvement in ETA accuracy over baseline using distance and speed-based approaches
- ✅ Implemented robust fallback mechanisms to ensure no zero ETAs are returned when data is missing or inconsistent
- ✅ Model handles edge cases gracefully with zone-to-zone routing calculations
Demand Forecasting:
- 📊 The demand forecasting model predicts supply-demand imbalance within a 15% margin of error
- ⏱️ Demonstrates reliable short-term demand forecasts for 5–30 minute time horizons
- 🎯 Enables proactive pricing adjustments before demand spikes occur
Completion Rate:
- 📈 Improved trip completion rates by +5–15% in high-demand zones through optimized pricing strategies
- 🤝 Better supply-demand matching reduces customer wait times and increases driver utilization
Revenue Efficiency:
- 💰 Demonstrated +10–25% improvement in platform revenue per trip using dynamic pricing policies
- ⚖️ Balanced approach maintains customer satisfaction while maximizing platform economics
Price Volatility:
- 📉 Reduced extreme price volatility by 30–40% through predictive surge models
- 🌊 Smoothing algorithms prevent sudden price spikes that can negatively impact user experience
┌─────────────────────────────────────────────────────────────┐
│ بهبودهای عملکرد │
├─────────────────────────────────────────────────────────────┤
│ دقت ETA: ████████████░░░░░░░░ +20% │
│ پیشبینی تقاضا: ████████████████░░░░ خطای ±15% │
│ نرخ تکمیل: ██████████░░░░░░░░░░ +5-15% │
│ بازدهی درآمد: ██████████████░░░░░░ +10-25% │
│ نوسان قیمت: ████████░░░░░░░░░░░░ -30-40% │
└─────────────────────────────────────────────────────────────┘
پیشبینی ETA:
- ✅ بهبود بیش از 20% در دقت ETA نسبت به خط پایه با استفاده از رویکردهای مبتنی بر مسافت و سرعت
- ✅ مکانیزمهای fallback قوی برای اطمینان از عدم بازگشت ETA صفر در صورت نبود یا ناسازگاری داده
- ✅ مدل موارد خاص را با محاسبات مسیریابی منطقه به منطقه به خوبی مدیریت میکند
پیشبینی تقاضا:
- 📊 مدل پیشبینی تقاضا عدم تعادل عرضه و تقاضا را با خطای 15% پیشبینی میکند
- ⏱️ پیشبینیهای قابل اعتماد تقاضای کوتاهمدت برای افقهای زمانی 5 تا 30 دقیقه را نشان میدهد
- 🎯 امکان تنظیمات قیمتگذاری پیشفعال قبل از رخ دادن افزایش تقاضا را فراهم میکند
نرخ تکمیل:
- 📈 بهبود نرخ تکمیل سفر به میزان +5 تا 15% در مناطق پرتقاضا از طریق استراتژیهای قیمتگذاری بهینه
- 🤝 تطابق بهتر عرضه و تقاضا زمان انتظار مشتری را کاهش میدهد و بهرهوری راننده را افزایش میدهد
بازدهی درآمد:
- 💰 بهبود +10 تا 25% در درآمد پلتفرم به ازای هر سفر با استفاده از سیاستهای قیمتگذاری پویا
- ⚖️ رویکرد متعادل رضایت مشتری را حفظ میکند در حالی که اقتصاد پلتفرم را به حداکثر میرساند
نوسان قیمت:
- 📉 کاهش نوسان شدید قیمت به میزان 30 تا 40% از طریق مدلهای پیشبینیشده surge
- 🌊 الگوریتمهای هموارسازی از افزایش ناگهانی قیمت که میتواند بر تجربه کاربر تأثیر منفی بگذارد، جلوگیری میکند
sequenceDiagram
participant User
participant Dashboard
participant API
participant ETA Model
participant Demand Forecast
participant Pricing Engine
participant Simulation
User->>Dashboard: Request Quote
Dashboard->>API: POST /quote
API->>ETA Model: Predict ETA
API->>Demand Forecast: Get Demand
API->>Pricing Engine: Calculate Surge
Pricing Engine-->>API: Surge Multiplier
API-->>Dashboard: Quote Response
Dashboard-->>User: Display Price
User->>Dashboard: Run Simulation
Dashboard->>API: POST /policy/sim
API->>Simulation: Run Replay
Simulation->>Pricing Engine: Test Policies
Pricing Engine-->>Simulation: KPI Results
Simulation-->>API: Comparison Data
API-->>Dashboard: KPI Deltas
Dashboard-->>User: Visualize Results
Surge Pricing Engine:
- 🎯 Predicts future demand-supply imbalances in ride-hailing zones
- ⚡ Dynamically adjusts pricing to balance platform efficiency and customer satisfaction
- 🔀 Supports multiple pricing policies: Base (fixed), Smart Surge v1 (reactive), and Predictive Surge v2 (anticipatory)
ETA Prediction:
- ⏱️ Uses travel time, distance, and zone load to predict accurate ETAs
- 🛡️ Implements fallback logic to ensure no zero ETAs are returned
- 🧠 Supports both baseline and advanced ETA models with feature engineering
Pricing Optimization:
- 🎛️ Optimizes pricing policies to balance multiple objectives:
- 🚀 ETA targets (minimize wait times)
- ✅ Trip completion rates (maximize successful matches)
- 💵 Driver earnings (ensure fair compensation)
- 📊 Platform revenue (maximize profitability)
- 🔧 Three pricing policies available:
- Base: Fixed pricing with no surge adjustments
- Smart Surge v1: Reactive surge pricing based on current demand-supply ratio
- Predictive Surge v2: Anticipatory surge pricing using short-term demand forecasting
Real-Time Marketplace Dashboard:
- 🗺️ Provides real-time visualizations with heatmaps showing demand patterns
- 📈 Displays KPI delta cards comparing different pricing policies
- 📊 Interactive scatter plots for policy comparison (ETA vs Revenue, Completion Rate vs Revenue)
- 🏙️ City selection dropdown for Tehran with zone-based visualization
sequenceDiagram
participant کاربر
participant داشبورد
participant API
participant مدل_ETA
participant پیشبینی_تقاضا
participant موتور_قیمت
participant شبیهسازی
کاربر->>داشبورد: درخواست قیمت
داشبورد->>API: POST /quote
API->>مدل_ETA: پیشبینی ETA
API->>پیشبینی_تقاضا: دریافت تقاضا
API->>موتور_قیمت: محاسبه Surge
موتور_قیمت-->>API: ضریب Surge
API-->>داشبورد: پاسخ قیمت
داشبورد-->>کاربر: نمایش قیمت
کاربر->>داشبورد: اجرای شبیهسازی
داشبورد->>API: POST /policy/sim
API->>شبیهسازی: اجرای Replay
شبیهسازی->>موتور_قیمت: تست سیاستها
موتور_قیمت-->>شبیهسازی: نتایج KPI
شبیهسازی-->>API: داده مقایسه
API-->>داشبورد: تغییرات KPI
داشبورد-->>کاربر: نمایش نتایج
موتور قیمتگذاری پویا:
- 🎯 عدم تعادل عرضه و تقاضا در آینده را در مناطق درخواست خودرو پیشبینی میکند
- ⚡ قیمتگذاری را به صورت پویا تنظیم میکند تا تعادل بین کارایی پلتفرم و رضایت مشتری ایجاد شود
- 🔀 از چندین سیاست قیمتگذاری پشتیبانی میکند: Base (ثابت)، Smart Surge v1 (واکنشی) و Predictive Surge v2 (پیشفعال)
تخمین زمان رسیدن (ETA):
- ⏱️ از زمان سفر، مسافت و بار منطقه برای پیشبینی ETA دقیق استفاده میکند
- 🛡️ منطق fallback را پیادهسازی میکند تا اطمینان حاصل شود که هیچ ETA صفری برگردانده نمیشود
- 🧠 از مدلهای ETA پایه و پیشرفته با feature engineering پشتیبانی میکند
بهینهسازی قیمتگذاری:
- 🎛️ سیاستهای قیمتگذاری را برای ایجاد تعادل بین اهداف متعدد بهینه میکند:
- 🚀 اهداف ETA (کاهش زمان انتظار)
- ✅ نرخ تکمیل سفر (به حداکثر رساندن تطابق موفق)
- 💵 درآمد رانندگان (اطمینان از جبران عادلانه)
- 📊 درآمد پلتفرم (به حداکثر رساندن سودآوری)
- 🔧 سه سیاست قیمتگذاری در دسترس است:
- Base: قیمتگذاری ثابت بدون تنظیمات surge
- Smart Surge v1: قیمتگذاری surge واکنشی بر اساس نسبت عرضه و تقاضای فعلی
- Predictive Surge v2: قیمتگذاری surge پیشفعال با استفاده از پیشبینی تقاضای کوتاهمدت
داشبورد زنده بازار:
- 🗺️ بصریسازیهای زنده با نقشههای حرارتی نشاندهنده الگوهای تقاضا را ارائه میدهد
- 📈 کارتهای تغییرات KPI را برای مقایسه سیاستهای مختلف قیمتگذاری نمایش میدهد
- 📊 نمودارهای پراکندگی تعاملی برای مقایسه سیاست (ETA در مقابل درآمد، نرخ تکمیل در مقابل درآمد)
- 🏙️ منوی کشویی انتخاب شهر برای تهران با بصریسازی مبتنی بر منطقه
Requirements:
- Python 3.x (3.8 or higher recommended)
- Node.js (for React.js frontend)
- GeoPandas, OSMNX, FastAPI, and necessary Python dependencies
- A working development environment with Node.js for frontend and Python for backend
Steps to Install and Run:
-
Clone the repository:
git clone https://github.com/yourusername/ride-hailing-optimization.git cd ride-hailing-optimization -
Set up a Python virtual environment:
python -m venv venv
-
Activate the virtual environment:
- On Windows:
.\venv\Scripts\activate
- On macOS/Linux:
source venv/bin/activate
- On Windows:
-
Install Python dependencies:
pip install -r requirements.txt
-
Install frontend dependencies:
cd frontend npm install cd ..
-
Prepare the data:
python -m src.data.preprocess python -m src.data.zones python -m src.features.demand_features python -m src.models.eta_baseline
-
Run the backend API:
uvicorn src.api.app:app --reload
The API will be available at
http://127.0.0.1:8000 -
Run the frontend application (React.js):
cd frontend npm startThe frontend will be available at
http://localhost:3000(or the configured port)
نیازمندیها:
- Python 3.x (نسخه 3.8 یا بالاتر توصیه میشود)
- Node.js (برای فرانتاند React.js)
- GeoPandas، OSMNX، FastAPI و وابستگیهای لازم Python
- یک محیط توسعه فعال با Node.js برای فرانتاند و Python برای بکاند
مراحل نصب و اجرا:
۱. کلون کردن مخزن:
git clone https://github.com/yourusername/ride-hailing-optimization.git
cd ride-hailing-optimization۲. ایجاد محیط مجازی Python:
python -m venv venv۳. فعالسازی محیط مجازی:
- در ویندوز:
.\venv\Scripts\activate ```
- در macOS/Linux:
source venv/bin/activate
۴. نصب وابستگیهای Python:
pip install -r requirements.txt۵. نصب وابستگیهای فرانتاند:
cd frontend
npm install
cd ..۶. آمادهسازی دادهها:
python -m src.data.preprocess
python -m src.data.zones
python -m src.features.demand_features
python -m src.models.eta_baseline۷. اجرای API بکاند:
uvicorn src.api.app:app --reloadAPI در آدرس http://127.0.0.1:8000 در دسترس خواهد بود
۸. اجرای برنامه فرانتاند (React.js):
cd frontend
npm startفرانتاند در آدرس http://localhost:3000 (یا پورت پیکربندی شده) در دسترس خواهد بود
Simulation Run:
- Open the dashboard at
http://127.0.0.1:8000/in your browser - Select "Tehran" from the city dropdown
- Use the
/policy/simAPI endpoint to run simulations:curl -X POST "http://127.0.0.1:8000/policy/sim" \ -H "Content-Type: application/json" \ -d '{ "start_datetime": "2024-04-01T09:00:00", "end_datetime": "2024-04-01T12:00:00", "bucket_minutes": 15, "zone_ids": [1, 2, 3], "use_forecast": true, "policy_name": "Predictive Surge v2" }'
- View the results in the UI dashboard with KPI delta cards showing:
- ETA changes (minutes)
- Completion rate changes (%)
- Revenue changes (%)
- Price volatility metrics
Key Insights:
Policy Comparison (Relative to Base):
┌─────────────────────────────────────────────────────────┐
│ │
│ Revenue: Base ████░░░░░░░░░░░░░░░░░░░░░░░░ │
│ v1 ████████░░░░░░░░░░░░░░░░░░░░ │
│ v2 ████████████░░░░░░░░░░░░░░░░ │
│ │
│ ETA: Base ████████████████████████████ │
│ v1 ████████████████████░░░░░░░░ │
│ v2 ████████████████████████░░░░ │
│ │
│ Volatility: Base ██░░░░░░░░░░░░░░░░░░░░░░░░░░ │
│ v1 ████████████░░░░░░░░░░░░░░░░ │
│ v2 ██████░░░░░░░░░░░░░░░░░░░░░░ │
│ │
└─────────────────────────────────────────────────────────┘
-
Predictive Surge v2 🎯: Aims to lift revenue without significantly increasing ETA. Uses anticipatory pricing based on demand forecasts, resulting in smoother price transitions and better supply-demand matching.
-
Smart Surge v1 ⚡: Shows reactive behavior with significant volatility. Responds to current demand-supply imbalances, which can lead to sudden price spikes during peak hours.
-
Base Policy 📊: Provides baseline metrics for comparison. Fixed pricing helps understand the impact of dynamic pricing strategies.
Frontend Testing:
- Open
http://127.0.0.1:8000/in your browser - Switch the city to "Tehran" using the dropdown
- Run simulations for different policies (Base, Smart Surge v1, Predictive Surge v2)
- View the KPI cards showing delta changes for each policy
- Analyze the scatter plot comparison:
- X-axis: ETA (minutes) or Completion Rate (%)
- Y-axis: Revenue per trip or Total Revenue
- Each point represents a policy's performance
- Compare policies side-by-side to understand trade-offs between ETA, completion rates, and revenue
اجرای شبیهسازی:
۱. داشبورد را در آدرس http://127.0.0.1:8000/ در مرورگر خود باز کنید
۲. "Tehran" را از منوی کشویی شهر انتخاب کنید
۳. از endpoint API /policy/sim برای اجرای شبیهسازیها استفاده کنید:
curl -X POST "http://127.0.0.1:8000/policy/sim" \
-H "Content-Type: application/json" \
-d '{
"start_datetime": "2024-04-01T09:00:00",
"end_datetime": "2024-04-01T12:00:00",
"bucket_minutes": 15,
"zone_ids": [1, 2, 3],
"use_forecast": true,
"policy_name": "Predictive Surge v2"
}'۴. نتایج را در داشبورد UI با کارتهای تغییرات KPI مشاهده کنید که نشان میدهند:
- تغییرات ETA (دقیقه)
- تغییرات نرخ تکمیل (%)
- تغییرات درآمد (%)
- معیارهای نوسان قیمت
نکات کلیدی:
مقایسه سیاستها (نسبت به Base):
┌─────────────────────────────────────────────────────────┐
│ │
│ درآمد: Base ████░░░░░░░░░░░░░░░░░░░░░░░░ │
│ v1 ████████░░░░░░░░░░░░░░░░░░░░ │
│ v2 ████████████░░░░░░░░░░░░░░░░ │
│ │
│ ETA: Base ████████████████████████████ │
│ v1 ████████████████████░░░░░░░░ │
│ v2 ████████████████████████░░░░ │
│ │
│ نوسان: Base ██░░░░░░░░░░░░░░░░░░░░░░░░░░ │
│ v1 ████████████░░░░░░░░░░░░░░░░ │
│ v2 ██████░░░░░░░░░░░░░░░░░░░░░░ │
│ │
└─────────────────────────────────────────────────────────┘
-
Predictive Surge v2 🎯: هدف افزایش درآمد بدون افزایش قابل توجه ETA است. از قیمتگذاری پیشفعال مبتنی بر پیشبینیهای تقاضا استفاده میکند که منجر به انتقالهای قیمت نرمتر و تطابق بهتر عرضه و تقاضا میشود.
-
Smart Surge v1 ⚡: رفتار واکنشی با نوسان قابل توجه نشان میدهد. به عدم تعادل عرضه و تقاضای فعلی پاسخ میدهد که میتواند منجر به افزایش ناگهانی قیمت در ساعات اوج شود.
-
سیاست Base 📊: معیارهای خط پایه برای مقایسه را ارائه میدهد. قیمتگذاری ثابت به درک تأثیر استراتژیهای قیمتگذاری پویا کمک میکند.
تست فرانتاند:
۱. آدرس http://127.0.0.1:8000/ را در مرورگر خود باز کنید
۲. شهر را به "Tehran" با استفاده از منوی کشویی تغییر دهید
۳. شبیهسازیها را برای سیاستهای مختلف (Base، Smart Surge v1، Predictive Surge v2) اجرا کنید
۴. کارتهای KPI را که تغییرات دلتا را برای هر سیاست نشان میدهند مشاهده کنید
۵. نمودار پراکندگی مقایسه را تحلیل کنید:
- محور X: ETA (دقیقه) یا نرخ تکمیل (%)
- محور Y: درآمد به ازای هر سفر یا کل درآمد
- هر نقطه عملکرد یک سیاست را نشان میدهد ۶. سیاستها را کنار هم مقایسه کنید تا بدهبستانهای بین ETA، نرخ تکمیل و درآمد را درک کنید
(Add screenshots of the dashboard, KPI cards, scatter plot, and city selection dropdown here.)
Tehran Endpoints:
-
GET /api/tehran/zones: Get the zone data for Tehran- Returns: List of districts with
district_id,centroid_lon, andcentroid_lat - Example response:
[ { "district_id": 1, "centroid_lon": 51.3889, "centroid_lat": 35.6892 } ]
- Returns: List of districts with
-
GET /api/tehran/eta: Get ETA predictions for a given origin and destination district in Tehran- Parameters:
origin_district(int): Origin district IDdestination_district(int): Destination district ID
- Returns: ETA in minutes
- Example request:
GET /api/tehran/eta?origin_district=1&destination_district=2 - Example response:
{ "origin_district": 1, "destination_district": 2, "eta_minutes": 15.5 }
- Parameters:
General Endpoints:
-
POST /eta: Predict ETA for a trip- Request body:
ETARequestwithpickup_zone_id,dropoff_zone_id,trip_distance,pickup_datetime - Returns:
ETAResponsewitheta_minutes_pred,model_version,feature_summary
- Request body:
-
POST /demand: Query demand data for a zone- Request body:
DemandRequestwithzone_id,start_datetime,end_datetime,bucket_minutes - Returns:
DemandResponsewith demand points and statistics
- Request body:
-
POST /quote: Get price quote for a trip- Request body:
QuoteRequestwith trip details - Returns:
QuoteResponsewithbase_fare_estimate,surge_multiplier,final_price_estimate
- Request body:
-
POST /policy/sim: Run policy simulation- Request body:
PolicySimRequestwith simulation parameters - Returns:
PolicySimResponsewith policy comparison results and KPI deltas
- Request body:
-
GET /health: Health check endpoint- Returns:
{"status": "ok"}
- Returns:
-
GET /metrics: Get system metrics- Returns: Model status, data availability, and last simulation timestamp
Endpointهای تهران:
-
GET /api/tehran/zones: دریافت دادههای منطقه برای تهران- بازگشت: لیست مناطق با
district_id،centroid_lonوcentroid_lat - مثال پاسخ:
[ { "district_id": 1, "centroid_lon": 51.3889, "centroid_lat": 35.6892 } ]
- بازگشت: لیست مناطق با
-
GET /api/tehran/eta: دریافت پیشبینیهای ETA برای یک منطقه مبدأ و مقصد مشخص در تهران- پارامترها:
origin_district(int): شناسه منطقه مبدأdestination_district(int): شناسه منطقه مقصد
- بازگشت: ETA به دقیقه
- مثال درخواست:
GET /api/tehran/eta?origin_district=1&destination_district=2 - مثال پاسخ:
{ "origin_district": 1, "destination_district": 2, "eta_minutes": 15.5 }
- پارامترها:
Endpointهای عمومی:
-
POST /eta: پیشبینی ETA برای یک سفر- بدنه درخواست:
ETARequestباpickup_zone_id،dropoff_zone_id،trip_distance،pickup_datetime - بازگشت:
ETAResponseباeta_minutes_pred،model_version،feature_summary
- بدنه درخواست:
-
POST /demand: پرسوجوی دادههای تقاضا برای یک منطقه- بدنه درخواست:
DemandRequestباzone_id،start_datetime،end_datetime،bucket_minutes - بازگشت:
DemandResponseبا نقاط تقاضا و آمار
- بدنه درخواست:
-
POST /quote: دریافت قیمت برای یک سفر- بدنه درخواست:
QuoteRequestبا جزئیات سفر - بازگشت:
QuoteResponseباbase_fare_estimate،surge_multiplier،final_price_estimate
- بدنه درخواست:
-
POST /policy/sim: اجرای شبیهسازی سیاست- بدنه درخواست:
PolicySimRequestبا پارامترهای شبیهسازی - بازگشت:
PolicySimResponseبا نتایج مقایسه سیاست و تغییرات KPI
- بدنه درخواست:
-
GET /health: endpoint بررسی سلامت- بازگشت:
{"status": "ok"}
- بازگشت:
-
GET /metrics: دریافت معیارهای سیستم- بازگشت: وضعیت مدل، در دسترس بودن داده و برچسب زمانی آخرین شبیهسازی
We welcome contributions! Please follow these guidelines:
- Fork the repository and create your feature branch (
git checkout -b feature/AmazingFeature) - Make your changes following the existing code style and conventions
- Add tests for new functionality if applicable
- Update documentation as needed
- Commit your changes with clear, descriptive commit messages
- Push to your branch (
git push origin feature/AmazingFeature) - Open a Pull Request with a clear description of your changes
Guidelines:
- Submit an issue to discuss proposed changes before implementing major features
- Follow PEP 8 style guide for Python code
- Ensure all tests pass before submitting a PR
- Update the README if you add new features or change existing functionality
- Be respectful and constructive in discussions
از مشارکت شما استقبال میکنیم! لطفاً این دستورالعملها را دنبال کنید:
۱. مخزن را Fork کنید و شاخه ویژگی خود را ایجاد کنید (git checkout -b feature/AmazingFeature)
۲. تغییرات خود را اعمال کنید با پیروی از سبک و قراردادهای کد موجود
۳. تستها را اضافه کنید برای عملکرد جدید در صورت امکان
۴. مستندات را بهروزرسانی کنید در صورت نیاز
۵. تغییرات خود را commit کنید با پیامهای commit واضح و توصیفی
۶. به شاخه خود push کنید (git push origin feature/AmazingFeature)
۷. یک Pull Request باز کنید با توضیحات واضح در مورد تغییرات خود
دستورالعملها:
- قبل از پیادهسازی ویژگیهای اصلی، یک issue برای بحث در مورد تغییرات پیشنهادی ثبت کنید
- راهنمای سبک PEP 8 را برای کد Python دنبال کنید
- قبل از ارسال PR، اطمینان حاصل کنید که همه تستها پاس میشوند
- اگر ویژگیهای جدید اضافه میکنید یا عملکرد موجود را تغییر میدهید، README را بهروزرسانی کنید
- در بحثها محترم و سازنده باشید
This project is licensed under the MIT License - see the LICENSE file for details.
About Me:
I am Mahdi Navaei, a Senior AI/ML Engineer with 7+ years of experience in architecting and productionizing intelligent systems at scale. My expertise spans Generative AI, real-time recommendation engines, and NLP/LLM applications. I specialize in building production-grade FastAPI microservices, real-time recommendation systems, and NLP pipelines for diverse use cases.
Key Projects:
-
DriveShield: An ADAS (Advanced Driver Assistance Systems) collision risk prediction system that uses deep learning models to predict potential collisions and enhance road safety. Built with Python, FastAPI, and advanced ML models.
-
Hybrid Retail Recommender: A multi-model recommender system that combines collaborative filtering, content-based filtering, and deep learning approaches to provide personalized product recommendations. Implemented with production-grade microservices architecture.
Connect with me:
- LinkedIn: [Your LinkedIn Profile URL]
- GitHub: [Your GitHub Profile URL]
درباره من:
من مهدی نائویی هستم، یک مهندس ارشد هوش مصنوعی و یادگیری ماشین با بیش از 7 سال تجربه در طراحی و پیادهسازی سیستمهای هوشمند در مقیاس بزرگ. تخصص من شامل هوش مصنوعی مولد (Generative AI)، موتورهای توصیهگر بلادرنگ و کاربردهای پردازش زبان طبیعی (NLP/LLM) است. من در ساخت میکروسرویسهای FastAPI در سطح تولید، سیستمهای توصیهگر بلادرنگ و پایپلاینهای NLP برای کاربردهای متنوع تخصص دارم.
پروژههای کلیدی:
-
DriveShield: یک سیستم پیشبینی خطر تصادف ADAS (سیستمهای کمک راننده پیشرفته) که از مدلهای یادگیری عمیق برای پیشبینی تصادفات احتمالی و افزایش ایمنی جاده استفاده میکند. ساخته شده با Python، FastAPI و مدلهای ML پیشرفته.
-
Hybrid Retail Recommender: یک سیستم توصیهگر چند مدلی که فیلترینگ مشارکتی، فیلترینگ مبتنی بر محتوا و رویکردهای یادگیری عمیق را ترکیب میکند تا توصیههای محصول شخصیسازی شده ارائه دهد. با معماری میکروسرویسهای سطح تولید پیادهسازی شده است.
ارتباط با من:
- لینکدین: [آدرس پروفایل لینکدین شما]
- گیتهاب: [آدرس پروفایل گیتهاب شما]
- NYC Taxi & Limousine Commission (TLC) Trip Record Data: NYC TLC Data
- OpenStreetMap: OSM Website
- FastAPI Documentation: FastAPI Docs
- GeoPandas Documentation: GeoPandas Docs
- OSMNX Documentation: OSMNX Docs
- دادههای رکورد سفر کمیسیون تاکسی و لیموزین نیویورک (TLC): دادههای NYC TLC
- OpenStreetMap: وبسایت OSM
- مستندات FastAPI: مستندات FastAPI
- مستندات GeoPandas: مستندات GeoPandas
- مستندات OSMNX: مستندات OSMNX
Made with ❤️ by Mahdi Navaei
ساخته شده با ❤️ توسط مهدی نوایی



