شکل ۳-۲ فلوچارت Elitist TLBO[39]
فصل چهارم:
حل مسئله
۴-۱ مقدمه
مسئله زمان بندی پروژه با منابع محدود پیشینه ای بیش از ۴۰ سال دارد. این مسئله تعمیمی از مسئله کار-خرید[۵۵] میباشد و یک مسئله NP-HARD است. برای حل این مسئله دو رویکرد روشهای دقیق و ابتکاری وجود دارند[۴۰]. حل مصادیق واقعی این مسئله به دلیل پیچیـدگی، گستردگی و دشواری با روشهای دقیق نظیر برنامه ریزیریاضی، برنامه ریزی پویا و یا شاخه و کران غیر عملی است[۴۱]. البته در ادبیات موضوع کاربرد روشهای دقیق در حل مصادیق کوچکتر این مسئله نیز گزارش شدهاست. به عنوان نمونـه, دکرو و همکاران در خصوص برنامهریزی ریاضی[۴۲]، اکملی و همکاران[۴۳]، همچنین کاروترز و همکاران[۴۴]، در خصوص روشهای شمارشی مثل برنامه ریزی پویا، پتروویچ[۴۵]؛ دمیولمیستر و همکاران[۴۶] در خصوص روشهای شاخه و کران به این مسئله پرداختهاند. به دلیل ناکارآمد بودن روشهای دقیق، اکثر مسائل واقعی زمانبندی پروژه با منابع محدود با رویکردهای ابتکاری حل میشوند. بسیاری از رویکردهای ابتکاری حل مسئله برنامه ریزی پروژه با منابع محدود در سال ۲۰۰۶ میلادی مورد بررسی قرار گرفتند[۴۷]. آنها این رویکردها را در چهار گروه با عناوین زیر دسته بندی کردند :
(( اینجا فقط تکه ای از متن درج شده است. برای خرید متن کامل فایل پایان نامه با فرمت ورد می توانید به سایت feko.ir مراجعه نمایید و کلمه کلیدی مورد نظرتان را جستجو نمایید. ))
۱- رویکردهای مبتنی بر قواعد اولویت بندی مانند روش نمونه گیری تصادفی[۴۸].
۲- رویکردهای مبتنی بر روشهای فراابتکاری مانند الگوریتم ژنتیک[۴۹و۵۰]، الگوریتم جستجوی ممنوع[۵۱]، الگوریتم شبیه سازی تبریدی[۵۲]، الگوریتم مورچه[۵۳].
۳- رویکردهای مبتنی بر روش های ابتکاری غیر متعارف مانند روشهای مبتنی بر جستجوی محلی[۵۴]، روش های تکاملی و مبتنی بر جمعیتی از جواب مثل الگوریتم جستجوی پراکنده[۵۵].
۴- رویکردهای مبتنی بر سایر روشهای ابتکاری مانند بهسازی پیشرو پسرو[۵۶] و روش های تجزیه شبکه[۵۷].
در جدول ۴-۱ سیرتکاملی حل مسئله زمانبندی پروژه با منابع محدود آورده شدهاست. استفاده از الگوریتم TLBO در دسته دوم قرار میگیرد. استفاده از این الگوریتم برای حل این مسئله تاکنون گزارش نشدهاست و این پایان نامه از اولین کارها در این زمینه میباشد.
جدول ۴-۱ سیرتکاملی حل مسئله زمانبندی پروژه با منابع محدود
۴-۲ سوابق اخیر حل مسئله زمانبندی پروژه با منابع محدود
در سالهای اخیر الگوریتمهای فراابتکاری زیادی برای حل مسائل پیچیده RCPSP ارائه شدهاست. در ادامه به برخی از این الگوریتمها میپردازیم.
- الگوریتم پرندگان با الهام از رفتار جمعی پرندگان و ماهیها و بکارگیری مفاهیم الگوریتمهای تکاملی, معرفی شد. در این الگوریتم، تعدادی ذره که راه حلهای کاندیدای مسئله هستند، یک ازدحام را تشکیل میدهند. این ذرات در فضای مسئله حرکت کرده و براساس نتایج فردی خود و نتایج جمعی سعی می کنند تا راه حل بهینه در فضای جستجو را بیابند. این روش بوسیله ابعاد و غیرخطی بودن مسئله، خیلی تحت تأثیر قرار نگرفته و نتایج خوبی در محیطهای استاتیک, نویزی و محیطهای بطور پیوسته در حال تغییر میگیرد. این ویژگیها به علاوه سادگی پیادهسازی، عدم الزام بر پیوستگی تابع هدف و توانایی وفق دادن به محیط پویا باعث شده که این الگوریتم در حوزههای بسیار مختلفی بکار برده شود. در سال ۲۰۰۸ زنگ و همکارانش الگوریتم بهبود یافته پرندگان را برای مسئله RCPSP بکار بردهاند[۵۸]. در سال ۲۰۰۸ نیز جاربویی و همکارانش الگوریتم ترکیبی پرندگان برای این مسئله بکار گرفتهاند[۵۹].
- الگوریتم ژنتیک بصورت گسترده در حل این مسئله بکار رفتهاست. هر راه حل بوسیله یک کروموزم مشخص میگردد. هر کروموزم دارای چند ژن است. ژنها بصورت رشتههایی هستند که برای نمایش قوانین اولویت و نمایش حالت و زمان انجام هر فعالیت بکار میروند. ژنهای مربوط به کروموزم اولیه بصورت تصادفی انتخاب میگردند. عملگرهای الگوریتم ژنتیک (تقاطع و جهش( برای بدست آوردن و حفظ کردن کروموزمهای خوب استفاده میگردند و مشخصات هر نسل را برای نسل بعد نگهداری می کنند. سعی میگردد، فضای بیشتری از پاسخهای ممکن کاوش گردند و بهترین از نظر تابع هدف را پیدا کنند. در سال ۲۰۰۹ مندس و همکارانش الگوریتم ژنتیک مبتنی بر کلید تصادفی را برای حل مسئله RCPSP بکار بردهاند[۶۰].
- الگوریتم زنبور براساس رفتارکلونی زنبورها عمل می کند. در الگوریتم زنبور هر منبع غذایی نشان دهنده یک جواب شدنی مسئله میباشد. مقدار شهد هر منبع غذایی متناظر با مقدار تابع هدف جواب شدنی میباشد. سه نوع زنبور در این الگوریتم تعریف میگردد. زنبورهای راهنما، آن دسته از زنبورهایی هستند که نسبت به دیگر زنبورها از موقعیت بهتری برخوردارهستند. زنبورهای سرباز زنبورهایی هستند که به صورت تصادفی در همسایگی زنبورهای راهنما به دنبال منبع غذایی میگردند. در نهایت زنبورهای دسته سوم به صورت تصادفی منابع غذایی جدید را جستجو می کنند. هر چرخه الگوریتم شامل سه گام اساسی میباشد. گام اول انتخاب زنبورهای راهنما میباشد. گام دوم، فرستادن زنبورهای سرباز در همسایگی زنبورهای راهنما برای پیدا کردن منابع غذایی جدید،گام سوم فرستادن زنبورهای کاوشگر به صورت تصادفی به دنبال منابع غذایی جدید میباشد. در پیادهسازی الگوریتم زنبورها در مسئله RCPSP از یک لیست اولویت استفاده می شود. هر زنبور نشان دهنده یک موقعیت در فضای جستجو میباشد. اگر مسئله n فعالیت داشتهباشد آنگاه زنبورها در یک فضای n بعدی حرکت می کنند. هر موقعیت بعنوان یک لیست اولویت در نظر گرفته می شود. هر عنصر این لیست یک فعالیت را نمایندگی می کند و مقدار متناظر با آن عنصر، اولویت آن فعالیت را مشخص می کند. بردار موقعیت هر زنبور، مقادیر اولویتn فعالیت را مشخص می کنند. در الگوریتم مصنوعی زنبورها نیز سه نوع زنبور داریم. زنبورهای کارگر، زنبورهایی میباشند که با در نظر گرفتن منابع غذایی شناخته شده قبلی خود به دنبال پیدا کردن یک منبع غذایی جدید میگردند. زنبورهای ناظر با بهره گرفتن از اطلاعاتی که زنبورهای کارگر در اختیارشان میگذارند، به دنبال منبع غذایی جدید میباشند. در نهایت زنبورهای دسته سوم به صورت تصادفی منابع غذایی جدید را جستجو می کنند. در سال ۲۰۱۱ اکبری و همکارانش الگوریتم زنبورهای مصنوعی را برای حل مسئله RCPSP بکار بردهاند[۶۱]. الگوریتم گروهی زنبورها درسال ۲۰۱۰ توسط اکبری ارائهگردید. این الگوریتم تلفیقی از الگوریتم پرندگان و الگوریتم مصنوعی زنبورها میباشد. در این الگوریتم سه نوع زنبور تعریف میگردد: زنبورهای کارگر، زنبورهای ناظر و زنبورهای کاوشگر. زنبورهای کارگر، زنبورهایی میباشند که با در نظر گرفتن منابع غذایی شناخته شده قبلی خود و بهترین جواب یافته شده تاکنون توسط خود زنبور و بهترین جواب یافت شده تاکنون دربین تمامی زنبورها، به دنبال پیداکردن یک منبع غذایی جدید میگردند. زنبورهای ناظر به استفاده از اطلاعاتی که زنبورهای کارگر در اختیارشان میگذارند و با در نظر گرفتن منابع غذایی شناخته شده قبلی خود، به دنبال منبع غذایی جدید میباشند. در نهایت زنبورهای کاوشگر به صورت تصادفی در همسایگی خودشان منابع غذایی جدید را جستجو می کنند. در سال ۲۰۱۱ اکبری و زیارتی و ضیغمی الگوریتمهای زنبور، زنبور مصنوعی و گروهی زنبورها را برای حل RCPSP بکار گرفتند و کارایی آنها را با هم مقایسه نمودند[۳]. این الگوریتمها پاسخهای رقابتپذیری با دیگر الگوریتمها را ارائه می دهند. در سال ۲۰۱۲ نیز ضیغمی و اکبری الگوریتم زنبور مصنوعی را با الگوریتم ژنتیک پیوند زدند و برای حل مسئله RCPSP استفادهکردند[۶۲].
- الگوریتم کرم شبتاب براساس روشنایی یک گروه از کرم شب تاب طراحی شده است. نور چشمک زن برای یک کرم شبتاب حیاتی است و برای یافتن غذا و جفتگیری و محافظت در مقابل شکارچیان از آن استفاده می کند.کرمهای شبتاب به سمت مکانهای با نور بیشتر جذب میشوند. کرمی که درخشندگی کمتری دارد به سمت کرمی که درخشندگی بیشتری دارد جذب می شود. اگر کرم شبتابی درخشندهتر از کرم مورد نظر نباشد، بطور تصادفی حرکت می کند. روشنایی با افزایش فاصله نیز کاهش مییابد. میزان روشنایی نور چشمکزن بعنوان تابع هدف در نظر گرفته می شود. در حل مسئله RCPSP هر کرم شب تاب یک زمانبندی برای مسئله را نشان میدهد. مسئلهای با n فعالیت دارای کرمهای شبتاب با فضای جستجوی n بعدی است. هر موقعیت بعنوان یک لیست اولویت در نظر گرفته می شود و هر عنصر این لیست یک فعالیت را نمایندگی می کند و مقدار متناظر با آن، اولویت آن فعالیت را مشخص می کند. بردار موقعیت هر کرم شبتاب، مقادیر اولویت n فعالیت را مشخص می کنند. این الگوریتم برای حل مسئله RCPSP دارای سه فاز اصلی است. در فاز اول کرمهای شبتاب در فضای جستجوی تصادفی قرار میگیرند. یعنی یک مجموعه از زمانبندیهای تصادفی، شروع کننده الگوریتم است. در فاز دوم، زمانبندیهای اولیه بصورت تکراری بهبود داده میشوند تا به شرط پایان برسیم و در فاز سوم، بهترین زمانبندی پیدا شده بوسیله گروه کرم شبتابها به عنوان نتیجه نهایی بازگشت داده می شود. در سال ۲۰۱۲ سنایی و اکبری الگوریتم کرم شبتاب را برای حل مسئله RCPSP بکار بردهاند[۶۳].
روشهای فراابتکاری بکار گرفتهشده در حل مسئله RCPSP به پاسخ کاملا بهینه نمیرسند و پاسخهای نزدیک به پاسخ بهینه را مییابند. احتمال اینکه الگوریتمهای فراابتکاری در دام بهینه محلی نیز بیفتند وجود دارد. همچنین برخی الگوریتمهای فراابتکاری عمر زیادی ندارند و در چند سال اخیر ابداع شده اند. محققان بهینه سازی نیز زمینه تحقیقی مختلفی دارند و هریک الگوریتم مورد نظر خود را بکار میگیرند. همانگونه که قبلا ذکر شد مسئله RCPSP بصورتهای مختلفی نیز مدلسازی می شود و تابع هدف مختلفی برای آن تعریف میگردد. درواقع هیچ روش سیستماتیکی برای انتخاب یک روش فراابتکاری در حل تمام نمونههای مسئله RCPSP وجود ندارد تا بطور دقیق مشخص کرد که کدامیک بهتر جواب میدهد. بنابراین انتظار می رود استفاده از روشهای فراابتکاری جدید بتوانند آلترناتیوهایی را برای حل این نوع از مسائل تهیه کنند. در ادامه با جزئیات بیشتر حل مسئله را تشریح میکنیم.
۴-۳ حل مسئله زمانبندی با الگوریتمهای فراابتکاری سازنده
در یک دستهبندی الگوریتمهای فراابتکاری برای حل مسئله زمانبندی به دو دسته الگوریتمهای ابتکاری سازنده[۵۶] و الگوریتمهای ابتکاری بهبود دهنده[۵۷]، تقسیم میشوند. در الگوریتمهای سازنده، فعالیتها یک به یک وارد فرایند زمانبندی میشوند تا همه فعالیتها زمانبندی شوند. در این الگوریتمها ، پروژه در ابتدا خالی فرض میشوند. در الگوریتمهای ابتکاری بهبود دهنده، در ابتدا پروژه خالی نیست و شامل یک سری زمانبندیهای ممکن است و الگوریتم در پی بهبود این زمانبندیهاست. معمولا پاسخهای الگوریتمهای سازنده بعنوان زمانبندی اولیه به الگوریتمهای ابتکاری بهبود دهنده داده میشوند. در این پایان نامه از الگوریتم فراابتکاری مبتنی بر آموزش- یادگیری بعنوان الگوریتم بهبود دهنده استفاده شدهاست. غالب الگوریتمهایی که در بخش ۴-۱ و ۴-۲ ذکر شدند از نوع بهبود دهنده هستند.
در الگوریتمهای ابتکاری سازنده، سیاست زمانبندی[۵۸] و قوانین اولویت بندی[۵۹] دو مولفه اصلی میباشند. سیاست زمانبندی با در نظر گرفتن زمان شروع فعالیتهای مختلف، در مورد زمانبندی فعالیتها تصمیم گیری می کند. تولید زمانبندی سری و تولید زمانبندی موازی از مهمترین سیاستهای زمانبندی هستند که در ادامه بررسی میکنیم. قوانین اولویت بندی مشخص می کنند که فعالیتها چگونه و با چه ترتیبی در طول فرایند برای زمانبندی، انتخاب میشوند. به عنوان مثال، فعالیتی که دارای کوتاهترین زمان فعالیت است، فعالیتی که دارای بیشترین فعالیتهای وابسته است، فعالیتی که زمان شروع آن کمتر است، فعالیتی که دیرترین زمان شروع دارد؛ نمونههایی از قوانین اولویت بندی هستند. با قوانین اولویت بندی لیستی بدست می آید که فعالیتها را رتبه بندی می کند. در این لیست، رتبه هر فعالیت از پیشنیازش باید کمتر باشد. در مثال ۵-۱ نمونه ای از ایجاد لیست فعالیتها براساس قوانین اولویت بندی آمده است.
مثال ۴-۱
در شکل ۴-۱ پروژهای با ۹ فعالیت تعریف شدهاست. فعالیتهای شماره ۰ و ۸ مجازی هستند و شروع و پایان پروژه را مشخص می کنند. در بالای هر گره، مدت زمان هر فعالیت و در پایین هر گره میزان نیاز فعالیت به منبع مشخص شده است. یک نوع منبع با ظرفیت کل ۵ واحد نیز داریم .
۳
۲
شکل ۴-۱ شبکه فعالیتهای متناظر با مثال ۴-۱[۶۲]