شکل ۴-۶ نتیجه زمانبندی سری پسرو برای مثال۴-۴[۶۴]
مقاله - پروژه

 

 

 

حال در مرحله بعد زمانبندی سری پیشرو را انجام می­دهیم. فعالیت­ها را بر اساس زودترین زمان شروع که در مرحله قبل بدست می ­آید، اولویت­ بندی می­کنیم. ابتدا فعالیت۳ سپس فعالیت۲ و به همین ترتیب تا آخرین فعالیت یعنی فعالیت ۸ را به روش سری زمانبندی می­کنیم. . نتیجه زمانبندی سری پسرو در شکل ۴-۷ نمایش داده شده­است.
برای همین مثال می­توان زمانبندی موازی پسرو و زمانبندی موازی پیشرو را نیز انجام دهیم. شکل­های ۴-۸ و ۴- ۹ به ترتیب نتایج این زمانبندی­ها را نشان می­دهد.

 

 

 

 

 

 

شکل ۴-۷ نتیجه زمانبندی سری پیشرو برای مثال۴-۴[۶۴]

 

 

 

 

 

 

 

 

 

 

شکل ۴-۸ نتیجه زمانبندی موازی پسرو برای مثال۴-۴[۶۴]

 

 

 

 

 

 

 

شکل ۴-۹ نتیجه زمانبندی موازی پیشرو برای مثال۴-۴[۶۴]

 

 

 

۴-۴ حل مسئله زمانبندی پروژه با منابع محدود به وسیله الگوریتم فراابتکاری بهبود دهنده مبتنی بر آموزش- یادگیری
همانگونه که در بخش ۴-۳ بیان شد، الگوریتم­های ابتکاری بهبود دهنده، در ابتدا پروژه خالی نیست و شامل یک سری زمانبندی­های ممکن است و الگوریتم در پی بهبود این زمانبندی­هاست. خروجی الگوریتم­های فراابتکاری سازنده (مانند روش­های سری و موازی) به الگوریتم­های بهبوددهنده داده می­شوند، تا نتایج بهتری کسب شود. در فصل ۳ الگوریتم بهینه­سازی مبتنی بر آموزش- یادگیری (TLBO) معرفی شد. این الگوریتم را اولین بار برای حل مسئله RCPSP بکار گرفته­ایم. در این الگوریتم تعدادی فراگیر (دانش ­آموز) داریم. هر دانش ­آموز معادل یک زمانبندی شدنی است. تعداد فعالیت­ها نیز معادل تعداد موضوعات تدریس است. حل مسئله RCPSP با الگوریتم ETLBO دارای چند مرحله است، که در ادامه توضیح داده شده­است.
۴-۴-۱ ایجاد جمعیت اولیه
ابتدا به دنبال تعدادی جواب شدنی به عنوان جمعیت اولیه برای مسئله RCPSP هستیم. برای تولید هر جواب شدنی که معادل یک دانش ­آموز است، ابتدا یک جایگشت از اعداد صحیح بین ۱ تا m را بصورت تصادفی ایجاد می­کنیم، m تعداد فعالیت­ها است. هر عدد تولید شده، نماینده یک فعالیت است. نگارش­های جدید نرم­افزار مطلب، تابعی بنام randperm[68] برای تولید اعداد صحیح تصادفی غیر تکراری دارد که می­توان از آن برای تولید جایگشت مورد نظر استفاده نمود. روش دیگر و عمومی­تر این است که m عدد تصادفی بین ۰ و ۱ تولید کنیم و سپس این اعداد را بصورت نزولی مرتب ­کنیم. یعنی آرایه­ای m عنصری و مرتب از اعداد تصادفی تولید می­ شود، اندیس عناصر آرایه را بعنوان شماره فعالیت در نظر می­گیریم، در نتیجه جایگشتی از شماره فعالیت­ها تولید می­ شود. بنابراین براساس جایگشت­ها، دو لیست شامل لیست اعداد تصادفی و لیست شماره فعالیت­های متناظر با اعداد تصادفی را داریم. لیست فعالیت­ها، هنوز روابط پیش­نیازی را در نظر نگرفته­است. فعالیت­ها را به صورت نزولی ( از m به ۱) و به ترتیب، در لیست فعالیت­هایی که بدست آورده­ایم، جستجو می­کنیم و جای آن فعالیت در لیست را با جای پیش­نیازی از آن فعالیت که بزرگترین اندیس دارد و پس از فعالیت مورد نظر قرار دارد، تعویض می­کنیم. در واقع درلیست فعالیت­ها، مکان­هایی که روابط پیش­نیازی را نقض می­ کنند، پیدا می­کنیم و جای آن را با پیش­نیازی که بزرگترین اندیس دارد، تعویض می­کنیم. همچنین می­توانستیم برای اعمال شرط پیش­نیازی، از انتهای لیست فعالیت­هایی، که از اعداد تصادفی ساختیم، یکی یکی فعالیت­ها را چک کنیم و هر فعالیت که شرط پیش­نیازی را نقض کرده­ باشد با اولین پیش­نیازش در لیست جابجا کنیم. با تکرار این عمل برای همه فعالیت­ها، لیستی از فعالیت­ها، بدست می ­آید که در آن قوانین پیش­نیازی رعایت شده است. حال یک لیست فعالیت­های قابل زمانبندی شدن داریم که معادل یک فراگیر(دانش ­آموز) است. به این لیست به اختصار لیست فعالیتِ شدنی[۶۹] می­گوییم. روش بالا را n بار یعنی به تعداد جمعیت، تکرار می­کنیم. n تعداد دانش ­آموزان نیز است.

 

 

 

 

 

 

شکل ۴-۱۰ گراف فعالیت یک پروژه[۶۴]

 

 

موضوعات: بدون موضوع  لینک ثابت


فرم در حال بارگذاری ...