کمترین کمترین[۱۸]: این الگوریتم با مجموعه U از کارهای نگاشت نشده شروع می شود. سپس، برای هر کاری عضو مجموعه U مجموعه ای از کمترین زمان تکمیل آن کار بر روی تمام ماشین ها را محاسبه می کند.
M = {min0≤j<µ (ct(ti, mj)), for each ti€U, }
که µ برابر است با تعداد ماشین ها، ti برابر است با کارi ام و mj برابر است با ماشین j ام می باشد و ct(ti, mj) برابر است با زمان اتمام کار iام بر روی ماشین jام می باشد.
در مرحله بعد، کاری که کمترین زمان تکمیل در مجموعه M را دارد، انتخاب شده و به ماشین مورد نظر نگاشت می شود. در پایان کار نگاشت شده از مجموعه U حذف می شود و فرایند گفته شده تا زمانی که تمام کارها نگاشت شود (U خالی شود) ادامه می یابد.
بیشترین کمترین[۱۹]: این الگوریتم بسیار شبیه به مکانیزم کمترین کمترین می باشد. الگوریتم بیشترین کمترین هم با مجموعه U حاوی کارهای نگاشت نشده شروع می شود. سپس، برای هر کاری عضو مجموعه U مجموعه ای از کمترین زمان تکمیل آن کار بر روی تمام ماشین ها محاسبه می شود. در مرحله بعد، کاری که بیشترین زمان تکمیل در مجموعه M را دارد، انتخاب شده و به ماشین مورد نظر نگاشت می شود. در پایان کار نگاشت شده از مجموعه U حذف می شود و فرایند گفته شده تا زمانی که تمام کارها نگاشت شود (U خالی شود) ادامه می یابد.
مثالی را فرض کنید که مجموعه U دارای تعداد زیادی کار با زمان اجرای کوچک باشد و یک کار با زمان اجرای بزرگ داشته باشد. با نگاشت کار با زمان اجرا طولانی تر به بهترین ماشین در ابتدای کار، باعث می شود این کار همزمان با کارهای با زمان اجرای کوتاه اجرا شود. در چنین مواردی عملکرد الگوریتم بیشترین کمترین بهتر از کمترین کمترین می باشد زیرا در الگوریتم کمترین کمترین ابتدا کارهای با زمان اجرای کوتاه زمانبندی می شوند.
حق رای[۲۰]: عملکرد این الگوریتم مثل الگوریتم کمترین کمترین میباشد با این تفاوت که علاوه بر کمترین زمان اتمام دومین کمترین زمان اتمام هم برای هر کار محاسبه می شود و اختلاف این دو زمان برای هر کار روی منابع مختلف محاسبه می شود. کاری که دارای بیشترین اختلاف باشد برای زمانبندی انتخاب و به منبعی که کمترین زمان اتمام را داشته اختصاص داده می شود.
علاوه بر این الگوریتم های فوق الگوریتم های اکتشافی و فرا اکتشافی مانند الگوریتم Duplex ،SA، GA، GSA، Tabu search و … نیز در این زمینه استفاده می شود.
۲-۹ گذری بر تحقیقات پیشین
در این قسمت شرح کوتاهی از مفاهیم اولیه جریان کارها و همچنین به بررسی چند الگوریتم حریصانه که برای حل مسئله زمانبندی جریان کارها ارائه شده است میپردازیم.
۲-۹-۱ مفاهیم اولیه
فرض کنید نشان دهنده یک مجموعه m تایی از منابع و نشان دهنده یک مجموعه n تایی از کارها که بین آن ها وابستگی وجود دارد می باشد. جهت نمایش وابستگی بین کارها از گراف های جهت دار بدون دور[۲۱] استفاده می کنیم. گره های گراف نشان دهنده کارها و یال های گراف نشان دهنده وابستگی بین کارها (محدودیت اولویت) میباشد. مقادیر هر یال هزینه انتقال داده مورد نیاز این کار می باشد (در صورتی که منبع اجرا کننده مشترک نباشند). بطور مثال فرض کنید از گره ۱ به گره ۳ یک یال ارتباطی وجود دارد؛ به عبارتی کار ۳ وابسته به کار ۱ است. حال اگر کار ۳ و کار ۱ روی دو منبع مختلف زمانبندی شود باید ۱۲ واحد زمانی (هزینه درج شده بر روی یال کار ۱ به ۳) برای انتقال خروجی کار ۱ صرف کنیم. شکل (۲-۷ و ۲-۸) نمونه ای از یک جریان کاری و زمان اجرا را نشان می دهد را نشان می دهد.
در جریان کارها گراف با یک گره شروع و به یک گره خاتمه مییابد. برای نمایش یک جریان کار از دو ماتریس ETC و DTTS استفاده می شود. ماتریسETC یک ماتریس n*m است که n تعداد کارها و m تعداد منابع را مشخص می کنند. ETC (i,j) نشان دهنده زمان مورد انتظار پردازش کار i روی ماشین j میباشد. ماتریس DTTS وابستگی دادهای و زمان انتقال داده، بین کارها را نمایش می دهد. که یک ماتریس n*n است. DTTS (i,j) نشان دهنده زمان انتقال داده از کار i به کارj است که اگر این مقدار صفر باشد نشاندهنده عدم وابستگی کار j به i میباشد.
Resource | Job | ||
r3 | r2 | r1 | |
۹ | ۱۶ | ۱۴ | n1 |
۱۸ | ۱۹ | ۱۳ | n2 |
۱۹ | ۱۳ | ۱۱ | n3 |
۱۷ | ۸ | ۱۳ |