الگوریتم های فراابتکاری چیست:
نوعی از الگوریتمهای تصادفی هستند که برای یافتن پاسخ بهینه به کار میروند. الگوریتم های فرا ابتکاری در واقع مجموعه ای از الگوریتم ها هستند که بر روی الگوریتم های ابتکاری اعمال می شوند و باعث رهایی از بهینه سازی محلی میشوند و در عین حال امکان استفاده از الگوریتم های ابتکاری را در تعداد زیادی از مسائل میدهند. الگوریتمهای فراابتکاری یا همان Meta Heuristic میباشند. در واقع الگوریتمهای فراابتکاری قادر هستند بدونِ دانستن مسئله، با ارائهی یک راه حل عمومی (General) مسئله را با سرعت و دقتِ معقولی حل کنند. روشها و الگوریتمهای بهینهسازی به دو دسته الگوریتمهای دقیق (exact) و الگوریتمهای تقریبی (approximate algorithms) تقسیمبندی میشوند. الگوریتمهای دقیق قادر به یافتن جواب بهینه به صورت دقیق هستند اما در مورد مسائل بهینهسازی سخت، کارایی کافی ندارند و زمان اجرای آنها متناسب با ابعاد مسائل به صورت نمایی افزایش مییابد. الگوریتمهای تقریبی قادر به یافتن جوابهای خوب (نزدیک به بهینه) در زمان حل کوتاه برای مسائل بهینهسازی سخت هستند. الگوریتمهای تقریبی نیز به سه دسته الگوریتمهای ابتکاری (heuristic) و فراابتکاری (meta-heuristic) و فوق ابتکاری (hyper heuristic) بخشبندی میشوند.
روشهای حل یک مسئلهی بهینهسازی؟
1- روشهای تحلیلی
سادهترین روش حل این است که از روش «سعی و خطا» استفاده کنیم. یعنی تمامی مسیرهای ممکن را تکتک تشکیل بدهیم و تابع هدف را برایشان محاسبه کنیم. بعد جوابها را با هم مقایسه کنیم. یک روش معمول برای تعیین نقطهی بهینهی یک تابع، این است که از تابع بر حسب متغیرها مشتق بگیریم. جایی که مشتق یک تابع صفر شود، یک نقطهی بهینه داریم. در این دسته از روشها همهی مراحل کاملا از پیش تعیین شدهاند و هیچگونه «عدد تصادفی» در حل مسئله وجود ندارد. برای بسیاری از مسئلهها استفاده از این روش مقرونبهصرفه نیست؛ چون حل خیلی سخت میشود و یا آنکه حل بسیار وقتگیر خواهدبود. بعضی از مسئلهها را هم اصلا نمیتوان به روش مشتقگیری حل کرد. روشهای تحلیلی بیشتر به دنبال حل دقیق مسائل هستند. از این رو شامل مشتقگیری و یافتن پاسخ بهینهاند. فایده اصلی این نوع از الگوریتمهای بهینهسازی تضمین جواب بهینه است، اما استفاده از آنها در مسائل با پیچیدگی بالا یا مسائل بزرگ یا دارای تابع گسسته دشوار است.
2- روشهای فراابتکاری
در مقابلِ روشهایی وجود دارند که در آنها از اعداد تصادفی استفاده میکنیم. این روشها قدری شبیه به روش سعی و خطا هستند، یعنی به صورت تصادفی شروع به جستجو در میان جوابهای ممکن میکنیم. اما در این روشها نشانهها و راهنماییهایی وجود دارند تا متوجه شویم که به جواب بهینه نزدیک شدهایم. برای همین به این روشها، روشهای «ابتکاری» میگوییم. روشهای فراابتکاری یا فرااکتشافی برای حل مسائل بزرگتر و با توابع بدرفتار مناسبترند. اگرچه این روشها نمیتوانند رسیدن به جواب بهینه را تضمین کنند. الگوریتم ژنتیک و تصعید شبیهسازی شده مثالهایی از این الگوریتمها هستند.
انواع الگوریتم های تخمینی:
- ابتکاری (heuristic)
- گیر افتادن آنها در نقاط بهینه محلی
- همگرایی زودرس
- فراابتکاری (meta-heuristic)
- راهکارهای برونرفت از نقاط بهینه
- قابلیت کاربرد در طیف گستردهای
- فوق ابتکاری (hyper heuristic))
چرا الگوریتم های متاهیوریستیک:
- یافتن جواب بهینه به صورت دقیق سخت یا غیرممکن است
- الگوریتم های دقیق (ریاضی) برای مسائل بهینهسازی سخت کارایی کافی ندارند
- زمان اجرای الگوریتم های دقیق (ریاضی) متناسب با ابعاد مسائل به صورت نمایی افزایش مییابد.
- الگوریتم های دقیق (ریاضی) سرعتِ پایینی دارند
- الگوریتم های دقیق (ریاضی) برای مسائلی با دادهها و ابعاد زیاد، کاربردِ چندانی ندارند
مؤلفه اصلی هر الگوریتم فرا ابتکاری:
- استخراج: Exploration
- برای اکتشاف فضای جستجو در مقیاس جهانی
- اکتشاف: Exploitation
- تمرکز در جستجو در منطقه های محلی برای انتخاب بهترین ها
هدف از این دوره آموزشی:
هدف از این دوره آموزشی، آموزش الگوریتم های فراابتکاری به صورت عملی و تئوری است. در این دوره به صورت پروژه محور تئوری بخش های مختلف بهینه سازی در الگوریتم های فراابتکاری بحث و بررسی می شود و سپس پیاده سازی عملی آن با زبان پایتون انجام می شود. مدرس این دوره سال ها در این زمینه تخصص و تجربه دارد و دانش بهینه سازی و کاربرد آن را برای مسائل مختلف به شما آموزش می دهد. ابتدا مروی کامل روی پایتون انجام می شود و بعد از آن تئوری بهینه سازی به صورت کامل آموزش داده می شود. بهینه سازی با روش های ریاضی انجام میشود و بغد با الگوریتم های متاهیوریستیک بهینه سازی انجام میشود. در نهایت پیاده سازی های مختلفی از بهینه سازی توابع برای کاربردهای مختلف انجام می شود. بدون شک یکی از بهترین دوره های بهنیه سای است که با زبان فارسی، ساده و روان توضیح داده شده است. امیدواریم که این آموزش از “بیگ لرن” هم مثل سایر آموزش ها مورد تایید و رضایت شما مخاطبان گرامی قرار گیرد. جزئیات این آموزش در زیر لیست شده و پیش نمایش آن در لینک زیر قرار دارد.
بخش اول: مرور کامل روی پایتون
بخش دوم: بهینه سازی با روش های ریاضی (تحلیلی)
بخش سوم: بهینه سازی با روش های فراابتکاری (متاهیوریستیک)
بخش چهارم: بهینه سازی با الگوریتم ژنتیک (Genetic Algorithm)
بخش پنجم: بهینه سازی با الگوریتم تپه نوردی (Hill Climbing Algorithm)
بخش ششم: بهینه سازی با الگوریتم گرگ خاکستری (Gray Wolf Optimizer )
بخش هفتم: بهینه سازی با الگوریتم نهنگ ها (Whale Optimization Algorithm)
بخش هشتم: بهینه سازی با الگوریتم طوفان مغزی (Brain Storm Optimization)
بخش نهم: بهینه سازی با الگوریتم ساخت اهرام جیزه (Giza Pyramids Construction)
بخش دهم: بهینه سازی با الگوریتم ژنتیک (genetic algorithm)
بخش یازدهم: بهینه سازی با کرم شب تاب Firefly Algorithm
بخش دوازدهم: الگوریتم کلونی مورچه ها (Ant colony)
بخش سیزدهم: الگوریتم شبیه سازی تبرید (Simulated Annealing)
نظرات
3 دیدگاه برای آموزش الگوریتم های فراابتکاری با پایتون
برای فرستادن دیدگاه، باید وارد شده باشید.
رضا
آقای دکتر واقعا دوره خیلی خوب و کاملی بود. متشکرم
کدرلایف
ممنون از این مقاله کاربردی
karen(خریدار محصول)
سلام خیلی خوب بود مرسی کامل و جامع . کدها را در اختیارمون قرار نمیدید؟ کدها از چه مسیری میشه دانلود کرد؟
biglearn
سلام. خواهش میکنم. کدها در پوشه مربوط به هر قسمت قرار دارد.