سـورس کد

الگوریتم زمانبندی LPT در سی شارپ #C

برنامه‌نویس:

تیم برنامه‌نویسی پی‌استور

(دیدگاه کاربر 2)
امتیاز 5.00 از 5

هزینه سفارش:

۲۹۹,۰۰۰ تومان

تخصصی و منحصر به فرد بودن این اثر، تضمین کننده بهای محصول نسبت به آثار مشابه است.

مسأله زمانبندی فرآیندها و وظایف (Task Scheduling) یکی از بنیادی‌ترین و چالش‌برانگیزترین مباحث در علوم کامپیوتر، مهندسی نرم‌افزار، سیستم‌های عامل و سیستم‌های چندپردازنده‌ای است. هدف نهایی در این مسائل، تخصیص بهینه مجموعه‌ای از کارها به تعدادی پردازنده یا ماشین موازی است، به گونه‌ای که کل زمان اجرای کارها به حداقل ممکن برسد و بهره‌وری منابع به بیشترین حد ارتقا یابد.

مبانی نظری و منطق کارکرد الگوریتم زمانبندی LPT

الگوریتم LPT یک الگوریتم زمانبندی حریصانه (Greedy) و قطعی است که برای مسأله زمانبندی ماشین‌های موازی همگن () به کار می‌رود. منطق حاکم بر این الگوریتم بر یک فرض ساده و در عین حال هوشمندانه بنا شده است: کارهایی که به زمان پردازش بیشتری نیاز دارند، بیشترین تأثیر را در افزایش طول زمانبندی نهایی خواهند داشت. بنابراین اگر کارهای سنگین و طولانی در ابتدای فرآیند پردازش قرار گیرند و پردازنده‌ها با آن‌ها درگیر شوند، در انتهای کار می‌توان وظایف سبک‌تر و کوتاه‌تر را به عنوان بالانسر و پرکننده شکاف‌های زمانی میان پردازنده‌ها استفاده کرد تا اختلاف بار کاری ماشین‌ها به حداقل برسد.

مراحل گام‌به‌گام اجرای الگوریتم LPT:

۱. دریافت لیست کارها: کلیه وظایف ورودی به همراه زمان اجرای هر کدام دریافت می‌شوند.

۲. مرتب‌سازی نزولی: تمامی کارها بر اساس زمان اجرای آن‌ها از بزرگ‌ترین به کوچک‌ترین مرتب می‌شوند.

۳. تخصیص اولیه: به تعداد ماشین‌های موجود ()، اولین کارهای طولانی از ابتدای لیست به هر یک از پردازنده‌ها اختصاص می‌یابد.

۴. تخصیص تکرارشونده پویا: در هر لحظه که یکی از پردازنده‌ها زودتر از سایرین کار خود را به پایان می‌رساند (یا کمترین مجموع بار پردازشی را تا آن لحظه دارد)، کار بعدی با طولانی‌ترین زمان باقی‌مانده از صف، به آن پردازنده اختصاص داده می‌شود.

۵. محاسبه طول نهایی (Makespan): فرآیند تا اتمام تمام کارها ادامه یافته و طول زمانبندی برابر با بیشترین زمان اتمام در بین تمامی پردازنده‌ها خواهد بود.

بررسی یک مثال عملی و ملموس از زمانبندی LPT

برای درک عمیق نحوه عملکرد الگوریتم، یک سناریوی واقعی را بررسی می‌کنیم:

فرض کنید ۸ کار با زمان‌های پردازش زیر به سیستم تحویل داده شده‌اند:

هدف این است که این وظایف را با استفاده از روش LPT بین ۲ پردازنده موازی () زمانبندی کنیم.

گام اول: مرتب‌سازی نزولی کارها

ابتدا مقادیر را از بزرگ به کوچک مرتب می‌کنیم:

گام دوم: تخصیص کارها به پردازنده‌ها

  • کار ۱۳ به پردازنده داده می‌شود. (بار )
  • کار ۸ به پردازنده داده می‌شود. (بار )
  • اکنون بار کمتر است، پس کار بعدی یعنی ۷ به می‌رسد. (بار )
  • اکنون بار کمتر است (۱۳ در برابر ۱۵)، پس کار بعدی یعنی ۶ به داده می‌شود. (بار )
  • اکنون بار کمتر است (۱۵ در برابر ۱۹)، پس کار بعدی یعنی ۴ به داده می‌شود. (بار )
  • بار هر دو برابر است (۱۹)، پس کار ۲ به می‌رود. (بار )
  • اکنون بار کمتر است (۱۹ در برابر ۲۱)، پس کار ۲ بعدی به M2M2 داده می‌شود. (بار )
  • در نهایت کار آخر یعنی ۱ به یکی از پردازنده‌ها (مثلاً ) داده می‌شود. (بار )

چینش نهایی کارها روی پردازنده‌ها:

  • پردازنده اول (): کارهای   ←\leftarrow مجموع زمان = ۲۲
  • پردازنده دوم (): کارهای ←\leftarrow مجموع زمان = ۲۱

طول کل زمانبندی (Makespan) برابر با ۲۲ خواهد بود.

تحلیل فنی و معماری سورس کد در C#‎

پروژه به صورت شیءگرا و با استفاده از کنترل‌های ویندوز فرمز پیاده‌سازی شده است. ساختار کدها خوانا، ماژولار و دارای متدهای مجزا برای مدیریت رابط کاربری و اجرای محاسبات هسته الگوریتم است.

افزودن و مدیریت کارها در رابط کاربری

کاربر می‌تواند زمان هر کار را در جعبه متن وارد کرده و با فشردن دکمه افزودن، آن را به لیست وظایف اضافه کند یا با دکمه پاک‌سازی، لیست را ریست نماید:

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();
}

کلاس هسته الگوریتم LPT

در کلاس پردازشی، متدهایی برای دریافت لیست، پاک‌سازی آرایه‌ها و تخصیص هوشمند کارها در نظر گرفته شده است. یکی از مهم‌ترین توابع، متد 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;
}

تصویر خروجی برنامه در سورس کد الگوریتم زمانبندی LPT در سی شارپ

الگوریتم زمانبندی LPT در سی شارپ #C

امکانات و ویژگی‌های برجسته پروژه

  • واسط کاربری تعاملی (GUI): طراحی فرم ساده و روان در محیط Windows Forms برای ورود پویا و دلخواه زمان اجرای کارها و تعیین تعداد پردازنده‌ها.
  • نمایش گام‌به‌گام نتایج: نمایش لیست کارهای ورودی، لیست کارهای مرتب‌شده و جدول تخصیص دقیق هر کار به هر پردازنده به صورت شفاف.
  • محاسبه خودکار Makespan: اعلام خودکار زمان کل سپری‌شده برای اتمام تمام وظایف.
  • گزارش کار ۶ صفحه‌ای قابل ویرایش: شامل فایل Word حاوی تعاریف تئوری الگوریتم زمانبندی LPT، حل دستی مثال‌ها، فلوچارت و تحلیل خط به خط کدهای سی شارپ.
  • کدنویسی بهینه‌شده: پیاده‌سازی اصولی آرایه‌ها، متدهای تخصیص پویا و ساختار کاملاً سازمان‌یافته بدون خطا در کامپایل.

محتوای گزارش کار ۶ صفحه‌ای همراه پروژه

همراه با فایل‌های سورس کد، یک مستند متنی ۶ صفحه‌ای در قالب مایکروسافت ورد (DOCX) ارائه شده است که شامل بخش‌های زیر است:

  • مقدمه و تعاریف پایه: تشریح مفهوم زمانبندی در سیستم‌های عامل و سیستم‌های توزیع‌شده.
  • معرفی الگوریتم Longest Processing Time: فرمول‌بندی مسأله، نسبت تقریب الگوریتم (43−13m\frac{4}{3} – \frac{1}{3m}) و مزایای استفاده از روش LPT.
  • حل تشریحی یک مثال عددی: گام‌های مرتب‌سازی و جدول تخصیص وظایف به پردازنده‌ها به همراه نمودار گانت مربوطه.
  • تشریح ساختار کدها: توضیح کلاس‌ها، رویدادهای فرم و نحوه کارکرد متد تعیین کمترین بار پردازنده.
  • نتیجه‌گیری و مراجع: بررسی کارایی الگوریتم در شرایط بار کاری گوناگون.

پیش‌نیازها و راهنمای اجرای سریع پروژه

این پروژه در محیط Microsoft Visual Studio 2013 توسعه داده شده است و با نسخه‌های بالاتر ویژوال استودیو (۲۰۱۵، ۲۰۱۷، ۲۰۱۹ و ۲۰۲۲) نیز کاملاً سازگار است.

برای اجرای پروژه:

۱. فایل ZIP دریافتی را روی سیستم خود استخراج (Extract) کنید.

۲. فایل پروژه با پسوند .sln را با Visual Studio باز نمایید.

۳. پروژه را در حالت Debug یا Release کامپایل و اجرا (F5) کنید.

۴. مقادیر کارهای دلخواه خود را در کادر متنی وارد کرده و نتیجه زمانبندی LPT را به صورت آنی مشاهده نمایید.

چرا خرید سورس کد زمانبندی LPT از پی‌استور انتخابی مطمئن است؟

  • تست کامل و تضمین سلامت فنی: کلیه فایل‌ها توسط کارشناسان ارشد مهندسی نرم‌افزار در پی‌استور بازبینی و اجرا شده و صحت نتایج خروجی تأیید شده است.
  • آماده برای ارائه: به دلیل دارا بودن گزارش کار جامع ۶ صفحه‌ای، نیازی به صرف زمان برای تایپ و مستندسازی پروژه نخواهید داشت.
  • نشان تضمین کیفیت پی‌استور: این محصول دارای نشان تضمین کیفیت پی استور است که اصالت، کیفیت بالا و بدون باگ بودن کدها را تضمین می‌کند.

خرید و دانلود آنی سورس کد و گزارش کار

سورس کد کامل، تست‌شده و به همراه گزارش کار ۶ صفحه‌ای الگوریتم زمانبندی LPT در سی شارپ #C آماده دریافت است. بلافاصله پس از پرداخت از طریق درگاه‌های بانکی امن و معتبر، لینک دانلود مستقیم فایل فشرده حاوی سورس کد و مستند Word در پنل کاربری شما فعال خواهد شد. }

ریتم زمانبندی LPT در سی شارپ

سورس کد الگوریتم زمانبندی LPT در سی شارپ #C با استفاده از Microsoft Visual Studio 2013 نوشته شده است و دارای گزارش کار 6 صفحه ای در Word است و بصورت کامل توسط گروه پشتیبانی پی استور تست و اجرا شده است. اثر مذکور دارای نشان تضمین کیفیت پی استور می‌باشد. برای دانلود اثر آن را خریداری کنید.

ویدئوی معرفی اثر

نمایش بصری

پیش‌نمایش ویدئوها

برای مشاهده ویدیوی هر بخش، روی عنوان آن کلیک کنید.

1 ویدئو
برنامه‌نویس
تیم برنامه‌نویسی پی‌استور
متشکل از اساتید و فارغ التحصیلان رشته‌های فنی - مهندسی

تیم برنامه نویسی پی استور یکی از اولین گروه‌های تشکیل شده در مجموعه آموزشی پی استور می‌باشد. این تیم از اساتید مجرب و فارغ التحصیلان رشته‌های فنی و مهندسی تشکیل شده که در زمینه‌های مختلف برنامه‌نویسی و تهیه سورس کد فعال هستند.

تیم برنامه‌نویسی پی‌استور
اطلاعات و ویژگی‌های فنی

مشخصات تکمیلی

اطلاعات و جزئیات کامل این محصول

نام اثر
الگوریتم زمانبندی LPT در سی شارپ #C
نوع اثر
سورس کد
برنامه‌نویس:
تیم برنامه‌نویسی پی‌استور
زبان برنامه نویسی:
سی شارپ #C
ویژگی:
قابلیت دانلود و ویرایش

راهنمای خرید و ثبت سفارش

راهنمای 3 مرحله ای خرید

اگر در مورد این اثر یا نحوه تهیه آن سوالی دارید؟

  • با شماره 44225175 (پیش شماره 041) تماس بگیرید. – ساعات اداری
  • با ما مکاتبه ایمیلی داشته باشید (این لینک). – تمام ساعات

دیدگاه‌ها و نظرات

2 نظر|5.00 (میانگین امتیاز کاربران)

  1. آواتار ستاره

    ستاره

    گزارش کار محصول برای توضیح و ارائه خیلی خوب بود.

  2. آواتار مدیریت و پشتیبانی

    مدیریت و پشتیبانی

    نظرات و پیشنهادات خود را با ما در میان بگذارید.

دیدگاه خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

هزینه سفارش:

۲۹۹,۰۰۰ تومان