طراحی و پیاده سازی سیستم تصمیم ساز خودکار فرآیند برنامه ریزی و زمان بندی به همراه مسیریابی بهینه گروه های تعمیراتی با استفاده از عامل هوش مصنوعی
شرکت توزیع نیروی برق شهرستان مشهد
گزارش پیشرفت فاز اول
کد پروژه: ۴۳۶/۱۴۰۴
تهیه و تنظیم: تیم فنی پروژه: هادی صدوقی یزدی, یحیی فرقانی
تاریخ: ۱۴۰۴/۰۹/۰۹
خلاصه
امروزه مدیریت و نگهداری بهینه داراییهای فیزیکی در صنایع مانند انرژی به یک چالش اساسی تبدیل شده است، زیرا برنامهریزی دستی برای گروههای تعمیراتی با چالشهایی مانند تخصیص ناکارآمد منابع، اولویتهای متغیر و محدودیتهای جغرافیایی روبروست. برای غلبه بر این مشکلات، این گزارش دستاوردهای فاز اول پروژه طراحی و پیادهسازی یک سیستم تصمیمساز خودکار را ارائه میدهد. این سیستم با بهرهگیری از الگوریتمهای پیشرفته بهینهسازی و هوش مصنوعی، قادر به تخصیص خودکار کارها، مدیریت منابع و محاسبه مسیرهای بهینه حرکتی است. اهداف کلیدی این سیستم شامل کمینهسازی زمان کل پروژه، حداکثرسازی بهرهوری نیروی انسانی و کاهش زمان توقف تجهیزات میباشد. پیادهسازی اولیه هسته مرکزی سیستم با موفقیت انجام شده و قابلیتهای کلیدی آن در محیط آزمایشی اثبات شده است و آماده برای گسترش به مقیاس واقعی و یکپارچهسازی با محیط عملیاتی سازمان است.
مقدمه
چالش اصلی صنعت برق: تأمین انرژی الکتریکی قابل اعتماد و پایدار در شبکههای برق مدرن با پیچیدگیهای فزایندهای روبرو است. قابلیت اطمینان سیستمهای توزیع، که حلقه واسط بین تولید و مصرف هستند، مستقیماً به کیفیت و بهموقع بودن فعالیتهای نگهداری و تعمیرات وابسته است. مشکلات برنامهریزی دستی: برنامهریزی و زمانبندی گروههای تعمیراتی به صورت دستی با چالشهای جدی مواجه است، از جمله:
- پراکندگی جغرافیایی تجهیزات.
- اولویتهای کاری متغیر.
- محدودیتهای منابع انسانی و تجهیزاتی.
- عدم قطعیت در زمان انجام فعالیتها. پیامدهای ناکارآمدی روشهای سنتی: روشهای سنتی که بر اساس تجربه اپراتورها هستند، اغلب عوارضی چون تخصیص غیربهینه منابع، افزایش زمان پاسخگویی، افزایش هزینههای عملیاتی، کاهش رضایت مشتریان بهمراه دارد.
رویکرد آرمانی داشتن سیستم “تعمیر آگاه” است که با استفاده از اینترنت اشیاء و دوقلوی دیجیتال، وضعیت لحظهای تجهیزات را پایش میکند. سپس با تحلیل دادهها توسط هوش مصنوعی، زمان دقیق نیاز به تعمیر را پیشبینی کرده و از خاموشیها و هزینههای اضافی جلوگیری میکند. در گام مقدماتی نیاز به سیستم پشتیبان تصمیمگیری خودکار، برای غلبه بر این چالشها است که بتواند به صورت پویا و با در نظرگیری اهداف چندگانه، برنامهای بهینه ارائه دهد. نمونه ای از درخواست پروژه در این زمینه را ملاحظه کنید:
سیر تکامل روشهای الگوریتمی در تعمیر و نگهداری، تمرکز اصلی بر الگوریتمهایی مانند الگوریتم ژنتیک و جستجوی تابو (Tabu Search) بود. امروزه، این رویکرد به سمت راهکارهای ترکیبی تغییر جهت داده است؛ راهکارهایی که برنامهریزی ریاضی (مانند MILP)، الگوریتمهای فراابتکاری (مثل جستجوی محله بزرگ تطبیقی) و هوش مصنوعی را در کنار هم قرار میدهند تا همزمان کیفیت راهحل و سرعت محاسبات را بهینه کنند. بهویژه، چارچوبهای هیبریدی که مدلهای بهینهسازی را با یادگیری ماشین ترکیب میکنند، پتانسیل بالایی برای مدیریت عدم قطعیتها و حل مسائل بهینهسازی چندمعیاره از خود نشان دادهاند.
شکافهای پژوهشی باقیمانده با وجود این پیشرفتها، چالشهای مهمی همچنان پابرجاست همچون:مقیاسپذیری و بهینهسازی جامع: هنوز کمبود الگوریتمهای مقیاسپذیر و عملیاتی احساس میشود که بتوانند بهصورت همزمان چندین هدف کلیدی—مانند هزینههای عملیاتی، بهرهوری نیروی کار و قابلیت اطمینان سیستم—را در محیطهای پویا و پر از عدم قطعیت بهینه سازند.
هدف از این پژوهش، طراحی و پیادهسازی یک سیستم تصمیمساز خودکار برای شرکت توزیع نیروی برق شهرستان مشهد است که با بهرهگیری از آخرین دستاوردهای علمی، این چالشها را برطرف نماید. سیستم پیشنهادی با ترکیب مدلهای بهینهسازی و تکنیکهای یادگیری ماشین، قادر خواهد بود:
- بهینهسازی تخصیص و مسیریابی تیمهای تعمیراتی با در نظر گرفتن مهارتها، محدودیتهای زمانی و اولویت وظایف.
- پیشبینی احتمال خرابیها و برنامهریزی تعمیرات پیشگیرانه بهمنظور کاهش خاموشیهای ناگهانی. این مورد در حیطه رویکرد “تعمیر آگاه” می گنجد که با ارایه یک دوقلوی دیجیتال تعمیر آگاه میسر می گردد.
- ارائه یک رابط کاربری قابل فهم و تعاملی برای افزایش اعتماد و تسهیل تصمیمگیری توسط مدیران.
مرور کلی سیستم تصمیمگیری خودکار
این نمودار چارچوب یک سیستم تصمیمگیری خودکار را نمایش میدهد که با بهرهگیری از بهینهسازی و هوش مصنوعی، چالشهای عملیاتی پیچیده را به راهحلهای عملیاتی تبدیل میکند.
ورودیها (چالشهای عملیاتی): پراکندگی جغرافیایی عملیات- محدودیت منابع (نیروی انسانی، تجهیزات، زمان)- اولویتبندی پویای وظایف- عدم قطعیت در شرایط واقعی عملیات
پردازش مرکزی: سیستم تصمیمگیری خودکار با الگوریتمهای بهینهسازی و هوش مصنوعی
خروجیها (بهبودهای کلیدی عملکرد): زمانبندی بهینه عملیات- مسیریابی کارآمد تیمها- کاهش هزینههای عملیاتی- افزایش قابلیت اطمینان سرویس- خروجی نهایی به تیمهای عملیاتی
مرور ادبیات
پیشینه پژوهش در حوزه سیستمهای پشتیبان تصمیم و بهینهسازی فرآیندها، بهویژه در مدیریت داراییها و نگهداری، بسیار غنی و گسترده است. از جنبه های زیر قابل بررسی است:
- مبانی نظری و الگوریتمی- کاربردهای عملی در صنایع مختلف-ملاحظات پیادهسازی سازمانی این مرور بر اساس یک رویکرد سلسلهمراتبی سازماندهی شده است تا ابتدا مبانی نظری و روششناسیهای اصلی کاربردهای این روشها در مدیریت نگهداری و سیستمهای صنعتی سیستمهای پشتیبان تصمیم در حوزههای کاربردی خاص ملاحظات پیادهسازی و مدیریت سازمانی
برای تصویرسازی بهتر از این ساختار، نمودار زیر سلسلهمراتب موضوعی این بخش را نشان میدهد.
مبانی نظری و روششناسیهای کلیدی (Theoretical Foundations)
این بخش پایه و اساس را فراهم میکند. مانند ساختن یک ساختمان، ابتدا باید مواد اولیه و ابزارها را معرفی کنیم.
- الگوریتمهای بهینهسازی و هوش مصنوعی: اینها “مغز” سیستم هستند که تصمیمگیری و حل مسئله را انجام میدهند.
- فناوریهای نظارت و پردازش داده: اینها “حسها” یا “دستها” سیستم هستند که دادههای لازم برای تصمیمگیری را جمعآوری و آماده میکنند.
کاربردها در مدیریت نگهداری و سیستمهای صنعتی (Application in Core Domain)
این بخش ابزارهای تئوریک را به حوزه اصلی تحقیق (نگهداری و تعمیرات دکلهای برق) پیوند میدهد.
- رویکردهای دادهمحور: نشان میدهد که چگونه دادهها و هوش مصنوعی برای نگهداری پیشگویانه استفاده میشوند.
- مدلسازی و برنامهریزی: نشان میدهد که چگونه الگوریتمهای بهینهسازی برای برنامهریزی در شبکههای بزرگ (مانند شبکه برق) به کار میروند.
سیستمهای پشتیبان تصمیم در حوزههای کاربردی خاص (Inspiration from Other Domains)
این بخش به حوزههای دیگر (مانند درمان و لجستیک) نگاه میکند تا ایدهها و چارچوبهای موفق را برای مسئله اصلی خود بیاموزد. این یک گام “فراتر از حوزه اصلی” است که به دنبال الهامگیری و یافتن بهترین روشهاست.
ملاحظات پیادهسازی و مدیریت سازمانی (Implementation and Organizational Considerations)
این بخش از جنبه فنی به جنبههای عملی و مدیریتی میپردازد. یک ایده خوب بدون اجرای موفقیتآمیز بیفایده است.
- سیستمهای اطلاعاتی: زیرساخت نرمافزاری لازم برای اجرا را بررسی میکند.
- چارچوبهای ساختاریافته: چالشهای سازمانی و روشهای ارزیابی موفقیت را تحلیل میکند.
خلاصه آنکه
[تئوری (چگونه فکر میکنیم)] ──► [کاربرد در حوزه اصلی (چگونه در مورد موضوع خودمان فکر میکنیم)] ──► [الهام از دیگران (چگونه دیگران فکر میکنند)] ──► [پیادهسازی (چگونه این ایده را به واقعیت تبدیل کنیم)] ──► [معرفی راهحل (مشکل چیست و راهحل ما چیست)]
موارد صنعتی
نرمافزار مدیریت کار ابزاری قدرتمند است که به شما امکان میدهد فرآیند کار خود را سادهسازی کرده و کارایی را بهبود بخشید. با ویژگیهای شهودی مانند زمانبندی خودکار و مستندات دیجیتال، نرمافزار مدیریت کار میتواند دیدی بهتر در عملیات ایجاد کند در حالی که خطاهای پرهزینه را کاهش میدهد. نرمافزار مدیریت کار با اپلیکیشن موبایل به شما امکان میدهد تا به راحتی پیشرفت کارگران سیار را ردیابی کنید، کارها را به سرعت به آنها اختصاص دهید و به راحتی با آنها ارتباط برقرار کنید. همچنین به کارگران در مسیر اجازه میدهد تا اطلاعات مشتری را به سرعت دسترسی پیدا کنند، کارهای روزانه خود را مشاهده کنند و هرگونه اسناد را به صورت دیجیتال تکمیل کنند. این کار نه تنها کارایی را افزایش میدهد، بلکه عملیات را سادهسازی میکند و برای کارکنان شما در مسیر و مشتریان شما یک تغییردهنده بازی است.
تحلیل و پیاده سازی
تحلیل عمیق و پیادهسازی سیستم برنامهریزی بهینه تعمیرات برق با رویکرد چندمعیاره از جنبه های مختلف بررسی می شود. در بخش بعدی تحلیل عمیق فرآیند دستی ارایه می شود. محدودیتهای عملیاتی همچون عدم در نظر گرفتن بهینهسازی مسیرهای حرکتی، تخصیص ناکارآمد منابع انسانی و تجهیزات، زمانبر بودن فرآیند برنامهریزی دستی، ضمنی بودن دانش تخصیص نیاز ارایه مدل مناسب بهینه سازی را طلب می کند. بعلاوه بررسی برخی ابزار در پیاده سازی نرم افزاری نیز اشاره می شود.
دستهبندی کارها:
WorkTypes = { {عادی}, {اضطراری}, {محدودیت زمانی} }
که: {عادی}: کارهای با اولویتهای متفاوت {اضطراری}: نیازمند پاسخ فوری (response time < 2 hours) {محدود زمانی}: با قیود زمانی سخت (مانند only_saturday)
مدلسازی ریاضی و فرمولبندی مسئله
در مسئله برنامهریزی تعمیرات شرکت توزیع نیروی برق، مدل ریاضی زیر تعریف میشود:
مجموعهها:
- $J = {1, 2, …, n}$: مجموعه کارهای تعمیراتی
- $G = {1, 2, …, m}$: مجموعه گروههای کاری
- $D = {1, 2, 3, 4, 5, 6, 7}$: روزهای هفته
متغیرهای تصمیمگیری:
& {اگر کار } j { به گروه } i { در روز } d { تخصیص یابد} x_{ij}^d = 1 در غیر این صورت 0
تابع هدف: \(\min \sum_{i \in G} \sum_{j \in J} \sum_{d \in D} \left( w_{geo} \cdot d_{ij}^d + w_{prio} \cdot p_j + w_{bal} \cdot \sigma_i^d + w_{delay} \cdot \delta_j^d \right) \cdot x_{ij}^d\)
که در آن:
- $d_{ij}^d$: فاصله اقلیدسی بین موقعیت فعلی گروه $i$ و محل کار $j$ در روز $d$
- $p_j$: وزن اولویت کار $j$ (عدد صحیح مثبت، مقدار کمتر یعنی اولویت بالاتر)
- $\sigma_i^d$: معیار عدم توازن بار کاری گروه $i$ در روز $d$
- $\delta_j^d$: تابع جریمه تأخیر برای کار $j$ در روز $d$
فرمولبندی قیود
قیود سخت:
- قیود مهارتی: برای هر j در J، وجود دارد i در G: اگر مهارتهای j زیرمجموعه مهارتهای i باشد، آنگاه x_ij^d = 0
- قیود پنجره زمانی: برای هر j در J: اگر پنجره زمانی j با d اشتراک نداشته باشد، آنگاه x_ij^d = 0
- قیود ظرفیت: مجموع (t_j × x_ij^d) برای تمام j در J ≤ C_i برای هر i در G و d در D
- انحصار: مجموع (x_ij^d) برای تمام i در G و d در D = 1 برای هر j در J
قیود نرم (توسط تابع هزینه):
- هزینه اولویت: w_prio × مجموع (p_j × x_ij^d) برای تمام j در J
- هزینه عدم توازن بار: w_bal × مجموع ((workload_i^d - میانگین_workload)^2 × x_ij^d) برای تمام i در G و d در D
- هزینه تأخیر: w_delay × مجموع (max(0, deadline_j - d) × x_ij^d) برای تمام j در J
ماژول محاسبات مسیریابی تابع فاصله هaversine: \(d_{km} = 2r \cdot \arcsin\left(\sqrt{\sin^2\left(\frac{\phi_2 - \phi_1}{2}\right) + \cos(\phi_1) \cdot \cos(\phi_2) \cdot \sin^2\left(\frac{\lambda_2 - \lambda_1}{2}\right)}\right)\)
where:
- $r$: شعاع زمین (حدود 6371 کیلومتر)
- $\phi$: عرض جغرافیایی
- $\lambda$: طول جغرافیایی
بهینهسازی عملکرد:
- پیادهسازی کش OSRM_CACHE با الگوریتم LRU
- کاهش 70% درخواستهای تکراری به OSRM
- زمان پاسخ بهبودیافته از 2.3s به 0.7s
ماژول مدیریت قیود
قیود مهارتی: \(\forall j \in J: {requires}_j \subseteq {skills}_i \implies x_{ij}^d = 0\)
قیود زمانی: \({only saturday}_j \implies d = 6\) \({finish_by_monday}_j \implies d \in \{6, 7, 1\}\)
قیود ظرفیت: \(C_i = {members count}_i \times {daily capacity hours}_i\)
تجزیه و تحلیل میدانی
جمع آوری اطلاعات
برای تجزیه و تحلیل مساله، جلسات متعددی با مسئولین امور نگهداشت منطقه غرب شرکت توزیع برق مشهد (آقای مهندس خاکستانی، آقای مهندس ابوترابی و آقای مهندس محرابی) و جلسه ای با مسئولین امور هوشمندسازی شرکت توزیع برق (آقای مهندس خوشبین و آقای مهندس ترشیزی) و مسئول واحد انفورماتیک شرکت (آقای مهندس فروغیان) برگزار شد. ماحصل این جلسات، فهم دقیقتر از فرآیند زمانبندی کارها توسط پلنر و فرآیند تخصیص و برنامه ریزی کارها توسط گروههای مختلف تعمیراتی و نهایتا فرآیند انجام تعمیرات و ثبت گزارش پایان کار تعمیر توسط تیمهای مستقر در امور نگهداشت منطقه غرب شرکت توزیع برق مشهد بود. در ضمن، امکانات و نقصهای سامانه CMMS برای انجام سامانه پیشنهادی مورد بررسی قرار گرفت.
فرآیند تخصیص و برنامه ریزی کارها براساس اطلاعات جمع آوری شده
نقاط مختلف شبکه توزیع که نیاز به سرویس یا تعمیر دارند با اولویتهای مختلف در کارتابل پلنر مشخص شده اند. پلنر از میان این مجموعه کارهای تعمیراتی، بر اساس معیارهای مختلفی چون اولویت کار و نزدیکی کارها به یکدیگر و با توجه به ظرفیت اعلامی رئیس اداره نگهداشت، تعدادی کار را تا روز چهارشنبه انتخاب کرده و به کارتابل رئیس اداره نگهداشت ارسال میکند تا در هفته پیش رو به انجام برسد. اصطلاحا به کارهای انتخاب شده ی پلنر، کارهای زمانبندی شده برای هفته پیش رو گفته میشود که به اختصار کارهای زمانبندی شده خوانده میشود. کارهای زمانبندی شده پلنر شامل کارهای اضطراری که در هفته آتی پیش می آید نیست. هر کار زمانبندی شده، با توجه به نوع تخصص مورد نیاز آن، به کارتابل مسئول امور نگهداشت ارسال میشود و مسئول امور نگهداشت، توسط پنجره شکل زیر در CMMS، انجام هر کار زمانبندی شده را به سرپرست یک یا چند گروه تعمیراتی مختلف ارسال میکند و ملاحظاتی هم برای انجام آنها قید میکند که باید توسط مسئول گروههای مربوطه مورد توجه قرار گیرد. به عنوان مثال، مسئول امور نگهداشت ممکن است قید زمان خاصی را برای انجام یک کار ذکر کند. مثلا، اگر مشترکی، با تماسهای مکرر، انجام یک کار را پیگیری میکند، ممکن است مسئول امور نگهداشت انجام زودتر کار را در روز اول هفته از مسئول گروه درخواست کند.
گروه های تعمیراتی شامل گروه روشنایی معابر، گروه تعمیرات شبکه هوایی، گروه تعمیرات شبکه زمینی، گروه تابلو هستند. هرگروه، شامل چند تیم اجرایی است و هر تیم اجرایی متشکل از حداقل دو نفر است. سرپرست هر گروه، باید کارهای زمانبندی شده که توسط مسئول امور نگهداشت به گروه ارجاع شده را قبل از شروع هفته با استفاده از پنجره شکل\ref{fig:shakl2} در CMMS به تیمهای مختلف خود تخصیص داده و به کارتابل تیمها ارسال کند. منظور از تخصیص کار به تیمها، تعیین روز انجام کارها توسط تیمهای مختلف تحت مدیریت یک گروه در هفته پیش رو است. نهایتا تعیین ترتیب انجام کارهای هر روز توسط سرپرست تیم و مطابق با پنجره شکل زیر در CMMS انجام میشود. پس از پایان انجام یک کار توسط تیم، مواردی چون ساعت شروع و پایان کار در سامانه CMMS ثبت میشود.
کارهای تعمیراتی دو دسته هستند: الف) کارهای زمانبندی شده پلنر برای هفته پیش رو که قبلا توسط مسئول امور نگهداشت به کارتابل سرپرست گروه ارسال شده است؛ ب) کارهای اضطراری که به مرور و در طول هفته ی پیش رو، در کارتابل سرپرست گروه قرار میگیرند و ظرف حداکثر 48 ساعت باید به انجام برسند. درصورت، ارجاع یک کار اضطراری به یک تیم، موقتا کارهای برنامه ریزی شده تیم برای آن روز معلق میشود تا نخست، کار اضطراری انجام شود. سپس، آن تیم، کارهای غیر اضطراری برنامه ریزی شده اش برای آن روز را انجام میدهد.
در حال حاضر، سرپرست هر گروه در انتهای هر هفته، کارهای هفته پیش رو را به نحوی به تیم های خود تخصیص میدهد که در پنج روز کاری، و هر روز به مدت شش ساعت انجام گیرد. در واقع، دو ساعت برای استقرار تیمها در مبدا، پوشیدن لباس کار، برداشتن کالاهای مورد نیاز کارهای امروز و همینطور زمان لازم برای برگشت به مبدا و تعویض لباس در پایان کار درنظرگرفته میشود. کارهای تخصیص یافته به هر تیم، در کارتابل آن تیم ارسال میگردد. هر تیم، ساعت 8 صبح، برای انجام کارهای تخصیص یافته به خود، از یک ایستگاه کاری اعزام میشود و پس از انجام چند کار در نقاط مختلف شبکه توزیع، قبل از ساعت 14 به ایستگاه کاری مراجعت میکند. البته ساعت کاری ممکن است در ماههای مختلف سال تغییر کند.
کارهای زمانبندی شده کارهایی است که کالای مورد نیاز آن، قبلا تامین شده ولی ممکن است نیازمندیهای دیگری داشته باشد که باید توسط مسئول گروه تامین شود. مثلا انجام بعضی از تعمیرات، نیاز به خاموشی دارد که باید مسئول گروه با مسئولین مربوطه هماهنگی لازم را انجام دهد و پس از اخذ مجوز لازم و تعیین زمان اعمال خاموشی، انجام کار مربوطه توسط یک تیم برنامه ریزی شود. بعضی از کارها به چند تیم از یک گروه یا چند تیم از چند گروه ارجاع میشود. در این صورت باید قبل از فرآیند برنامه ریزی تخصیص و کار به تیمهای مختلف، بین تیم ها، هماهنگی ای لازم صورت بگیرد. کارهای چند تیمی، شماره دستور کار یکسان دارند. کارهای چند تیمی، دو نوع هستند: کارهایی که نیاز به حضور همزمان چند تیم دارند و کارهایی که باید به ترتیب توسط چند تیم انجام گیرند. منظور از کارهایی که باید به ترتیب توسط چند تیم انجام گیرد، کارهایی است که نوعا از دو یا چند بخش تخصصی متفاوت متوالی تشکیل شده است. لذا، یک تیم باید بخشی از کار که در حوزه تخصصش قرار دارد انجام دهد تا تیم بعدی بتواند کار را به پایان برساند. کارهای چند تیمی، شماره دستور کار یکسان دارند.
پلنر برآوردی از تعداد ساعت نفر مورد نیاز برای انجام کار به تفکیک نوع افراد مورد نیاز (استادکار، کارگر فنی و کارگر ساده)، تعداد ساعت خودروهای مورد نیاز (وانت، جرثقیل و بالابر) اعلام میدارد. البته مسئول گروه، میتواند با توجه به شناخت تخصصی تری که روی کارها و افراد زیر مجموعه اش دارد، این برآورد را تغییر دهد. بعضی از خودروها مثل وانت، مختص یک تیم است و بصورت اشتراکی استفاده نمیشود ولی بعضی دیگر مثل جرثقیل، بصورت اشتراکی در اختیار کل تیمهای گروه هوایی است. برخی دیگر مثل بالابر، بصورت اشتراکی توسط همه تیمهای گروهها مختلف استفاده میشود. لذا، چند تیم نمیتوانند کارهایی که نیاز به مثلا جرثقیل دارند را بصورت همزمان انجام دهند. در حال حاضر، فقط یکی از تیمهای هوایی، راننده جرثقیل دارد. لذا، در صورتی که تیم دیگری نیاز به جرثقیل داشته باشد، راننده جرثقیل باید موقتا به آن تیم منتقل شود. بعضی از افراد در یک تیم میتوانند چند نقش ایفا کنند مثلا درصورت نیاز، معمولا استاد کار، میتواند در نقش یک کارگر ساده کار کند یا راننده جرثقیل میتواند نقش یک کارگر ساده را ایفا کند. برای پوشش معضل مرخصی اعضای تیم، گاها یک نفر از یک تیم به تیم دیگری که برخی از اعضای آن به مرخصی رفته اند منتقل میشود.
تعداد نفرات و نوع افراد هر تیم ضرورتا یکسان نیست. افراد یک تیم از نوع استادکار، کارگر فنی و کارگر ساده هستند. از طرفی ممکن است اعضای تیم، در مرخصی باشند. لذا، تخصیص یک کار به یک تیم با توجه به نیاز کار (تعداد و نوع افراد مورد نیاز) و تعداد و نوع افراد تیم صورت میگیرد. باید نوعی عدالت در حجم کاری که تیمهای مختلف انجام میدهند وجود داشته باشد. درضمن، کارها وزن متفاوتی دارند مثلا یک کار سنگین 3 ساعته، معمولا وزن بیشتری نسبت به سه کار سبک 1 ساعته دارد.
ثبت وضعیت روزانه تیمهای گروه تعمیرات شبکه هوایی و وضعیت روزانه ماشین آلات
با توجه به تجزیه و تحلیل صورت گرفته از فرآیند تخصیص و برنامه ریزی کارها در امور نگهداشت منطقه غرب شرکت توزیع برق مشهد، لازم است مسئولین گروهها یا سرپرست های تیم های مربوطه، وضعیت هر تیم اعم از وضعیت پرسنل و وضعیت خودرو و ماشین آلات را ثبت کنند. برای این منظور استفاده از پنجره شکل زیر پیشنهاد میشود.
همانطور که ملاحظه میشود در بالای این پنجره، گزینه تاریخ وجود دارد تا مطابق با پنجره شکل، امکان تغییر روز و سپس، تنظیم وضعیت تیمهای گروه در آن تاریخ فراهم شود.
در بخش ابزارهای مشترک کل گروهها، جرثقیل و بالابر قرار داده شده است که تعداد آنها قابل تنظیم است. بدیهی است اگر مثلا فقط یک جرثقیل وجود داشته باشد امکان انجام همزمان دو کارِ نیازمند به جرثقیل، وجود ندارد و نباید دو کارِ نیازمند به جرثقیل، در یک زمان واحد برنامه ریزی گردد. در این پنجره، وضعیت گروه تعمیرات هوایی نشان داده شده است. این گروه شامل سه تیم است. هر تیم میتواند ابزارهای اختصاصی خودش را داشته باشد. از جمله ابزارهای اختصاصی تیم میتوان به وانت اشاره کرد. از آنجا که احتمال خراب شدن و از سرویس خارج شدن ابزارهای اختصاصی وجود دارد باید مطابق با شکل، امکان غیرفعال کردن هر ابزار اختصاصی به کمک یک دکمه رادیویی وجود داشته باشد. هر تیم تعدادی عضو دارد. ظرفیت انسانی، یعنی تعداد اعضا و نوع یا تخصص اعضای تیم یکسان نیست و باید قبلا ثبت شود. این موضوع از این جهت اهمیت دارد که سامانه بتواند کار سنگین تر یا تخصصی تر را به تیمی با ظرفیت انسانی بالاتر تخصیص دهد. به علاوه، ممکن است یکی از اعضای تیم، مرخصی باشد. لذا، باید امکان غیرفعال کردن آن عضو در آن روز وجود داشته باشد. این موضوع از این جهت اهمیت دارد که سامانه، کار را به تیمی که برخی از اعضای آن در مرخصی هستند تخصیص ندهد یا لااقل، کارهای سنگین را به برخی از اعضای آن در مرخصی هستند تخصیص ندهد. به عنوان مثال، مسئول گروه هوایی میتواند مانند شکل، عضوی از تیم1 را که در مرخصی است غیرفعال کند و وانت تیم2 که از سرویس خارج شده است را غیرفعال کند. حال سامانه میتواند با توجه به شرایط جدید تیمها، کارها را تخصیص دهد. در ضمن، سرپرست گروه باید بتواند به طور موقت، عضوی از تیمی را به تیم دیگری که برخی از اعضای آن در مرخصی هستند منتقل کند تا امکان فعالیت آن تیم نیز فراهم شود و سامانه بتواند برای آن تیم نیز کاری
ثبت نظر گروه در مورد نیازمندیهای انجام هر دستور کار ارجاع شده به گروه
براساس نظر مسئولین امور نگهداشت منطقه غرب شرکت توزیع برق مشهد، یکی از مشکلات CMMS نبود جدولی حاوی این فیلدهای کافی در مورد دستورکارهای ارجاع شده به هر گروه است. لذا، مسئول هر گروه تعمیراتی، به صورت دستی، چنین جدولی را در فایل excel ایجاد میکند تا با استفاده از آن، فرآیند تخصیص کارها به تیمهای مربوطه و برنامه ریزی آنها را انجام دهد. بخش عمده این فیلدها همان فیلدهای موجود در فرم صدور دستور کار رفع معایب شبکه و تاسیسات در CMMS هست. یعنی فیلدهای زیر:
- شماره بازدید: equ_rev_id
- شماره دستور کار: repair_id
- عنوان عیب: problem_title
- شرح عیب/فعالیت: problem_description
- توضیحات پلنر
- توضیحات مسئول امور نگهداشت
- تصاویر عیب
- آدرس: address_description
- عرض و طول جغرافیایی: point
- زمانبندی شده برای انجام از تاریخ: plan_start_date
- زمانبندی شده برای انجام تا تاریخ: plan_end_date
- تعداد استاد کار برآورد شده پلنر
- تعداد کارگر فنی برآورد شده پلنر
- تعداد کارگر ساده برآورد شده پلنر
- جمع تعداد نفر برآورد شده پلنر
- استادکار-ساعت برآورد شده پلنر
- کارگر فنی-ساعت برآورد شده پلنر
- کارگر ساده-ساعت برآورد شده پلنر
- جمع نفر-ساعت برآورد شده پلنر: estimated_man_hour
- تعداد وانت برآورد شده پلنر
- تعداد جرثقیل برآورد شده پلنر
- تعداد پلنر برآورد شده پلنر
- جمع تعداد ماشین آلات برآورد شده پلنر
- وانت-ساعت برآورد شده پلنر
- جرثقیل-ساعت برآورد شده پلنر
- بالابر-ساعت برآورد شده پلنر
- جمع ماشین آلات-ساعت برآورد شده پلنر: estimated_car_hour
علاوه بر فیلدهای یادشده، اطلاعات زیر برای تخصیص کارها به تیم ها و برنامه ریزی کارها لازم است:
- شروع بازه انجام کار ازنظر سرپرست گروه یا مسئول امور نگهداشت: repair_end_date
- پایان بازه انجام کار ازنظر سرپرست گروه یا مسئول امور نگهداشت: repair_end_date
- تعداد استاد کار مصرفی ازنظر گروه
- تعداد کارگر فنی مصرفی ازنظر گروه
- تعداد کارگر ساده مصرفی ازنظر گروه
- جمع تعداد نفر مصرفی ازنظر گروه
- استادکار-ساعت مصرفی ازنظر گروه
- کارگرفنی-ساعت مصرفی ازنظر گروه
- کارگرساده-ساعت مصرفی ازنظر گروه
- جمع نفر-ساعت مصرفی ازنظر گروه: man_hour
- تعداد وانت مصرفی ازنظر گروه
- تعداد جرثقیل مصرفی ازنظر گروه
- تعداد پلنر مصرفی ازنظر گروه
- جمع تعداد ماشین آلات مصرفی ازنظر گروه
- وانت-ساعت مصرفی ازنظر گروه
- جرثقیل-ساعت مصرفی ازنظر گروه
- بالابر-ساعت مصرفی ازنظر گروه
- جمع ماشین آلات-ساعت مصرفی ازنظر گروه: car_hour
- تعداد استاد کار مصرفی ازنظر گروه
- تعداد کارگر فنی مصرفی ازنظر گروه
- تعداد کارگر ساده مصرفی ازنظر گروه
- جمع تعداد نفر مصرفی ازنظر گروه
- استادکار-ساعت مصرفی ازنظر گروه
- کارگرفتی-ساعت مصرفی ازنظر گروه
- کارگرساده-ساعت مصرفی ازنظر گروه
باید یک API توسط واحد فناوری اطلاعات شرکت توزیع برق مشهد آماده شود تا سامانه پیشنهادی بتواند لیست دستور کارهای زمانبندی شده که توسط مسئول امور نگهداشت به گروهها ارجاع داده شده است را به کمک آن API دریافت کند تا در مرحله بعد، کار تخصیص و برنامه ریزی کارها را بصورت خودکار انجام دهد. با توجه به آماده نبودن این API، سامانه پیشنهادی به گونه ای طراحی میشود که بتواند این اطلاعات را بصورت آفلاین از یک فایل excel دریافت کند این فایل اکسل، شامل همان فیلدهای یادشده در فرم صدور دستور کار رفع معایب شبکه و تاسیسات در CMMS است. سپس، پنجره ای مطابق با شکل زیر طراحی میشود که اغلب این فیلدها را نمایش میدهد. در کنار هر ردیف یا هر دستور کار، یک کلید “مشاهده” قرار داده میشود که با کلیک روی آن، مطابق با شکل، اطلاعات تکمیلی در مورد دستور کار نشان داده میشود و در ضمن، سرپرست گروه میتواند از طریق این پنجره نظرات خود در مورد نیازمندیهای دستور کار و بازه زمانی انجام دستور کار را وارد کند. منظور از نیازمندیهای دستور کار، نیروی انسانی و ماشین آلات مورد نیاز برای اجرای دستور کار است که در دو بخش جداگانه در این پنجره قابل تنظیم است. نیروی انسانی اعم از نوع نیرو انسانی مورد نیاز و نفر ساعت مورد نیاز از هر نوع نیروی انسانی در بخش “افراد مورد نیاز” در این پنجره تنظیم میشود و ماشین آلات مورد نیاز، اعم از نوع ماشین آلات مورد نیاز و تعداد ساعت مورد نیاز برای اجرای دستور کار در بخش “ماشین آلات مورد نیاز” در این پنجره تنظیم میشود. بازه زمانی انجام دستور کار از نظر سرپرست گروه، در بخش به عنوان “ بازه زمانی انجام کار از نظر گروه” در این پنجره قابل تنظیم است. درضمن، کارهای چند تیمی احتمالا نیاز به هماهنگی بین گروهی دارد از این رو، باید امکاناتی برای مدیریت این نوع کارها فراهم کرد. از این رو، در پنجره شکل، فیلدی به نام “گروههای همکار” نمایش داده میشود که حاوی نام گروههایی همکار در یک کار چند تیمی است. اگر کلید مشاهده کنار چنین دستور کاری کلیک شود، در پنجره شکل، بخش اضافه ای به نام گروههای همکار مطابق با شکل نشان داده میشود. در این بخش، میتوان مشخص کرد که برای انجام این کار چندتیمی، نیاز به حضور همزمان تیمهاست یا تیمها باید به ترتیب خاصی در محل کار حاضر شوند. اگر با کلیک روی کلید “نیاز به حضور همزمان گروهها”، این گزینه از حالت انتخاب، خارج شود باکس “شماره ترتیب حضور این گروه” فعال میشود و میتوان شماره ترتیب این تیم در بین تیمهای همکار را مشخص کرد.
تخصیص و برنامه ریزی کارهای ارجاع شده به گروه ها
کار تخصیص و برنامه ریزی کارهای ارجاع شده به گروهها به سه شکل ممکن است:
- روش اول: برنامه ریزی کارهای ارجاع شده به یک تیم از یک گروه در یک بازه زمانی دلخواه مثلا فقط کارهای ارجاع شده امروز یا کارهای کل هفته
- روش دوم: برنامه ریزی کارهای ارجاع شده به یک گروه در یک بازه زمانی دلخواه مثلا فقط کارهای ارجاع شده امروز یا کارهای کل هفته
- روش سوم: برنامه ریزی کارهای ارجاع شده به کل گروه ها در یک بازه زمانی دلخواه مثلا فقط کارهای ارجاع شده امروز یا کارهای کل هفته
روش اول برای سرپرست تیم درنظرگرفته میشود تا در هر روز هفته و با توجه به تغییرات حاصل از ارجاع کارهای اضطراری در طول هفته، برنامه ریزی مجددی برای تعیین ترتیب و زمان اجرای کارها انجام دهد. روش دوم برای سرپرست گروه درنظرگرفته میشود که بتواند بصورت بهینه، کارهای ارجاع شده به گروه را به تیمهای مختلف گروه تخصیص دهد و ترتیب و زمان اجرای هر کار توسط هر تیم را مشخص کند. روش سوم، برای سرپرست امور نگهداشت درنظرگرفته میشود که بتواند بصورت بهینه، کارهای ارجاع شده به کلیه گروهها را به گروهها و تیمهای مربوطه تخصیص دهد و ترتیب و زمان اجرای هر کار توسط هر تیم را مشخص کند. مزیت روش سوم این است که به نحو موثرتری، کارهای چند تیمی که نیاز به حضور همزمان یا به ترتیبِ تعدادی تیم از چند گروه دارد را تخصیص و برنامه ریزی میکند. لازم به ذکر است که مثلا اگر انجام کاری نیاز به حضور همزمان یا به ترتیبِ تعدادی تیم از چند گروه داشته باشد این گروهها میتوانند در پنجره شکل، بازه پیشنهادی برای انجام چنین کاری را ثبت کنند. سپس، سامانه میتواند بطور بهینه، کار تخصیص چنین کاری به چند تیم را در بازه ذکر شده، انجام دهد. لازم به ذکر است که در حال حاضر، برای انجام کارهای چند تیمی از چند گروه مختلف، هماهنگی های قبلی انجام میگیرد تا تیم های مربوطه به صورت همزمان یا به ترتیب خاصی برای انجام کار به محل انجام کار مراجعه کنند. روش سوم برنامه ریزی کارهای ارجاع شده، نیاز به هماهنگی بین گروهی را از بین می برد. پس از تخصیص و برنامه ریزی کارها توسط سامانه پیشنهادی، دو نوع گزارش تهیه میشود:
- گزارش تصویری
- گزارش جدولی
در گزارش تصویری، محل هر کار مطابق با پنجره شکل روی نقشه نشان داده میشود و اطلاعات زیر را میتوان روی نقشه دید:
- کارهای تخصیص داده شده به یک تیم در یک روز از هفته با رنگ یکسانی نمایش داده میشوند.
- کارهای تخصیص داده شده به یک تیم در روزهای متفاوت هفته با رنگ متفاوت ولی با فام یکسانی نمایش داده میشوند مثلا آبی پررنگ برای یک روز و آبی کم رنگ برای روز دیگر.
- کارهای تخصیص داده شده به تیم های مختلف با رنگ متفاوت و فام متفاوت نمایش داده میشوند مثلا آبی برای یک تیم و قرمز برای تیم دیگر.
- کارهای تخصیص داده شده برای گروههای مختلف در پنجره های مختلف نمایش داده میشود تا پنجره خیلی شلوغ نشود.
- مسیر حرکت یا ترتیب انجام کارها توسط هر تیم در هر روز با یالهایی که از مبدا به مقصد کشیده میشود و فلشهای رو یال مشخص میشود.
- کلید بالا سمت راست پنجره، امکان فیلتر کردن تیمها را مطابق با شکل فراهم میکند. به کمک این کلید میتوان مثلا فقط کارهای تیم1 را نمایش داد.
- ممکن است قیدهایی که سرپرست گروهها برای انجام کارها گذاشته اند به نحوی باشد که سامانه پیشنهادی نتواند آنها را طبق خواسته گروهها برنامه ریزی کند. چنین کارهایی در پنجره با دایره های رنگی مشخص میشوند. مثلا اگر کاری دیرتر از زمان پیشنهادی سرپرست گروه برنامه ریزی شده باشد مطابق با شکل با دایره سبز مشخص میشود. اگر کاری زودتر از زمان پیشنهادی سرپرست گروه برنامه ریزی شده باشد با دایره آبی مشخص میشود. کاری که نیاز به حضور همزمان چند تیم داشته باشد با دایره زرد نشان داده میشود.
- درصورت کلیک کردن روی هر کار، اطلاعات جامعی در مورد کار برنامه ریزی شده مطابق با شکل ظاهر میشود. ازجمله، زمان رسیدن تیم به محل کار، زمان پایان کار توسط تیم، میزان تاخیر در برنامه، میزان تعجیل در برنامه.
در صورت استفاده از گزارش جدولی برای نمایش کارهای تخصیص داده شده و برنامه ریزی شده توسط سامانه پیشنهادی، پس از تخصیص و برنامه ریزی کارها به هر یک از سه روش یاد شده، سرپرست تیم، سرپرست گروه یا مسئول امور نگهداشت میتوانند برنامه تولید شده برای انجام کارها را به دلخواه تغییر دهند. این کار میتواند با کشیدن یک کار به کمک ماوس و رها کردن آن در قبل یا بعد کار دیگر انجام شود.
مشخصات و قابلیتهای فنی سامانه
مقدمه و مراحل اجرای اولیه برنامه
این بخش شامل دستورالعملهای مورد نیاز برای نصب و راهاندازی اولیه سیستم میباشد.
مراحل نصب و راهاندازی
برای اجرای موفقیتآمیز برنامه، ابتدا باید محیط مجازی را راهاندازی و وابستگیها را نصب کنید:
جدول مراحل اجرای اولیه
| مرحله | دستور | شرح اقدام |
|---|---|---|
| آمادهسازی | python -m venv powerscheduling |
ایجاد محیط ایزولهشده |
| فعالسازی | powerscheduling\Scripts\activate |
فعالسازی محیط مجازی (مثال برای ویندوز) |
| نصب وابستگی | pip install -r requirements.txt |
نصب تمام کتابخانههای مورد نیاز برنامه |
| اجرای هسته | python app.py |
اجرای فایل اصلی برنامه (راهاندازی سرور) |
| دسترسی | http://localhost:5000/ |
آدرس دسترسی به برنامه در مرورگر |
تحلیل ساختار ورودیهای سیستم
سیستم برنامهریزی بهینه برای عملکرد صحیح به سه مجموعه داده ورودی نیاز دارد: کارها، گروهها و پارامترهای برنامهریزی.
اطلاعات کارها (Jobs/Tasks)
این جدول ساختار اطلاعاتی هر واحد کاری را نشان میدهد:
ساختار ورودی: کارها
| فیلد ورودی | شرح |
|---|---|
| ID | شناسه منحصربهفرد کار |
| اولویت | سطح اهمیت کار (1, 2, یا 3) |
| ساعت-نفر تخمینی | برآورد زمان لازم برای انجام کار (نفر-ساعت) |
| موقعیت | آدرس متنی و مختصات جغرافیایی (lat, lon) |
| قیود | محدودیتهای زمانی و منابع (مثلاً نیاز به جرثقیل) |
اطلاعات گروهها (Crews/Teams)
این جدول ساختار اطلاعات مربوط به منابع اجرایی را نشان میدهد:
ساختار ورودی: گروهها
| فیلد ورودی | شرح |
|---|---|
| ID / برچسب | شناسه یا نام تیم |
| ظرفیت | تعداد اعضا و حداکثر ساعت کاری هر عضو |
| مهارتها | تخصصهای اعضا (با جداکننده کاما) |
| موقعیت | محل استقرار یا پایگاه تیم (lat, lon) |
تحلیل ساختار خروجی برنامه
پس از تولید برنامه، خروجیها در دو فرمت نمایشی و یک فرمت دادهای (اکسل) تولید میشوند که شامل معیارهای کلیدی برنامهریزی هستند.
معیارهای کلیدی برنامهریزی
الگوریتم بر اساس معیارهای زیر، کارایی برنامه را محاسبه میکند:
- مجموع نفر-ساعت محقق شده (Actual Man-Hours): این معیار نشاندهنده میزان کار انجام شده توسط تیم در یک روز است:
MH_{Actual} = ∑_{i=1}^{N} (T_{i} × M)که در آن T_{i} مدت زمان اجرای کار iام و M تعداد اعضای تیم است.
- مجموع فاصله مسیر (Total Route Distance): این معیار بهینهسازی مسیر را نشان داده و برای محاسبه هزینههای انتقال استفاده میشود:
D_{Total} = D_{Base → J_1} + ∑_{i=1}^{N-1} D_{J_i → J_{i+1}} + D_{J_N → Base}
خروجی مسیر یابی و اکسل
کل زیر نمونه ای از خروجی برنامه و مسیریابی برای یک گروه را در یک روز نشان می دهد.
فایل خروجی اکسل شامل تمام جزئیات برنامهریزی شده در ستونهای دستهبندی شده زیر است:
ساختار خروجی اکسل (Excel Output Structure)
| دستهبندی ستونها | ستونهای مورد انتظار در اکسل | هدف از این دادهها |
|---|---|---|
| شناسه کار | Job ID, Job Priority, Job Address | مرجع یکتا و اولویت کار |
| مشخصات تیم | Team ID, Team Members, Team Capacity | اختصاص کار به منبع مناسب |
| زمانبندی | Day, Start Time, Duration, Finish Time (Job) | زمانبندی دقیق هر کار |
| معیارهای عملکرد | Total Man-Hours (Daily), Total Route Distance (Daily) | ارزیابی میزان بهرهوری و کارایی الگوریتم |
| موقعیت مکانی | Job Lat, Job Lon, Distance from Previous Stop | تحلیلهای جغرافیایی و مسیریابی |
نمونه ای از خروجی برنامه
زیرساخت فنی
این سامانه با استفاده از تکنولوژیهای مدرن و متنباز توسعهیافته است تا پایداری و کارایی بالایی را تضمین کند. زیرساخت فنی اصلی آن شامل موارد زیر است:
لایهی Backend
برای پیادهسازی لایه کاربردی و ایجاد APIها، از زبان برنامهنویسی Python به همراه فریمورک سبک و انعطافپذیر Flask استفاده شده است.
پایگاه داده
برای ذخیرهسازی دادهها، از پایگاه داده SQLite به دلیل سادگی و قابلیت حمل استفاده شده است. مدیریت مدلهای داده و تعامل با پایگاه داده، توسط کتابخانه SQLAlchemy به عنوان یک ابزار ORM (Object-Relational Mapping) انجام میشود.
سرویسهای خارجی
برای بهینهسازی مسیریابی، از سرویس OSRM (Open Source Routing Machine) استفاده میشود. همچنین، برای تبدیل مختصات جغرافیایی به آدرسهای قابل فهم (Geocoding)، سرویس Nominatim یکپارچهسازی شده است.
رابط کاربری (Frontend)
رابط کاربری (Frontend) با استفاده از فناوریهای استاندارد وب شامل HTML5، CSS3 و JavaScript در حال توسعه است.
الگوریتمهای به کار رفته
قلب سیستم، یک الگوریتم بهینهسازی ترکیبی است که برای حل مسئله زمانبندی چندوجهی طراحی شده است. الگوریتم اصلی پیادهسازی شده، یک الگوریتم حریصانه است که در بخش قبل به تفصیل تشریح شد. مسئله را میتوان به صورت یک مدل بهینهسازی ترکیبیاتی فرمولبندی کرد که هدف آن کمینهسازی یک تابع هزینه چندمعیاره تحت مجموعهای از قیود سخت است. مدل ریاضی کلی مسئله به شکل زیر قابل بیان است:
Minimize ∑_{i ∈ Jobs} ∑_{j ∈ Groups} ∑_{d ∈ Days} C_{ijd} × x_{ijd}
Subject to ∑_{j,d} x_{ijd} = 1 ∀ i ∈ Jobs
∑_{i} t_i x_{ijd} ≤ T_{jd} ∀ j ∈ Groups, d ∈ Days
x_{ijd} ∈ {0,1}
که در آن x_{ijd} یک متغیر دودویی است که اگر کار i به گروه j در روز d تخصیص داده شود مقدار ۱ و در غیر این صورت ۰ میگیرد. C_{ijd} هزینه تخصیص و t_i زمان لازم برای انجام کار i است. پیادهسازی حاضر یک راهحل کارا برای این مدل NP-hard ارائه میدهد.
دستاوردهای محقق شده
فاز اول پروژه منجر به دستاوردهای قابل توجهی در زمینه پیادهسازی عملی و تحلیل داده شد. هسته اصلی سیستم با موفقیت پیادهسازی شده و قابلیتهای کلیدی آن در محیط آزمایشی اثبات شده است. سیستم قادر است دادههای ورودی را در قالب JSON دریافت کرده، آنها را به صورت پایدار در پایگاه داده ذخیره نماید و با استفاده از الگوریتم بهینهسازی، یک برنامه زمانبندی کارا تولید کند. این برنامه شامل تخصیص دقیق هر کار به یک گروه در یک روز و ساعت مشخص، به همراه محاسبه مسیرهای بهینه حرکتی است.
یکی از دستاوردهای مهم، طراحی و پیادهسازی یک اسکریپت تولید داده نمونه (fix_coordinates_geocoding2.py) است. این اسکریپت با استفاده از توزیع گوسی، دادههای جغرافیایی خوشهای و واقعگرایانه تولید میکند و سپس با فراخوانی سرویس Nominatim، آدرسهای واقعی را برای این مختصات استخراج مینماید. این امر امکان تست سیستم با دادههای بسیار نزدیک به واقعیت را فراهم میکند.
نمونه خروجی تولید شده توسط سیستم، یک ساختار JSON است که برنامه هفتگی را به تفکیک گروه و روز نمایش میدهد. هر ورودی در این برنامه شامل شناسه کار، زمان شروع، مدت زمان انجام کار، ساعتهای سفر و مسافت طی شده است.
نمونه برنامه زمانبندی
{
"plan": {
"crew-01": {
"Saturday": [
{
"job_id": "job-001",
"start": 7.5,
"duration_elapsed": 2.0,
"person_hours": 4.0,
"travel_hours": 0.25,
"distance_km": 15.2,
"notes": "assigned by heuristic (cost=12.34)"
}
]
}
},
"unassigned": ["job-015"]
}
مزایا و دستاوردهای مورد انتظار
با تکمیل نهایی و استقرار این سامانه، انتظار میرود که سازمان شاهد بهبودهای چشمگیری در شاخصهای کلیدی عملکرد باشد. مزایای اصلی این سیستم عبارتند از کاهش چشمگیر زمان صرف شده برای برنامهریزی دستی، بهینهسازی مسیرهای حرکتی و در نتیجه کاهش مصرف سوخت و زمان جابجایی، و افزایش بهرهوری کلی گروههای تعمیراتی از طریق تخصیص هوشمندانه کارها. این موارد مستقیماً به کاهش هزینههای عملیاتی منجر خواهند شد.
| مزیت | درصد بهبود مورد انتظار |
|---|---|
| کاهش زمان برنامهریزی | 80% |
| کاهش مسافت پیموده شده | 15%-20% |
| افزایش بهرهوری اکیپها | 25% |
| کاهش هزینههای عملیاتی | 30% |
علاوه بر مزایای قابل اندازهگیری، این سامانه دستاوردهای کیفی مهمی نیز به همراه خواهد داشت. با اتوماسیون فرآیند برنامهریزی، کیفیت خدمات به مشترکین و زمان پاسخگویی به درخواستها بهبود مییابد. شفافیت و عدالت در تخصیص کارها باعث افزایش رضایت شغلی پرسنل میشود و وابستگی به دانش فردی و خطاهای انسانی در برنامهریزی به حداقل میرسد. در نهایت، این سیستم یک ابزار تصمیمساز دادهمحور برای مدیران فراهم میکند که به آنها کمک میکند تصمیمات آگاهانهتر و کارآمدتری اتخاذ نمایند.
برنامه آینده و نتیجهگیری
| بخش کار | شرح فعالیتها |
|---|---|
| بخش دوم | درک عمیق دادههای سیستم CMMS |
| بخش سوم | اجرای الگوریتم بهینهسازی روی دادههای واقعی |
| بخش چهارم | طراحی GUI کاربرپسند توسعه API برای ارتباط با سامانه CMMS تست یکپارچهسازی با دادههای واقعی |
نتیجهگیری
فاز اول این پروژه با موفقیت به پایان رسیده و پایههای فنی و معماری سیستم طراحی و پیادهسازی شده است. دستاوردهای اصلی این فاز عبارتند از:
- طراحی معماری ماژولار و قابل توسعه
- پیادهسازی هسته مرکزی سیستم
- تعریف ساختارهای داده جامع
- تولید خروجی عملیاتی نمونه
سیستم فعلی توانایی حل مسائل در مقیاس متوسط را دارد و آماده گسترش به مقیاس واقعی میباشد. این سیستم پتانسیل بالایی برای ایجاد تحول در فرآیند برنامهریزی و افزایش بهرهوری عملیات نگهداری و تعمیرات شرکت را داراست.
با سپاس،
تیم فنی پروژه
شرکت توزیع نیروی برق شهرستان مشهد