برنامه ریزی هوشمند تعمیرات شبکه برق
در این پروژه بخش های زیر مد نظر هستند:
داده ها - پیش پردازش -بهینه سازی - سیستم نرم افزار پیشنهادی چارچوب اجرایی -تیم های درگیر پروژه
داده ها
جدول داده های مربوط به کارهای تعمیراتی
نام دادهها |
کد کار |
نوع داده |
توضیحات |
تعویض ترانسفورماتور |
TRM-2024-10-001 |
رشته (String) |
تعمیر کابل - سرپرست - تعویض دکل |
مختصات جغرافیایی |
LOC-2024-10-001 |
(lat, long) |
بخشی از نقشه - موقعیت دقیق عملیات |
زمان تخمین اجرا |
DUR-2024-10-001 |
ساعت (Integer) |
مدت زمان پیشبینی شده برای اتمام کار (بر حسب ساعت) |
زمان صرف شده |
ACT-2024-10-001 |
ساعت (Double) |
مدت زمان واقعی صرف شده برای کار (بر حسب ساعت) |
تجهیزات مورد نیاز |
EQP-2024-10-001 |
لیست (Array) |
لیست ابزار و مواد مورد استفاده در عملیات |
داده های تیم های تعمیرات
نام دادهها |
کد داده |
نوع داده |
توضیحات |
کد تیم |
TEAM-2024-10-001 |
رشته (String) |
شناسه منحصر به فرد هر تیم تعمیراتی (مثال: T-HO-01 برای تیم هوایی ۱) |
نوع تخصص |
SPEC-2024-10-001 |
لیست (Array) |
تخصصهای تیم (مثال: [شبکه هوایی, تعویض ترانسفورماتور]) |
مختصات پایگاه |
BASE-2024-10-001 |
(lat, long) |
موقعیت جغرافیایی ایستگاه کاری که تیم از آنجا اعزام میشود |
تجهیزات حمل شده |
EQIP-2024-10-001 |
لیست (Array) |
لیست تجهیزات و ابزارهایی که تیم به طور معمول با خود حمل میکند |
تاریخهای غیرفعال |
DND-2024-10-001 |
لیست (Array) |
تاریخهایی که تیم به دلیل آموزش، مرخصی و… قادر به انجام کار نیست |
داده های شبکه توزیع برق
نام دادهها |
کد داده |
نوع داده |
توضیحات |
نقشه فیدرها |
NET-FDR-001 |
شیء جغرافیایی (GeoJSON) |
نقشه کامل و بهروز فیدرهای شبکه توزیع برای شناسایی سریع محل وقوع fault و برنامهریزی دسترسی |
محدودیت ترافیک |
NET-TRC-001 |
لیست (Array) |
لیست خیابانها، معابر و مسیرهای دارای محدودیت تردد (مانند طرح ترافیک، سنگینبرد، تعمیرات راه) |
نقاط دسترسی |
NET-ACC-001 |
لیست (Array) |
مختصات نقاط کلیدی برای دسترسی به تجهیزات شبکه (مانند درب ورودی، پارکینگ، محل مانور) |
زمانهای پیک ترافیک |
NET-PTK-001 |
شیء (JSON) |
بازههای زمانی اوج ترافیک در مناطق مختلف به صورت {منطقه: [زمان شروع, زمان پایان]} |
زمانهای ترجیحی |
NET-PRF-001 |
شیء (JSON) |
بازههای زمانی با ترافیک سبکتر و مناسب برای تردد سریعتر تیمهای تعمیراتی |
داده های پویا
داده های پویا
نام دادهها |
کد داده |
نوع داده |
توضیحات |
منبع داده |
ترافیک لحظهای |
DYN-TFC-001 |
شیء (JSON) |
دادههای زنده ترافیکی از APIهای نقشه (مانند Waze, Google) شامل رنگ مسیرها و زمانهای سفر预估 |
سرویسهای نقشهبرداری خارجی (API) |
آب و هوا |
DYN-WTH-001 |
شیء (JSON) |
شرایط جوی لحظهای و پیشبینی شده (بارش، دما، باد، رعد و برق) که بر ایمنی و اجرای کار تأثیر میگذارد |
سرویسهای هواشناسی (API) |
کارهای اضطراری |
DYN-EMG-001 |
لیست (Array) |
کارهای با اولویت بالا که به صورت غیرمنتظره در طول روز در کارتابل سرپرست ظاهر میشوند |
سیستم مدیریت کار شرکت برق (Internal API) |
وضعیت سلامت تیم |
DYN-HLT-001 |
شیء (JSON) |
وضعیت لحظهای هر تیم (در حال حرکت، در حال کار, در راه بازگشت, در پایگاه) از طریق GPS |
نرمافزار رهگیری تیمها بر روی تلفنهای همراه (Internal API) |
پیشرفت کار |
DYN-PRG-001 |
شیء (JSON) |
درصد پیشرفت و زمان تخمینی باقیمانده برای تکمیل هر کار که توسط تیم گزارش میشود |
نرمافزار گزارشدهی تیمها (Internal API) |
وضعیت تجهیزات |
DYN-EQS-001 |
لیست (Array) |
موجودی لحظهای کالاها و تجهیزات در انبار مرکزی و خودروی تیمها |
سیستم انبارداری و لجستیک (Internal API) |
قطعیهای جدید |
DYN-OUT-001 |
لیست (Array) |
گزارشهای قطعی جدید که از طریق سیستم SCADA یا تماسهای مشتریان ثبت میشوند |
سیستم SCADA و مرکز تماس مشتریان (Internal API) |
داده های تاریخی
نام دادهها |
کد داده |
نوع داده |
توضیحات |
کاربرد در سیستم هوشمند |
لاگهای تخصیص گذشته |
HIST-ASN-001 |
آرایه (JSON) |
تاریخچه کامل تخصیصهای کار به تیمها شامل کار، تیم، تاریخ، ساعت شروع/پایان، مسیر طی شده |
تحلیل الگوهای تخصیص، شناسایی بهترین روشها، آموزش مدلهای ML |
زمانهای واقعی اجرای کار |
HIST-DUR-001 |
آرایه (JSON) |
مدت زمان واقعی صرف شده برای هر نوع کار در شرایط مختلف (آب و هوا، منطقه، فصل) |
بهبود دقت “زمان تخمینی اجرا” در برنامهریزی آینده |
الگوهای ترافیک تاریخی |
HIST-TFC-001 |
شیء (JSON) |
دادههای ترافیکی جمعآوری شده در روزهای گذشته برای شناسایی الگوهای هفتگی و ماهانه |
پیشبینی دقیقتر زمان سفر و برنامهریزی بهتر برای زمانبندی کارها |
تاریخچه کارهای اضطراری |
HIST-EMG-001 |
آرایه (JSON) |
ثبت کامل کارهای اضطراری گذشته شامل نوع، محل، زمان وقوع، مدت زمان تعمیر |
پیشبینی احتمال وقوع حوادث در مناطق مختلف و برنامهریزی ظرفیت ذخیره برای آنها |
عملکرد تیمها |
HIST-PRF-001 |
شیء (JSON) |
شاخصهای عملکرد هر تیم (میانگین زمان انجام کار، کیفیت اجرا، رضایت مشتری) |
تخصیص هوشمندانهتر کارها بر اساس تواناییهای واقعی هر تیم |
دادههای مصرف برق |
HIST-PWR-001 |
شیء (JSON) |
الگوهای مصرف برق و دادههای بار شبکه در گذشته |
پیشبینی بار کاری آینده و ارتباط بین الگوهای مصرف و خرابیها |
شرایط آب و هوایی تاریخی |
HIST-WTH-001 |
آرایه (JSON) |
دادههای دقیق آب و هوایی گذشته همراه با تأثیر آن بر اجرای کارها |
ساخت مدل پیشبینی تأثیر آب و هوا بر مدت زمان اجرای کارهای مختلف |
پیشپردازش دادهها
پیشپردازش شامل پاکسازی، استانداردسازی، محاسبه ماتریس مسافت-زمان، گروهبندی کارها، اعمال محدودیتها و ساختاردهی نهایی برای ورودی به بخش بهینهسازی است.
پاکسازی دادهها
عملیات |
ابزار |
خروجی |
حذف رکوردهای ناقص |
pandas.dropna() |
مجموعه داده بدون مختصات جغرافیایی نامعتبر |
تصحیح مقادیر نامعتبر |
sklearn.SimpleImputer() |
درونیابی مقادیر نامعتبر با میانگین/میانه |
یکسانسازی واحدها |
Python (datetime) |
تبدیل همه واحدهای زمانی به دقیقه |
تشخیص ناهنجاری |
Python (scikit-learn) |
حذف دادههای پرت برای مدلهای رگرسیون |
استانداردسازی فرمتها
نوع داده |
تبدیل |
خروجی استاندارد |
آدرسها |
Geocoding API |
(lat, long) |
زمانها |
Python datetime |
دقیقه |
تجهیزات |
کدگذاری یکپارچه |
کد یکپارچه تجهیزات |
وابستگیها |
گراف جهتدار |
ساختار گراف کارها |
محاسبه ماتریس فاصله-زمان
مؤلفه |
روش محاسبه |
ابزار |
مسافت جغرافیایی |
فرماد هورساین |
geopy.distance |
زمان سرف |
مدل ترافیک + داده تاریخی |
الگوریتمهای پیشبینی |
ضریب اصلاح آبوهوا |
۳۰% در شرایط بد |
مدلهای هواشناسی |
محدودیتهای ترافیکی |
مدلسازی شبکه جادهای |
GraphHopper API |
گروهبندی کارها
الگوریتم |
پارامترها |
کاربرد |
K-Means |
موقعیت جغرافیایی |
خوشهبندی مکانی کارها |
Mean-Shift |
چگالی کارها |
شناسایی مناطق پرتراکم |
شباهت تاریخی |
مقایسه با دادههای قبلی |
پیشبینی الگوهای مشابه |
اعمال محدودیتها
نوع محدودیت |
پارامترها |
تأثیر بر بهینهسازی |
ظرفیت تیمها |
min/max ظرفیت |
تعادل بار کاری |
ابزار و تجهیزات |
موجودی و قابلیتها |
تخصیص مبتنی بر قابلیت |
بازه زمانی |
پنجرههای زمانی مجاز |
زمانبندی بهینه |
ساختار نهایی خروجی
{
"meta": {
"date": "2024-10-04",
"region": "تهران مرکزی",
"time_created": "2024-10-04T10:30:00Z"
},
"teams": {
"id": "T-HO-01",
"type": "هوایی",
"capacity": 8,
"cluster": "شمالی",
"tools": ["TRM-001", "CBL-002"]
},
"jobs": {
"id": "J-2024-10-001",
"location": [35.6892, 51.3890],
"duration": 120,
"time_window": [480, 720],
"cluster": "C1",
"required_tools": ["TRM-001"],
"dependencies": ["J-2024-10-002"]
},
"distance_matrix": {
"T-HO-01_J-2024-10-001": {
"distance_km": 5.2,
"time_min": 15,
"weather_factor": 1.3
}
},
"constraints": {
"max_capacity_per_team": 6,
"time_windows": true,
"tool_requirements": true
},
"dynamic_data": {
"traffic": "moderate",
"weather": "rainy"
}
}
ابزارهای مورد استفاده در پیشپردازش
مرحله |
ابزارهای اصلی |
توضیحات |
پاکسازی |
Pandas, scikit-learn |
برای حذف دادههای ناقص، تصحیح مقادیر نامعتبر و تشخیص ناهنجاریها |
استانداردسازی |
Geopy, datetime |
تبدیل آدرس به مختصات جغرافیایی و یکسانسازی فرمت زمانها |
محاسبات مکانی |
GraphHopper, OSRM |
محاسبه مسافت و زمان سفر بر اساس شبکه جادهای |
گروهبندی |
scikit-learn, SciPy |
خوشهبندی کارها بر اساس موقعیت جغرافیایی و ویژگیهای مشترک |
ساختاردهی |
JSON, Python dictionaries |
ایجاد ساختار استاندارد برای ورودی به الگوریتم بهینهسازی |
این ساختار استاندارد، ورودی بهینهای برای الگوریتمهای بهینهسازی فراهم میکند.
قیود مسئله
قید |
فرمول |
توضیح |
|
|
هر کار دقیقاً یک بار انجام شود |
Σ Σ x_ijk = 1, ∀i∈I |
|
k∈K j∈I |
|
تداوم مسیر هر تیم |
Σ x_ihk - Σ x_hjk = 0, ∀h∈I, ∀k∈K |
|
i∈I j∈I |
|
محدودیت پنجره زمانی |
a_i ≤ s_ik ≤ b_i, ∀i∈I, ∀k∈K |
|
|
|
محدودیت ظرفیت تیم |
Σ Σ (d_i + t_ij) * x_ijk ≤ C_k, ∀k∈K |
|
i∈I j∈I |
|
الگوریتمهای حل
دسته الگوریتم |
روشها |
کاربرد |
دقیق |
Branch-and-Bound, Branch-and-Cut |
برای instances کوچک |
فراابتکاری |
Genetic Algorithm, Simulated Annealing |
برای instances متوسط |
متاهیوریستیک |
ALNS, Tabu Search |
برای instances بزرگ |
یادگیری ماشین |
Reinforcement Learning |
برای محیط پویا |
خروجی بهینهسازی
خروجی |
فرمت |
توضیح |
تخصیص کار به تیم |
xijk |
تیم k از کار i به کار j میرود |
زمانبندی کارها |
sik |
زمان شروع کار i توسط تیم k |
مسیرهای بهینه |
[i1 → i2 → … → in] |
ترتیب انجام کارها برای هر تیم |
مثال خروجی
{
"team_assignments": [
{
"team_id": "T-HO-01",
"route": [
{
"job_id": "J-001",
"start_time": "08:30",
"end_time": "10:15"
},
{
"job_id": "J-003",
"start_time": "10:45",
"end_time": "12:30"
}
],
"total_travel_time": 45,
"total_work_time": 210
}
],
"objective_value": 255,
"solve_time": "120s",
"optimality_gap": "0.05%"
}
ساختار اجزا و فلوچارت کار
لایههای سیستم
🚪 لایه Frontend
کامپوننت |
تکنولوژی |
مسئولیت |
مدیریت داشبورد |
React/Vue.js |
نمایش وضعیت روی نقشه، مانیتورینگ لحظهای |
پنل نظارت تیمها |
TypeScript |
ردیابی موقعیت و وضعیت تیمها |
تحلیل کارایی |
Chart.js, D3.js |
تجزیه و تحلیل کاهش زمان سفر و تعادل کاری |
اینترفیس سرپرستان |
Material-UI |
مدیریت تخصیص کار و برنامهریزی |
🌐 لایه API Gateway
سرویس |
تکنولوژی |
وظیفه |
مسیریابی |
NGINX, Kong |
مدیریت ترافیک و Load Balancing |
احراز هویت |
JWT, OAuth2 |
امنیت و مدیریت دسترسیها |
کشسازی |
Redis |
بهبود عملکرد درخواستهای تکراری |
⚙️ لایه Backend Services
سرویس |
تکنولوژی |
مسئولیت |
Job Management |
Python/Django |
مدیریت کارهای تعمیراتی و اولویتبندی |
Team Orchestrator |
Node.js |
هماهنگی و مدیریت تیمهای تعمیراتی |
Optimization API |
Python/FastAPI |
رابط سرویس بهینهسازی |
Decision Engine |
Java/Spring |
موتور تصمیمگیری هوشمند |
Geo Service |
Go |
سرویسهای مکانی و مسیریابی |
🧠 لایه هوشمند
کامپوننت |
تکنولوژی |
وظیفه |
Optimization Engine |
Python, OR-Tools |
حل مسئله بهینهسازی تخصیص |
ML Services |
Python, scikit-learn |
پیشبینی و تحلیلهای هوشمند |
💾 لایه داده
کامپوننت |
تکنولوژی |
وظیفه |
پایگاه داده اصلی |
PostgreSQL |
ذخیرهسازی دادههای تراکنشی |
پایگاه داده مکانی |
PostGIS |
مدیریت دادههای جغرافیایی |
کش |
Redis |
ذخیرهسازی موقت دادههای پرتکرار |
جریان داده |
Apache Kafka |
پردازش رویدادهای بلادرنگ |
📱 اپلیکیشن موبایل (تیم اندروید)
الزامات فنی
بخش |
تکنولوژی |
ویژگیها |
پلتفرم |
Android (Kotlin) |
پشتیبانی از نسخه ۸ به بالا |
نقشه و موقعیتیابی |
Google Maps SDK |
نمایش موقعیت و مسیریابی |
ارتباط بلادرنگ |
WebSocket, MQTT |
بروزرسانی وضعیت کارها |
ذخیرهسازی محلی |
Room Database |
عملکرد آفلاین |
رابط کاربری |
Jetpack Compose |
طراحی مدرن و واکنشگرا |
ماژولهای اپلیکیشن
ماژول |
عملکرد |
مدیریت کارها |
دریافت و نمایش کارهای تخصیص یافته |
مسیریابی هوشمند |
نمایش بهینهترین مسیر بین کارها |
گزارشدهی |
ثبت پیشرفت کار و زمانبندی |
ارتباط تیمی |
چت و هماهنگی با سرپرست و تیمها |
هشدار و اعلان |
دریافت اطلاعیههای فوری |
🔧 الزامات سختافزاری
سرورها
سرویس |
مشخصات |
تعداد |
Application Server |
۸ core, ۱۶GB RAM, ۵۰۰GB SSD |
۳+ |
Database Server |
۱۶ core, ۳۲GB RAM, ۱TB SSD |
۲+ |
Cache & Message Broker |
۴ core, ۸GB RAM, ۲۵۰GB SSD |
۲+ |
زیرساخت شبکه
کامپوننت |
مشخصات |
Load Balancer |
HAProxy / AWS ALB |
CDN |
CloudFront / Cloudflare |
Monitoring |
Prometheus, Grafana |
🔒 ملاحظات امنیتی
لایه |
اقدامات امنیتی |
Frontend |
HTTPS, CSP, XSS Protection |
API Gateway |
Rate Limiting, API Key Management |
Backend |
Encryption at Rest, SQL Injection Protection |
Mobile App |
Certificate Pinning, Secure Storage |
چارچوب اجرایی پروژه
فازبندی پروژه
فاز ۱: آمادهسازی و طراحی
فعالیت |
مدت تخمینی |
خروجیها |
مسئول |
تحلیل نیازمندیهای کسبوکار |
۲ هفته |
سند نیازمندیهای مفصل |
تحلیلگر کسبوکار |
طراحی معماری فنی |
۳ هفته |
نمودارهای معماری، انتخاب تکنولوژیها |
معمار سیستم |
طراحی پایگاه داده |
۲ هفته |
مدل ERD، اسکریپتهای دیتابیس |
معمار دیتابیس |
طراحی واسطهای کاربری |
۲ هفته |
وایرفریم، پروتوتایپ |
طراح UX/UI |
فاز ۲: توسعه
بخش Backend
ماژول |
مدت تخمینی |
تکنولوژی |
مسئول |
هسته مسیریابی و بهینهسازی |
۶ هفته |
Python, OR-Tools |
تیم بهینهسازی |
سرویسهای جغرافیایی |
۳ هفته |
Go, PostGIS |
توسعهدهنده Backend |
مدیریت کارها و تیمها |
۴ هفته |
Python/Django |
توسعهدهنده Backend |
API Gateway |
۲ هفته |
Node.js, Kong |
توسعهدهنده Backend |
بخش Frontend
ماژول |
مدت تخمینی |
تکنولوژی |
مسئول |
داشبورد عملیاتی |
۵ هفته |
React, TypeScript |
توسعهدهنده Frontend |
پنل مدیریت سرپرستان |
۴ هفته |
Vue.js, Material-UI |
توسعهدهنده Frontend |
نمایش نقشه و موقعیتها |
۳ هفته |
Leaflet, Mapbox |
توسعهدهنده Frontend |
بخش موبایل
ماژول |
مدت تخمینی |
تکنولوژی |
مسئول |
اپلیکیشن اندروید |
۶ هفته |
Kotlin, Jetpack Compose |
توسعهدهنده موبایل |
سرویسهای موقعیتیابی |
۳ هفته |
Google Maps SDK |
توسعهدهنده موبایل |
فاز ۳: استقرار
فعالیت |
مدت تخمینی |
شرح |
مسئول |
راهاندازی زیرساخت |
۲ هفته |
سرورها، شبکه، دیتابیس |
DevOps |
استقرار محیط تست |
۱ هفته |
Deploy بر روی staging |
DevOps |
تست یکپارچگی |
۲ هفته |
Integration Testing |
QA |
استقرار تولید |
۱ هفته |
Deploy نهایی |
DevOps |
گانت چارت تیمهای توسعه
تیم بهینهسازی (۳ نفر)
نقش |
مسئولیتها |
مهارتهای مورد نیاز |
پژوهشگر بهینهسازی |
طراحی الگوریتمها، مدلسازی مسئله |
OR-Tools، مسائل VRP، الگوریتمهای فراابتکاری |
توسعهدهنده هوش مصنوعی |
پیادهسازی مدلهای ML |
Python، scikit-learn، TensorFlow |
مهندس نرمافزار |
توسعه سرویس بهینهسازی |
Python، FastAPI، Docker |
تیم توسعه امنیت (۲ نفر)
نقش |
مسئولیتها |
مهارتهای مورد نیاز |
متخصص امنیت نرمافزار |
امنیت برنامههای تحت وب |
OWASP، تست نفوذ، رمزنگاری |
مهندس امنیت زیرساخت |
امنیت شبکه و سرورها |
Linux Hardening، شبکه، فایروال |
تیم توسعه Backend (۴ نفر)
نقش |
مسئولیتها |
مهارتهای مورد نیاز |
توسعهدهنده ارشد |
طراحی معماری سرویسها |
Python، Django، طراحی الگوها |
توسعهدهنده میانی |
توسعه ماژولهای کسبوکار |
Python، REST APIs، PostgreSQL |
توسعهدهنده سرویسهای مکانی |
توسعه سرویسهای موقعیتمکانی |
Go، PostGIS، GraphHopper |
توسعهدهنده API |
توسعه و مدیریت API Gateway |
Node.js، Kong، Redis |
تیم توسعه Frontend (۳ نفر)
نقش |
مسئولیتها |
مهارتهای مورد نیاز |
توسعهدهنده ارشد Frontend |
طراحی معماری فرانتاند |
React، TypeScript، State Management |
توسعهدهنده Frontend |
توسعه کامپوننتها |
Vue.js، JavaScript، CSS |
طراح UX/UI |
طراحی رابط کاربری |
Figma، Adobe XD، طراحی واکنشگرا |
تیم توسعه موبایل (۲ نفر)
نقش |
مسئولیتها |
مهارتهای مورد نیاز |
توسعهدهنده ارشد اندروید |
توسعه اپلیکیشن موبایل |
Kotlin، Jetpack Compose، Android SDK |
توسعهدهنده اندروید |
توسعه ماژولهای اپلیکیشن |
Java، Room Database، Location Services |
تیم DevOps (۲ نفر)
نقش |
مسئولیتها |
مهارتهای مورد نیاز |
مهندس DevOps |
مدیریت زیرساخت |
Docker، Kubernetes، AWS/Azure |
مهندس پایگاه داده |
مدیریت و بهینهسازی دیتابیس |
PostgreSQL، Redis، Monitoring |
جدول زمانی کلی (بر اساس هفته)
هفته |
۱-۲ |
۳-۵ |
۶-۹ |
۱۰-۱۳ |
۱۴-۱۶ |
۱۷-۱۹ |
۲۰-۲۱ |
۲۲-۲۴ |
فاز ۱ |
✅ |
✅ |
|
|
|
|
|
|
فاز ۲ |
|
|
✅ |
✅ |
✅ |
✅ |
|
|
فاز ۳ |
|
|
|
|
|
|
✅ |
✅ |
تست |
|
|
|
|
✅ |
✅ |
✅ |
|
استقرار |
|
|
|
|
|
|
|
✅ |