CTC برای کارهای ابری محدود به هزینه است، در CTC بین زمان و هزینه در طول پردازش زمان بندی کردن توافقی صورت می گیرد. این الگوریتم به دو زیر الگوریتم CTC-MC و CTC-MT تقسیم می شود. CTC-MC هزینه را در مهلت تعیین شده ی کاربر به حداقل می رساند، CTC-MT زمان اجرا را در بودجه ی تعیین شده ی کاربر به حداقل می رساند. هر دو این الگوریتم ها به کاربر اجازه می دهد تا یک توافق قابل قبول را بین زمان اجرا و سطح اجرا برقرار کند.
۲-۳-۲-۶ چندین گردش کاری با چندین محدودیت QOS (MQMW)
[۴۹]MQMW به منظور زمان بندی گردش های کاری متعدد ابرهای محاسباتی که محدود به چند کیفیت سرویس[۵۰] هستند، می باشد. این الگوریتم بر اساس ویژگی های کلیدی ابرها، فاکتورهایی را بررسی می کندکه زمان اجرای نهایی و هزینه گردش کاری را تحت تاثیر قرار می دهد.
۲-۳-۲-۷ الگوریتم زودترین زمان پایان ناهمگن (HEFT)[51]
HEFT برای زمان بندی چند پردازنده ای نمودار وظیفه برنامه کاربردی است و شامل سه فاز وزن کردن، رتبه بندی و نگاشت می باشد، این الگوریتم ابتدا میانگین زمان اجرا را برای هر کار و نیز میانگین زمان ارتباط بین منابع از هر دو کار متوالی را محاسبه می کند، سپس کارایی کارها را، روی یک تابع مرتب (غیر افزایشی) رتبه بندی می کند. کارها با مقدار رتبه بالاتر اولویت بالاتری دارند، در هنگام انتخاب منبع کارها با توجه به اولویتشان زمان بندی می شوند و منبع به کاری که آن را در اسرع وقت (نزدیک ترین زمان ممکن) کامل کند، اختصاص داده می شود.
۲-۳-۳ الگوریتم های فوق ابتکاری
روش های فوق ابتکاری از رایج ترین روش ها برای حل مسائل بهینه سازی پیچیده هستند. این روش ها در مسائل بهینه سازی که فضای حالت بسیار بزرگی دارند، از یک راه حل اولیه (و یا مجموعه ای از راه حل های اولیه در روش هایی همچون الگوریتم های ژنتیک) آغاز کرده و در یک فرایند تکراری آن راه حل را بهبود می بخشند تا به جواب نسبتا بهینه دست پیدا کنند. این روش ها دارای یک ساختار عمومی برای کدگذاری مسئله، و یک راهبرد کلی برای حل مسئله می باشند. یکی از متداول ترین روش های فوق ابتکاری، الگوریتم های ژنتیک هستند. این الگوریتم ها از یک جمعیت اولیه از راه حل ها آغاز شده و با بهره گرفتن از عملگرهای ژنتیک همچون انتخاب، تولید مثل و جهش، نسل بعدی از راه حل ها را تولید می کنند که کیفیت بهتری نسبت به نسل قبلی دارند. بهبود نسل ها به طور تکراری ادامه می یابد تا به راه حل های نزدیک به بهینه برسیم. از الگوریتم های ژنتیک برای حل مسئله زمان بندی کارها بر روی سیستم های ناهمگون استفاده شده است.]۲۰[
از دیگر روش های فوق ابتکاری شناخته شده، روش سردسازی شبیه سازی شده[۵۲] است که ایده آن از نحوه ایجاد ساختارهای کریستالی منظم با بهره گرفتن از روش سردسازی گرفته شده است.]۲۱[
در یک تحقیق دیگر یک الگوریتم مبتنی بر جستجوی هدایت شده قطعی[۵۳] به نام الگوریتم Push-Pull برای زمان بندی کارها در سیستم های ناهمگون ارائه شده است. عبارت قطعی به این معنا است که در ایجاد راه حل های داوطلب[۵۴] از روال های قطعی استفاده می گردد، برخلاف روش های قبلی همچون الگوریتم های ژنتیک که در آن راه حل های کاندید به صورت تصادفی ایجاد می گردند. این الگوریتم ابتدا با بهره گرفتن از یک الگوریتم شناخته شده مانند HEFT، یک زمان بندی اولیه برای مسئله ایجاد می نماید در یک فرایند تکراری، این زمان بندی با بهره گرفتن از دو روال Push و Pull بهبود می یابد تا به جواب نسبتا بهینه دست یابد. روال Push، ابتدا مسیر بحرانی زمان بندی فعلی را پیدا کرده و سعی می کند با انتقال بعضی از کارهای آن بر روی منابع دیگر، زمان خاتمه کار را کاهش دهد. اما روال Pull، ابتدا در زمان بندی فعلی به دنبال فضاهای آزاد بین کارها بر روی منابع جستجو می کند، و سپس سعی می کند با انتقال برخی کارها بر روی این فضاهای آزاد، زمان اجرا را کاهش دهد. این دو روال تا زمانی که هیچ بهبودی امکان پذیر نباشد، تکرار می گردند.]۲۲[
۲-۴ زمان بندی بلادرنگ[۵۵]
سیستم بلادرنگ، سیستمی است که در آن زمان پاسخگویی به وقایع خیلی اهمیت دارد و صحت درستی یک فرایند تنها وابسته به صحت منطقی آن نباشد، بلکه به زمانی که در آن اجرا می شود نیز وابسته باشد. سیستم های بلادرنگ به دو دسته بلادرنگ سخت[۵۶] و بلادرنگ نرم[۵۷] تقسیم می شوند.
بلادرنگ سخت سیستمی است که در یک مهلت زمانی یا پاسخ می دهد یا هیچ. به عبارت دیگر در مدل سخت کار انجام شده توسط سیستم، بایستی دقیقا به موقع انجام شود و هیچ گونه تاخیری قابل قبول نیست و اگر نه، سبب ناتوانی سیستم میشود. (کارهای بلادرنگ سخت تاخیر را مجاز نمی دانند)
سیستم بلادرنگ نرم سیستمی است که در بعضی از مواقع، آماده نشدن پاسخ در مهلت زمانی تعیین شده قابل تحمل است. به عبارت دیگر در مدل نرم اگر یک ارائه دهنده خدمات نتواند در مهلت تعیین شده کار را انجام دهد و زمان اجرا بیش از مهلت تعیین شده باشد یک جریمه دریافت می کند و باعث کاهش سودمندی می شود. (کارهای بلادرنگ نرم تاخیر را مجاز می دانند)
در یک سیستم بلادرنگ، کارها به دو نوع متناوب[۵۸] و غیر متناوب[۵۹] تقسیم می شوند. کارهای متناوب با دوره تناوب مشخص تکرار می شوند و کارهای غیر متناوب به صورت تصادفی رخ می دهند(زمان رخ دادن مشخصی ندارند).
برخی از الگوریتم های زمان بندی بلادرنگ
۲-۴-۱-۱الگوریتم نرخ یکنواخت[۶۰]
یک الگوریتم دارای اولویت است که به هر کار ، اولویتی متناسب با فرکانس آن رخداد اختصاص داده می شود . به عنوان مثال اگر کار ۱، دارای دوره تناوب ۲۰ میلی ثانیه است و به آن اولویت ۵۰ داده می شود و به کار۲ ، دارای دوره تناوب ۱۰۰ میلی ثانیه است اولویت ۱۰ داده می شود.
۲-۴-۱-۲ الگوریتم ابتدا زودترین مهلت[۶۱](EDF)
این الگوریتم می گوید، باید لیستی آماده اجرا داشته باشیم که در آن کارها به ترتیب مهلتشان مرتب شده اند. سپس کاری انجام می شود که اول صف باشد یعنی کاری که کمترین مهلت را دارد ( فرصتش از همه کمتر است).
۲-۴-۱-۳ الگوریتم کمترین لختی[۶۲]
این الگوریتم می گوید کاری انتخاب شود که کمترین لختی را دارد.
تعریف مقدار لختی یک کار :حداکثر مقدار زمانی که کار می تواند در آن مدت آماده باقی بماند و اجرا نشود. (مثال : اگر یک پروسسی ۲۰۰ میلی ثانیه وقت نیاز داشته باشد و ۲۵۰ میلی ثانیه مهلت داشته باشد، لختی آن ۵۰ میلی ثانیه است.)
۲-۴-۱-۴ زمان بندی دو سطحی[۶۳]
تاکنون فرض کرده ایم که کارهای آماده اجرا همه در حافظه اصلی قراردارند ، اما اگر حافظه اصلی به اندازه کافی نباشد برخی از کارهای قابل اجرا در حافطه جا نمی گیرند و باید روی دیسک نگهداری شوند . زمان تعویض کار برای کاری که در دیسک است، به علت مبادله از دیسک به حافظه اصلی ، بسیار بزرگتر از حالتی است که به کار برویم در حافظه اصلی قرار دارد. از بین کارهای آماده اجرا ، زمان بند برای اختصاص کار به خادم از الگوریتم زمان بندی دو سطحی استفاده می کند. این زمان بند شامل دو سطح زمان بند سطح بالا و زمان بند سطح پایین است. زمان بند سطح بالا تعیین مب کند که کدام کارها در حافظه باشند و کدام کارها در دیسک باشند و زمان بند سطح پایین از بین آن ها که در حافظه هستند، انتخاب می کند پردازنده به کدام یک اختصاص داده شود.
۲-۵ الگوریتم رقابت استعماری[۶۴]
الگوریتم رقابت استعماری، همانند سایر روشهای بهینهسازی تکاملی، با تعدادی جمعیت اولیه شروع میشود. در این الگوریتم، هر عنصر جمعیت، یک کشور نامیده میشود. کشورها به دو دسته مستعمره[۶۵] و استعمارگر[۶۶] تقسیم میشوند. هر استعمارگر، بسته به قدرت خود، تعدادی از کشورهای مستعمره را به سلطه خود درآورده و آنها را کنترل میکند. سیاست جذب و رقابت استعماری، هسته اصلی این الگوریتم را تشکیل میدهند. مطابق سیاست جذب که به صورت تاریخی، توسط کشورهای استعمارگری همچون فرانسه و انگلیس، در مستعمراتشان اعمال میشد، کشورهای استعمارگر با بهره گرفتن از روشهایی همچون احداث مدارس به زبان خود، سعی در از خود بی خود کردن کشور مستعمره، با از میان بردن زبان کشور مستعمره و فرهنگ و رسوم آن داشتند.
۲-۵-۱ مراحل الگوریتم رقابت استعماری
شکل ۲-۲ فلوچارت الگوریتم رقابت استعماری را نشان میدهد. همانند دیگر الگوریتمهای تکاملی، این الگوریتم، نیز با تعدادی جمعیت اولیه تصادفی که هر کدام از آنها یک “کشور” نامیده میشوند؛ شروع میشود. تعدادی از بهترین عناصر جمعیت به عنوان امپریالیست انتخاب میشوند. باقیمانده جمعیت نیز به عنوان مستعمره، در نظر گرفته میشوند. استعمارگران بسته به قدرتشان، این مستعمرات را با یک روند خاص که در ادامه میآید؛ به سمت خود میکشند. قدرت کل هر امپراطوری[۶۷]، به هر دو بخش تشکیل دهنده آن یعنی کشور امپریالیست (به عنوان هسته مرکزی) و مستعمرات آن، بستگی دارد. در حالت ریاضی، این وابستگی با تعریف قدرت امپراطوری به صورت مجموع قدرت کشور امپریالیست، به اضافه در صدی از میانگین قدرت مستعمرات آن، مدل شده است. با شکلگیری امپراطوریهای اولیه، رقابت امپریالیستی میان آنها شروع میشود. هر امپراطوریای که نتواند در رقابت استعماری، موفق عمل کرده و بر قدرت خود بیفزاید (و یا حداقل از کاهش نفوذش جلوگیری کند)، از صحنه رقابت استعماری، حذف خواهد شد. بنابراین بقای یک امپراطوری، وابسته به قدرت آن در جذب مستعمرات امپراطوریهای رقیب، و به سیطره در آوردن آنها خواهد بود. در نتیجه، در جریان رقابتهای امپریالیستی، به تدریج بر قدرت امپراطوریهای بزرگتر افزوده شده و امپراطوریهای ضعیفتر، حذف خواهند شد. امپراطوریها برای افزایش قدرت خود، مجبور خواهند شد تا مستعمرات خود را نیز پیشرفت دهند.
شکل۲-۲ فلوچارت الگوریتم رقابت استعماری]۱۱[
با گذشت زمان، مستعمرات، از لحاظ قدرت به امپراطوریها نزدیکتر خواهند شد و شاهد یک نوع همگرایی خواهیم بود. حد نهایی رقابت استعماری، زمانی است که یک امپراطوری واحد در دنیا داشته باشیم، با مستعمراتی که از لحاظ موقعیت، به خود کشور امپریالیست، خیلی نزدیک هستند.
۲-۵-۱-۱ شکل دهی امپراطوریهای اولیه
در بهینه سازی، هدف یافتن یک جواب بهینه بر حسب متغیرهای مسئله، است. ما یک آرایه از متغیرهای مسئله را که باید بهینه شوند، ایجاد میکنیم. در الگوریتم ژنتیک این آرایه، کروموزوم نامیده میشود. در اینجا نیز آن را یک کشور مینامیم. در یک مسئلهی بهینهسازی بعدی، یک کشور، یک آرایهی است. این آرایه به صورت زیر تعریف میشود.
مقادیر متغیرها در یک کشور، به صورت اعداد اعشاری نمایش داده میشوند. از دیدگاه تاریخیـفرهنگی، اجزای تشکیل دهنده یک کشور را میتوان ویژگی های اجتماعی– سیاسی آن کشور، همچون فرهنگ، زبان، ساختار اقتصادی و سایر ویژگیها در نظر گرفت. شکل ۲-۳ این مسئله را به خوبی نشان میدهد. مطابق این شکل متغیرهای مجهول تابع هزینه که ما در طی فرایند بهینهسازی به دنبال آنها میگردیم، در نگاه اجتماعیـسیاسی ویژگیهای تاریخی و فرهنگیای هستند که یک کشور را به نقطه مینیمم تابع هزینه رهنمون میسازند. در حقیقت در حل یک مسئله بهینهسازی توسط الگوریتم معرفی شده، ما به دنبال بهترین کشور (کشوری با بهترین ویژگی های اجتماعیـسیاسی) هستیم. یافتن این کشور در حقیقت معادل یافتن بهترین پارامترهای مسئله است که کمترین مقدار تابع هزینه را تولید میکنند. شکل۲-۳ اجزای اجتماعی سیاسی تشکیل دهنده یک کشور را نشان می دهد.
فرهنگ
زبان
سیاست اقتصادی
مذهب
…..
شکل۲-۳ اجزای اجتماعی سیاسی تشکیل دهنده یک کشور]۱۱[
برای شروع الگوریتم، تعداد کشور اولیه را ایجاد میکنیم. تا از بهترین اعضای این جمعیت (کشورهای دارای کمترین مقدار تابع هزینه) را به عنوان امپریالیست انتخاب میکنیم. باقیمانده تا از کشورها، مستعمراتی را تشکیل میدهند که هرکدام به یک امپراطوری تعلق دارند. برای تقسیم مستعمرات اولیه بین امپریالستها، به هر امپریالیست، تعدادی از مستعمرات را که این تعداد، متناسب با قدرت آن است، میدهیم. برای انجام این کار، با داشتن هزینه همه امپریالیستها، هزینه نرمالیزه آنها را به صورت زیر در نظر میگیریم.
(۲-۱)
که در آن ، هزینه امپریالست nام، بیشترین هزینه میان امپریالیستها و ، هزینه نرمالیزه شده این امپریالیست، میباشد. هر امپریالیستی که دارای هزینه بیشتری باشد (امپریالیست ضعیف تری باشد)، دارای هزینه نرمالیزه کمتری خواهد بود. با داشتن هزینه نرمالیزه، قدرت نسبی نرمالیزهی هر امپریالیست، به صورت زیر محاسبه شده و بر مبنای آن، کشورهای مستعمره، بین امپریالسیتها تقسیم میشوند.
(۲-۲)
از یک دید دیگر، قدرت نرمالیزه شده یک امپریالیست، نسبت مستعمراتی است که توسط آن امپریالیست اداره میشود. بنابراین تعداد اولیهی مستعمرات یک امپریالیست برابر خواهد بود با
(۲-۳)
که در آن ، تعداد اولیه مستعمرات یک امپراطوری و نیز تعداد کل کشورهای مستعمره موجود در جمعیت کشورهای اولیه است. نیز تابعی است که نزدیکترین عدد صحیح به یک عدد اعشاری را میدهد. با در نظر گرفتن برای هر امپراطوری، به این تعداد از کشورهای مستعمره اولیه را به صورت تصادفی انتخاب کرده و به امپریالیست nام میدهیم. با داشتن حالت اولیه تمام امپراطوریها، الگوریتم رقابت استعماری شروع میشود. روند تکامل در یک حلقه قرار دارد که تا برآورده شدن یک شرط توقف، ادامه مییابد.