تیم برنامهنویسی پیاستور
هزینه سفارش:
۲۹۹,۰۰۰ تومان
تخصصی و منحصر به فرد بودن این اثر، تضمین کننده بهای محصول نسبت به آثار مشابه است.
مسأله زمانبندی فرآیندها و وظایف (Task Scheduling) یکی از بنیادیترین و چالشبرانگیزترین مباحث در علوم کامپیوتر، مهندسی نرمافزار، سیستمهای عامل و سیستمهای چندپردازندهای است. هدف نهایی در این مسائل، تخصیص بهینه مجموعهای از کارها به تعدادی پردازنده یا ماشین موازی است، به گونهای که کل زمان اجرای کارها به حداقل ممکن برسد و بهرهوری منابع به بیشترین حد ارتقا یابد.
الگوریتم LPT یک الگوریتم زمانبندی حریصانه (Greedy) و قطعی است که برای مسأله زمانبندی ماشینهای موازی همگن (P∣∣Cmax) به کار میرود. منطق حاکم بر این الگوریتم بر یک فرض ساده و در عین حال هوشمندانه بنا شده است: کارهایی که به زمان پردازش بیشتری نیاز دارند، بیشترین تأثیر را در افزایش طول زمانبندی نهایی خواهند داشت. بنابراین اگر کارهای سنگین و طولانی در ابتدای فرآیند پردازش قرار گیرند و پردازندهها با آنها درگیر شوند، در انتهای کار میتوان وظایف سبکتر و کوتاهتر را به عنوان بالانسر و پرکننده شکافهای زمانی میان پردازندهها استفاده کرد تا اختلاف بار کاری ماشینها به حداقل برسد.
۱. دریافت لیست کارها: کلیه وظایف ورودی به همراه زمان اجرای هر کدام دریافت میشوند.
۲. مرتبسازی نزولی: تمامی کارها بر اساس زمان اجرای آنها از بزرگترین به کوچکترین مرتب میشوند.
۳. تخصیص اولیه: به تعداد ماشینهای موجود (M)، اولین کارهای طولانی از ابتدای لیست به هر یک از پردازندهها اختصاص مییابد.
۴. تخصیص تکرارشونده پویا: در هر لحظه که یکی از پردازندهها زودتر از سایرین کار خود را به پایان میرساند (یا کمترین مجموع بار پردازشی را تا آن لحظه دارد)، کار بعدی با طولانیترین زمان باقیمانده از صف، به آن پردازنده اختصاص داده میشود.
۵. محاسبه طول نهایی (Makespan): فرآیند تا اتمام تمام کارها ادامه یافته و طول زمانبندی برابر با بیشترین زمان اتمام در بین تمامی پردازندهها خواهد بود.
برای درک عمیق نحوه عملکرد الگوریتم، یک سناریوی واقعی را بررسی میکنیم:
فرض کنید ۸ کار با زمانهای پردازش زیر به سیستم تحویل داده شدهاند:
Jobs={6,2,13,2,7,1,4,8}
هدف این است که این وظایف را با استفاده از روش LPT بین ۲ پردازنده موازی (M1,M2) زمانبندی کنیم.
ابتدا مقادیر را از بزرگ به کوچک مرتب میکنیم:
Sorted={13,8,7,6,4,2,2,1}
طول کل زمانبندی (Makespan) برابر با ۲۲ خواهد بود.
پروژه به صورت شیءگرا و با استفاده از کنترلهای ویندوز فرمز پیادهسازی شده است. ساختار کدها خوانا، ماژولار و دارای متدهای مجزا برای مدیریت رابط کاربری و اجرای محاسبات هسته الگوریتم است.
کاربر میتواند زمان هر کار را در جعبه متن وارد کرده و با فشردن دکمه افزودن، آن را به لیست وظایف اضافه کند یا با دکمه پاکسازی، لیست را ریست نماید:
private void BtnAdd_Click(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(TxtJob.Text))
{
LstJobList.Items.Add(TxtJob.Text);
TxtJob.Clear();
TxtJob.Focus();
}
}
private void button2_Click(object sender, EventArgs e)
{
LstJobList.Items.Clear();
}
در کلاس پردازشی، متدهایی برای دریافت لیست، پاکسازی آرایهها و تخصیص هوشمند کارها در نظر گرفته شده است. یکی از مهمترین توابع، متد FindMinSumIndex است که مشخص میکند در هر مرحله کدام پردازنده کمترین بار کاری تجمیعی را دارد تا کار بعدی به آن ماشین ارسال شود:
public LPT(AlgorithmType AlgType)
{
Alg = AlgType;
}
public void SetJobsInList(ListBox lstjobs)
{
ClearArray(ref ListJob);
for (int i = 0; i < CountJob; i++)
{
ListJob[i] = int.Parse(lstjobs.Items[i].ToString());
}
}
private void ClearArray(ref int[] A)
{
for (int i = 0; i < COUNTJOBINARRAY; i++)
A[i] = -1;
}
private void ClearArray(ref int[,] A)
{
for (int i = 0; i < COUNTJOBINARRAY; i++)
for (int j = 0; j < COUNTJOBINARRAY; j++)
A[i, j] = -1;
}
private int FindMinSumIndex(int[,] TempWorkList)
{
int MinIndex = 0;
int MinValue = TempWorkList[0, COUNTJOBINARRAY - 1];
for (int i = 1; i < CountM; i++)
{
if (TempWorkList[i, COUNTJOBINARRAY - 1] < MinValue)
{
MinValue = TempWorkList[i, COUNTJOBINARRAY - 1];
MinIndex = i;
}
}
return MinIndex;
}
همراه با فایلهای سورس کد، یک مستند متنی ۶ صفحهای در قالب مایکروسافت ورد (DOCX) ارائه شده است که شامل بخشهای زیر است:
این پروژه در محیط Microsoft Visual Studio 2013 توسعه داده شده است و با نسخههای بالاتر ویژوال استودیو (۲۰۱۵، ۲۰۱۷، ۲۰۱۹ و ۲۰۲۲) نیز کاملاً سازگار است.
برای اجرای پروژه:
۱. فایل ZIP دریافتی را روی سیستم خود استخراج (Extract) کنید.
۲. فایل پروژه با پسوند .sln را با Visual Studio باز نمایید.
۳. پروژه را در حالت Debug یا Release کامپایل و اجرا (F5) کنید.
۴. مقادیر کارهای دلخواه خود را در کادر متنی وارد کرده و نتیجه زمانبندی LPT را به صورت آنی مشاهده نمایید.
سورس کد کامل، تستشده و به همراه گزارش کار ۶ صفحهای الگوریتم زمانبندی LPT در سی شارپ #C آماده دریافت است. بلافاصله پس از پرداخت از طریق درگاههای بانکی امن و معتبر، لینک دانلود مستقیم فایل فشرده حاوی سورس کد و مستند Word در پنل کاربری شما فعال خواهد شد. }
سورس کد الگوریتم زمانبندی LPT در سی شارپ #C با استفاده از Microsoft Visual Studio 2013 نوشته شده است و دارای گزارش کار 6 صفحه ای در Word است و بصورت کامل توسط گروه پشتیبانی پی استور تست و اجرا شده است. اثر مذکور دارای نشان تضمین کیفیت پی استور میباشد. برای دانلود اثر آن را خریداری کنید.
برای مشاهده ویدیوی هر بخش، روی عنوان آن کلیک کنید.
تیم برنامه نویسی پی استور یکی از اولین گروههای تشکیل شده در مجموعه آموزشی پی استور میباشد. این تیم از اساتید مجرب و فارغ التحصیلان رشتههای فنی و مهندسی تشکیل شده که در زمینههای مختلف برنامهنویسی و تهیه سورس کد فعال هستند.
اطلاعات و جزئیات کامل این محصول
جهت تسلط عمیقتر و تکمیل مهارتهای خود، یادگیری این سرفصلها پیشنهاد میشود.
هزینه سفارش:
۲۹۹,۰۰۰ تومان
دیدگاهها و نظرات
ستاره
گزارش کار محصول برای توضیح و ارائه خیلی خوب بود.
مدیریت و پشتیبانی
نظرات و پیشنهادات خود را با ما در میان بگذارید.