آموزش پیاده سازی الگوریتم های تکاملی و فراابتکاری در سی شارپ فرادرس
- دستهبندی: برنامه نویسی
- سایت سازنده: فرادرس
- مدتزمان دوره: 9 ساعت
- تعداد جلسات: 15 جلسه
این دوره از سمت ربات تلگرامی رایگان کده قابل دانلود است!
این دوره تا آخرین پارت منتشر شده از سوی سازنده قرار گرفته است!
این دوره بدون هیچ لایسنس و قفل نرمافزاری با فرمت MP4 قرار گرفته است!
تاریخ بروزرسانی این دوره در رایگان کده ۲۸ آبان ۱۴۰۳ است.
پیاده سازی الگوریتم های فرا ابتکاری (متاهیوریستیک ها) از جمله ابزارهای بسیار قدرتمند هوش مصنوعی، برای حل مسائل بهینه سازی از طریق روش های هوشمند هستند و امروزه در شاخه های مختلفی از علوم و مهندس، کاربردهای فراوانی را به خود اختصاص داده اند. این الگوریتم ها، که اغلب از فرایندهای طبیعی الهام گرفته شده اند، در واقع روش های جستجو هستند که در فضای همه پاسخ های ممکن برای یک مساله بهینه سازی جستجو می کنند و بهترین پاسخ (یا پاسخ ها) را پیشنهاد می دهند.
پیش از این، آموزش تئوری و عملی بیش از ۲۵ الگوریتم فرا ابتکاری در قالب گنجینه بهینه سازی هوشمند در فرادرس ارائه شده اند که در کنار مباحث تئوری و بیان نحوه عملکرد این الگوریتم ها، پیاده سازی گام به گام این موارد در محیط متلب نیز، مورد بحث و بررسی قرار گرفته است. اما همان طور که می دانیم، زبان برنامه نویسی و نرم افزار متلب، اساسا برای امور پژوهشی و آزمایشگاهی مناسب هستند و اغلب برنامه هایی که در متلب نوشته می شوند، از سرعت مناسبی برخوردار نیستند. از این رو، برای نخستین بار، مجموعه آموزشی پیاده سازی الگوریتم های تکاملی و فراابتکار با استفاده از زبان برنامه نویسی سی شارپ (C#) بر روی فرادرس منتشر شده است، تا پاسخگوی نیاز روز افزون دانشجویان و پژوهشگران این حوزه باشد.
از طریق پیاده سازی الگوریتم های فرا ابتکاری در سی شارپ، سرعت اجرای آن ها در مقایسه با متلب، به مراتب افزایش خواهد یافت و این امکان وجود خواهد داشت که نرم افزار نهایی، به صورت یک برنامه مستقل و به راحتی در همه سیستم های ویندوزی (و حتی ادوات موبایل و برخی سیستم های غیر ویندوزی) اجرا شود. در این دوره آموزشی منحصر به فرد، علاوه بر این که موضوع محاسبات تکاملی مورد بررسی قرار می گیرد، مثال های کاملی از نحوه کاربرد سی شارپ در محاسبات علمی و آکادمیک نیز، به صورت ضمنی ارائه می شوند. از این نظر، این آموزش مشابهی حتی به زبان های خارجی ندارد و برای نخستین بار است که چنین مفاهیمی در قالب ویدئویی و با این میزان از تشریح، ارائه می شوند.
- درس یکم: مرور مبانی تئوری الگوریتم بهینه سازی ازدحام ذرات یا PSO
- مقدمه
- بررسی شیوه عملکرد الگوریتم PSO در فضای یک بعدی
- عملکرد الگوریتم PSO در فضاهای با ابعاد بالاتر
- معرفی مفهوم ذره یا Particle
- شیوه به روز رسانی سرعت و موقعیت ذرات در PSO
- مدل ریاضی الگوریتم Particle Swarm Optimization
- مراحل الگوریتم PSO
- درس دوم: پیاده سازی الگوریتم PSO در سی شارپ – تعریف مساله و آماده سازی
- تعریف یک مساله بهینه سازی ساده با تابع Sphere
- پیاده سازی ساختار مربوط به ذرات یا Particle
- پیاده سازی تابع اجرا کننده PSO
- پیاده سازی فاز آماده سازی PSO
- پیاده سازی مجموعه توابع تولید اعداد تصادفی یکنواخت
- پیاده سازی تابع ریاضی Sphere در سی شارپ
- تعیین نوع مساله بهینه سازی با enum (نوع شمارشی)
- ایجاد جمعیت اولیه و ارزیابی آن ها
- استفاده از تابع CopyTo برای کپی موقعیت ذرات
- درس سوم: پیاده سازی الگوریتم PSO در سی شارپ – حلقه اصلی الگوریتم
- پیاده سازی حلقه اصلی الگوریتم PSO
- به روز رسانی سرعت و موقعیت ذرات
- ارزیابی موقعیت جدید ذرات
- مقایسه ذرات با بهترین خاطره فردی و جمعی
- نمایش روند اجرای الگوریتم در پنجره کنسول Console
- تنظیم ضرایب با استفاده از رویکرد Constriction Coefficients
- تعریف تابع مقایسه برای انواع مسائل بهینه سازی
- درس چهارم: تبدیل برنامه قبلی به صورت شی گرا
- استفاده از تابع Clone برای کپی موقعیت ذرات
- ایجاد کلاس Randoms حاوی توابع استاتیک ایجاد اعداد تصادفی
- تعریف کلاس ParticleSwarmOptimization برای پیاده سازی الگوریتم PSO
- تعریف ویژگی های کلاس PSO
- تعریف توابع سازنده کلاس PSO
- انتقال برنامه تابعی PSO به داخل کلاس جدید
- تعریف توابعی برای تنظیم ضرایب PSO
- درس پنجم: افزودن رویداد و تبدیل برنامه به حالت تحت ویندوز (Windows Forms)
- بهبود عملکرد برنامه در رعایت حدود بالا و پایین متغیرهای تصمیم
- تعریف رویداد برای کلاس PSO
- جا دادن رویدادها در بدنه اصلی الگوریتم
- پاسخگویی به رویدادها در خارج از کلاس PSO
- ایجاد یک برنامه تحت ویندوز برای اجرای PSO
- ایجاد المان های لازم در پنجره اصلی برنامه
- اجرای الگوریتم PSO در محیط ویندوزی
- پاسخگویی به رویدادها و نمایش پیام های مربوطه
- درس ششم: بهبود برنامه تحت ویندوز با افزودن کنترل های پارامتری
- اعمال تغییرات در کلاس PSO برای دسترسی امن به اطلاعات درونی آن
- افزودن کنترل های جدید برای تنظیم پارامترهای PSO
- اتصال میان PSO و کنترل های موجود در صفحه
- اجرای الگوریتم PSO
- نمایش اطلاعات از روند اجرای الگوریتم
- درس هفتم: جداسازی تعریف مساله و الگوریتم با تعریف کلاس مجزا
- تعریف کلاس OptimizationProblem برای جداسازی مساله از روش حل
- تعریف ویژگی های و متدهای کلاس مساله
- ارزیابی راه حل های پیشنهادی در درون کلاس مساله
- تغییر تعریف توابع PSO برای سازگاری با کلاس جدید
- بهبود تعریف ساختار ذره یا Particle
- درس هشتم: تعریف متغیرهای تصمیم پیوسته با بازه متفاوت
- تعریف کلاس جدید DecisionVariable برای معرفی متغیرهای تصمیم
- تعریف ویژگی های متغیر تصمیم (حد بالا و پایین)
- تعریف شیوه ترجمه متغیرهای تصمیم
- افزودن متغیرهای تصمیم به کلاس مساله
- آشنایی با کلاس Dictionary برای مدیریت متغیرهای با نام
- تعریف توابع مربوط به افزودن و حذف متغیرها
- تعریف مساله بهینه سازی جدید با متغیرهای دارای حدود متفاوت
- ایجاد مولفه موقعیت اصلی در ساختار پاسخ
- درس نهم: تعریف متغیرهای تصمیم گسسته باینری و عدد صحیح
- تعریف نوع شمارشی (enum) نوع متغیر تصمیم (حقیقی، باینری و عدد صحیح)
- بررسی شیوه کدینگ عدد صحیح و باینری با نگاشت جز صحیح
- تعریف شیوه ترجمه برای متغیرهای عدد صحیح و باینری
- حل معادله عدد صحیح با الگوریتم PSO در سی شارپ
- تعریف مسائل بهینه سازی ترکیبی از متغیرهای حقیقی، عدد صحیح و باینری
- درس دهم: مرور مبانی تئوری الگوریتم شبیه سازی تبرید و پیاده سازی آن
- بررسی نحوه عملکرد الگوریتم Simulated Annealing یا SA
- ساده سازی قاعده انتخاب پاسخ در SA
- بررسی شیوه ایجاد همسایگی در الگوریتم شبیه سازی تبرید با توزیع گوسی
- پیاده سازی الگوریتم SA در قالب کلاس SimulatedAnnealing
- افزودن ویژگی ها و متدهای پایه
- پیاده سازی فاز آماده سازی SA
- آشنایی با نگاشت باکس-مولر (Box-Muller) برای ایجاد توزیع نرمال (گوسی)
- پیاده سازی فرمول-باکس مولر در C#
- افزودن مجموعه توابع NormalRand به کلاس Randoms
- پیاده سازی حلقه اصلی الگوریتم SA
- نهایی سازی الگوریتم SA
- درس یازدهم: اتصال برنامه SA به برنامه تحت ویندوز قبلی
- تعریف کنترل ها در برنامه تحت ویندوز برای اتصال به SA
- پاسخگویی به رویدادهای کلاس SA
- اجرای الگوریتم شبیه سازی تبرید در برنامه تحت ویندوز
- درس دوازدهم: مرور مبانی تئوری الگوریتم های ژنتیک و نحوه کارکرد آن ها
- مروری بر مفاهیم پایه ای الگوریتم ژنتیک و الگوریتم های تکاملی
- بررسی حلقه تکامل و مدل کلی الگوریتم های ژنتیک
- بررسی عملگر تقاطع (Crossover) و جهش (Mutation)
- ساختار کلی و کامل الگوریتم ژنتیک
- درس سیزدهم: پیاده سازی عملی الگوریتم ژنتیک در سی شارپ
- پیاده سازی کلاس GeneticAlgorithm
- افزودن ویژگی ها و متدهای پایه به کلاس GA
- بهبود تعریف بدترین حالت در کلاس مساله
- ایجاد جمعیت اولیه در کلاس GA
- پیاده سازی حلقه اصلی الگوریتم ژنتیک
- الحاق جمعیت اصلی و فرزندان با LINQ
- مرتب سازی جمعیت با استفاده از دستورات LINQ
- پیاده سازی تابع RandInt برای ایجاد اعداد تصادفی صحیح
- پیاده سازی تابع CrossOver برای انجام عمل تقاطع
- پیاده سازی تابع Mutate برای انجام جهش در الگوریتم ژنتیک
- نهایی سازی تابع اصلی الگوریتم ژنتیک
- درس چهاردهم: اتصال برنامه GA به برنامه تحت ویندوز قبلی
- تعریف کنترل ها در برنامه تحت ویندوز برای اتصال به الگوریتم ژنتیک
- پاسخگویی به رویدادهای کلاس GA
- اجرای الگوریتم ژنتیک در برنامه تحت ویندوز
- جمع بندی و ارائه پیشنهادهایی برای بهبود برنامه های این دوره آموزشی
- این دوره مناسب چه کسانی است؟
- انشجویان و پژوهشگران در حوزه بهینهسازی: اگر در حوزه بهینهسازی، محاسبات تکاملی یا هوش مصنوعی کار میکنید، این دوره به شما کمک میکند تا الگوریتمهای فراابتکاری را با زبانی سریع و قابل اجرا در محیطهای مختلف پیادهسازی کنید.
- مهندسین نرمافزار و برنامهنویسان علمی: اگر بهدنبال یادگیری پیادهسازی الگوریتمهای هوشمند در پروژههای علمی و آکادمیک هستید، این دوره میتواند مهارتهای لازم را در زمینه کار با الگوریتمهای فراابتکاری و زبان سی شارپ به شما بیاموزد.
- افرادی که به توسعه نرمافزارهای علمی علاقه دارند: کسانی که بهدنبال افزایش سرعت اجرای الگوریتمهای علمی خود و تبدیل آنها به نرمافزارهای مستقل و کاربردی هستند، از این دوره بهرهمند خواهند شد.
- این دوره مناسب چه کسانی نیست؟
- افرادی که بهدنبال پیادهسازی سریع و ساده هستند: اگر به دنبال روشهای سریعتر و کمتر پیچیده برای پیادهسازی الگوریتمهای فراابتکاری هستید، متلب یا پایتون ممکن است گزینههای بهتری برای شما باشند، زیرا این زبانها محیطهای سادهتری برای پیادهسازی اولیه دارند.
- افرادی که به کارهای پژوهشی آزمایشگاهی علاقهمندند: اگر هدف شما تنها انجام آزمایشهای پژوهشی یا شبیهسازی است و نیاز به نرمافزار مستقل و سریع ندارید، شاید استفاده از زبانهایی مانند متلب برایتان کارآمدتر باشد.
- افراد کاملاً مبتدی در برنامهنویسی: اگر تجربهای در برنامهنویسی ندارید یا بهطور کامل مبتدی هستید، ممکن است این دوره کمی برای شما پیچیده باشد. این دوره نیازمند آشنایی با اصول پایهای برنامهنویسی است.
زبان برنامهنویسی سی شارپ (C#) به دلیل سرعت بالای اجرا و امکان تولید نرمافزارهای مستقل، انتخاب مناسبی برای پیادهسازی الگوریتمهای فراابتکاری است. برخلاف متلب که برای کارهای پژوهشی و آزمایشگاهی بیشتر مناسب است، سی شارپ میتواند به راحتی بر روی سیستمهای مختلف اجرا شود و عملکرد بهتری از لحاظ سرعت و کارایی ارائه دهد.
بله، داشتن دانش پایهای از برنامهنویسی به زبان سی شارپ به شما کمک میکند تا بهتر از محتوای دوره بهره ببرید. اما اگر آشنایی کمی با سی شارپ دارید، نگران نباشید. در این دوره، اصول پایه و کاربردی زبان سی شارپ در زمینه الگوریتمهای فراابتکاری بهصورت عملی توضیح داده شده است.
در این دوره، بیش از 25 الگوریتم فراابتکاری و تکاملی معروف، مانند الگوریتم ژنتیک، ازدحام ذرات (PSO)، بهینهسازی ازدحام خفاش (BAT)، و الگوریتم کلونی زنبورعسل (ABC) با استفاده از زبان سی شارپ پیادهسازی میشوند. این الگوریتمها بهصورت گام به گام تشریح و پیادهسازی میشوند تا کاربردهای عملی آنها در بهینهسازی مسائل پیچیده نشان داده شود.