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

فهرست مطالب:

الگوریتم های تکاملی: چیست و چرا به آنها نیاز است
الگوریتم های تکاملی: چیست و چرا به آنها نیاز است
Anonim

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

الگوریتم های تکاملی اغلب راه حل های همه انواع مسائل را به خوبی تقریب می کنند. زیرا در حالت ایده آل آنها هیچ فرضی در مورد چشم انداز تناسب اندام زیربنایی نمی کنند. روش‌های مورد استفاده برای مدل‌سازی تکاملی و الگوریتم‌های ژنتیک معمولاً محدود به مطالعات فرآیندهای ریز تکاملی و مدل‌های برنامه‌ریزی مبتنی بر مراحل سلولی است. در اکثر برنامه های واقعی EA، پیچیدگی محاسباتی یک عامل بازدارنده است.

در واقعاین موضوع به تخمین تابع برازندگی مربوط می شود. تقریب تناسب اندام یک راه حل برای غلبه بر این مشکل است. با این حال، یک EA به ظاهر ساده می تواند مشکلات اغلب پیچیده را حل کند. بنابراین، هیچ رابطه مستقیمی بین پیچیدگی دنباله و مسئله نمی تواند وجود داشته باشد. جزئیات بیشتر را می‌توانید در کتاب‌های «الگوریتم‌های تکاملی» بیابید.

پیاده سازی

مدلسازی و الگوریتم های تکاملی
مدلسازی و الگوریتم های تکاملی

مرحله اول ایجاد یک جمعیت اولیه از افراد به صورت تصادفی است.

مرحله دوم، ارزیابی شایستگی هر فرد در این گروه است (محدودیت زمانی، آمادگی کافی و غیره).

مرحله سوم - مراحل بازسازی زیر را تا تکمیل تکرار کنید:

  1. مناسب ترین افراد را برای پرورش (والدین) انتخاب کنید.
  2. افراد جدیدی را بیاورید که الگوریتم تکاملی را با استفاده از متقاطع و جهش گذرانده اند تا فرزندانی به دست آورند.
  3. بررسی آمادگی فردی افراد جدید.
  4. با کمترین تناسب جمعیت با آنها جایگزین کنید.

انواع

الگوریتم ژنتیک یک توالی تکاملی است، محبوب ترین نوع مشاور متخصص. راه‌حلی برای مشکل به شکل رشته‌هایی از اعداد (به طور سنتی باینری، اگرچه بهترین نمایش‌ها معمولا آنهایی هستند که بیشتر در مسئله در حال حل منعکس می‌شوند) با اعمال عملگرهایی مانند نوترکیبی و جهش (گاهی یکی، در برخی موارد هر دو) جستجو می‌شود.). این نوع از Expert Advisor اغلب در مسائل بهینه سازی استفاده می شود. نام دیگر آن fetura است (از لاتین "تولد"):

  1. برنامه نویسی ژنتیک. راه‌حل‌ها را به‌عنوان کدهای کامپیوتری ارائه می‌کند و مناسب بودن آن‌ها با توانایی آن‌ها در انجام وظایف محاسباتی تعیین می‌شود.
  2. برنامه نویسی تکاملی. شبیه به الگوریتم ژنتیک تکاملی، اما ساختار ثابت است و پارامترهای عددی آن می‌توانند تغییر کنند.
  3. بیان ژن برنامه ریزی. برنامه‌های کاربردی رایانه‌ای را توسعه می‌دهد، اما سیستم ژنوتیپ-فنوتیپ را بررسی می‌کند، جایی که پروژه‌هایی با اندازه‌های مختلف روی کروموزوم‌های خطی با طول ثابت کدگذاری می‌شوند.
  4. استراتژی. با بردارهای اعداد حقیقی به عنوان نمایش راه حل کار می کند. معمولاً از الگوریتم‌های نرخ جهش تکاملی خودسازگار استفاده می‌کند.
  5. توسعه دیفرانسیل. بر اساس تفاوت های برداری و بنابراین در درجه اول برای مسائل بهینه سازی عددی مناسب است.
  6. تکامل عصبی. مشابه برنامه نویسی تکاملی و الگوریتم های ژنتیک. اما دومی شبکه های عصبی مصنوعی هستند که ساختار و وزن اتصالات را توصیف می کنند. رمزگذاری ژنوم می تواند مستقیم یا غیرمستقیم باشد.

مقایسه با فرآیندهای بیولوژیکی

محدودیت احتمالی بسیاری از الگوریتم‌های تکاملی، فقدان تمایز واضح بین ژنوتیپ و فنوتیپ است. در طبیعت، یک تخمک بارور شده برای بالغ شدن تحت فرآیند پیچیده ای به نام جنین زایی قرار می گیرد. تصور می‌شود که این کدگذاری غیرمستقیم جستجوهای ژنتیکی را قابل اطمینان‌تر می‌کند (یعنی احتمال کمتری برای ایجاد جهش‌های کشنده دارد) و همچنین ممکن است توانایی ارگانیسم را برای رشد بهبود بخشد. چنین غیر مستقیم (به عبارت دیگر،رمزگذاری های مولد یا توسعه ای) همچنین به تکامل اجازه می دهد تا از نظم در محیط استفاده کند.

کار اخیر در زمینه جنین زایی مصنوعی یا سیستم های تکوینی به دنبال رسیدگی به این مسائل است. هنگام برنامه ریزی بیان ژن، ناحیه ژنوتیپ-فنوتیپ با موفقیت کاوش می شود، جایی که اولی شامل کروموزوم های چند ژنی خطی با طول ثابت، و دومی از بسیاری از درختان بیان یا برنامه های کامپیوتری با اندازه ها و اشکال مختلف است.

تکنیک های مرتبط

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

الگوریتم ها عبارتند از:

  1. بهینه سازی کلونی مورچه ها. این بر اساس این ایده است که حشرات با اتصال به فرمون ها برای تشکیل مسیرها به دنبال غذا هستند. در درجه اول برای بهینه سازی ترکیبی و مشکلات نمودار مناسب است.
  2. الگوریتم لغزنده ریشه. خالق از عملکرد ریشه گیاهان در طبیعت الهام گرفته است.
  3. الگوریتم برای کلونی های زنبورهای مصنوعی. بر اساس رفتار زنبورهای عسل. در اصل برای بهینه سازی عددی پیشنهاد شده و برای حل مسائل ترکیبی، محدود و چندهدفه گسترش یافته است. الگوریتم زنبور عسل بر اساس رفتار جستجوی حشرات است. در بسیاری از برنامه‌ها مانند مسیریابی و زمان‌بندی استفاده شده است.
  4. بهینه سازی ازدحام ذرات - بر اساس ایده های رفتار گله حیوانات. و همچنین در درجه اول برای وظایف پردازش عددی مناسب است.

سایر روشهای فراابتکاری محبوب

  1. جستجوی شکار. روشی مبتنی بر صید گروهی برخی از حیوانات، مانند گرگ، کهوظایف خود را برای احاطه کردن طعمه تقسیم می کنند. هر یک از اعضای الگوریتم تکاملی به نحوی با دیگران ارتباط دارند. این به ویژه در مورد رهبر صادق است. این یک روش بهینه سازی پیوسته است که به عنوان یک روش فرآیند ترکیبی اقتباس شده است.
  2. جستجو بر اساس اندازه گیری. برخلاف روش‌های فراابتکاری مبتنی بر طبیعت، الگوریتم فرآیند تطبیقی از استعاره به عنوان اصل اصلی خود استفاده نمی‌کند. در عوض، از یک روش ساده مبتنی بر عملکرد مبتنی بر به‌روزرسانی پارامتر نسبت ابعاد جستجو در هر تکرار استفاده می‌کند. الگوریتم فایرفلای از این الهام گرفته شده است که چگونه کرم شب تاب با نور چشمک زن خود یکدیگر را جذب می کنند. این به ویژه برای بهینه سازی چندوجهی مفید است.
  3. جستجوی هارمونی. بر اساس ایده های رفتار نوازندگان. در این مورد، الگوریتم‌های تکاملی راهی برای بهینه‌سازی ترکیبی هستند.
  4. اقتباس گاوسی. بر اساس نظریه اطلاعات. برای به حداکثر رساندن عملکرد و متوسط در دسترس بودن استفاده می شود. نمونه ای از الگوریتم های تکاملی در این موقعیت: آنتروپی در ترمودینامیک و نظریه اطلاعات.

Memetic

مدل سازی تکاملی
مدل سازی تکاملی

یک روش ترکیبی بر اساس ایده ریچارد داوکینز از میم. معمولاً به شکل یک الگوریتم مبتنی بر جمعیت همراه با روش‌های یادگیری فردی است که قادر به انجام اصلاحات محلی است. بر استفاده از دانش ویژه مشکل و تلاش برای سازماندهی جستجوهای دقیق و جهانی به روش هم افزایی تاکید می کند.

تکاملیالگوریتم‌ها یک رویکرد اکتشافی برای مسائلی هستند که نمی‌توان آنها را به راحتی در زمان چند جمله‌ای حل کرد، مانند مسائل کلاسیک NP-hard و هر چیز دیگری که پردازش کامل آنها بیش از حد طول می‌کشد. هنگامی که به طور مستقل استفاده می شوند، معمولا برای مشکلات ترکیبی استفاده می شوند. با این حال، الگوریتم‌های ژنتیک اغلب همراه با روش‌های دیگر مورد استفاده قرار می‌گیرند و به عنوان راهی سریع برای یافتن چندین مکان شروع بهینه برای کار عمل می‌کنند.

فرض الگوریتم تکاملی (معروف به یک مشاور) با توجه به اینکه شما با فرآیند انتخاب طبیعی آشنا هستید بسیار ساده است. این شامل چهار مرحله اصلی است:

  • initialization;
  • انتخاب؛
  • عملگرهای ژنتیکی؛
  • پایان.

هر یک از این مراحل تقریباً با جنبه خاصی از انتخاب طبیعی مطابقت دارد و راه های آسانی برای مدولار کردن آن دسته از الگوریتم ها ارائه می دهد. به زبان ساده، در EA، مناسب‌ترین اعضا زنده می‌مانند و تولید مثل می‌کنند، در حالی که اعضای نامناسب می‌میرند و به مخزن ژنی نسل بعدی کمک نمی‌کنند.

Initialization

برای شروع الگوریتم، ابتدا باید مجموعه ای از راه حل ها را ایجاد کنید. جمعیت شامل تعداد دلخواه از بیانات مشکل احتمالی است که اغلب به عنوان اعضا شناخته می شود. آن‌ها اغلب به‌طور تصادفی (در چارچوب محدودیت‌های کار) ایجاد می‌شوند یا، اگر دانش قبلی شناخته شده باشد، به طور آزمایشی حول آنچه ایده‌آل تلقی می‌شود، متمرکز می‌شوند. مهم است که جمعیت طیف گسترده ای از راه حل ها را پوشش دهد،زیرا اساساً یک استخر ژنی است. بنابراین، اگر کسی بخواهد بسیاری از احتمالات مختلف را در یک الگوریتم کشف کند، باید برای داشتن ژن‌های مختلف تلاش کند.

انتخاب

کدهای ژنتیکی
کدهای ژنتیکی

هنگامی که جمعیت ایجاد شد، اکنون اعضای آن باید بر اساس عملکرد تناسب اندام ارزیابی شوند. تابع تناسب ویژگی های یک عضو را می گیرد و یک نمایش عددی از تناسب عضو ارائه می دهد. ایجاد آنها اغلب می تواند بسیار دشوار باشد. مهم است که یک سیستم خوب پیدا کنید که داده ها را به طور دقیق نشان دهد. این خیلی خاص مشکل است. اکنون باید شایستگی همه شرکت کنندگان را محاسبه کرد و تعدادی از بهترین اعضا را انتخاب کرد.

توابع چند هدف

EAها را نیز می توان برای استفاده از این سیستم ها گسترش داد. این روند را تا حدودی پیچیده می کند، زیرا به جای شناسایی یک نقطه بهینه، مجموعه ای در هنگام استفاده از آنها به دست می آید. مجموعه راه‌حل‌ها مرز پارتو نامیده می‌شود و حاوی عناصری است که به همان اندازه مناسب هستند، به این معنا که هیچ یک از آنها بر دیگری تسلط ندارند.

عملگرهای ژنتیک

این مرحله شامل دو مرحله فرعی است: متقاطع و جهش. پس از انتخاب بهترین عبارت ها (معمولاً 2 عبارت برتر، اما این تعداد می تواند متفاوت باشد)، اکنون برای ایجاد نسل بعدی در الگوریتم استفاده می شود. با به کارگیری ویژگی های والدین منتخب، فرزندان جدیدی خلق می شوند که آمیخته ای از ویژگی ها هستند. این اغلب ممکن است بسته به نوع داده دشوار باشد، اما معمولاً در مشکلات ترکیبیترکیب و خروجی ترکیبات معتبر کاملاً ممکن است.

اکنون لازم است مواد ژنتیکی جدید به نسل وارد شود. اگر این گام مهم برداشته نشود، دانشمند خیلی سریع در افراط های محلی گیر می کند و به نتایج مطلوب نمی رسد. این مرحله یک جهش است و به سادگی انجام می شود و بخش کوچکی از کودکان را به گونه ای تغییر می دهد که عمدتاً زیر مجموعه های ژن های والدین را منعکس نمی کنند. جهش معمولاً به صورت احتمالی رخ می دهد، زیرا احتمال ابتلای کودک به آن و همچنین شدت آن با توزیع تعیین می شود.

فسخ

مدل سازی و الگوریتم ها
مدل سازی و الگوریتم ها

در پایان، الگوریتم باید به پایان برسد. این معمولاً در دو مورد اتفاق می افتد: یا به حداکثر زمان اجرا رسیده است یا به آستانه عملکرد رسیده است. در این مرحله، راه حل نهایی انتخاب شده و برگردانده می شود.

نمونه ای از الگوریتم های تکاملی

اکنون، برای نشان دادن نتیجه این فرآیند، باید مشاور را در عمل ببینید. برای انجام این کار، می‌توانیم به یاد بیاوریم که چگونه چندین نسل از دایناسورها راه رفتن را یاد گرفتند (به تدریج بر زمین مسلط شدند)، ساختار بدن خود را بهینه کردند و قدرت عضلانی را به کار گرفتند. حتی اگر خزندگان نسل اولیه قادر به راه رفتن نبودند، مشاور توانست آنها را در طول زمان از طریق جهش و متقاطع به شکلی تبدیل کند که بتواند راه برود.

این الگوریتم ها به طور فزاینده ای در دنیای مدرن مرتبط می شوند، زیرا راه حل های مبتنی بر آنها به طور فزاینده ای در صنایعی مانند بازاریابی دیجیتال، امور مالی ومراقبت های بهداشتی.

EAها کجا استفاده می شوند؟

به طور گسترده تر، الگوریتم های تکاملی در طیف گسترده ای از برنامه ها مانند پردازش تصویر، مسیریابی وسایل نقلیه، بهینه سازی ارتباطات سیار، توسعه نرم افزار و حتی آموزش شبکه های عصبی مصنوعی استفاده می شوند. این ابزارها در قلب بسیاری از برنامه‌ها و وب‌سایت‌هایی هستند که مردم به صورت روزانه از آنها استفاده می‌کنند، از جمله نقشه‌های گوگل و حتی بازی‌هایی مانند The Sims. علاوه بر این، حوزه پزشکی از EA برای کمک به تصمیم گیری بالینی در مورد درمان سرطان استفاده می کند. در واقع، الگوریتم های تکاملی آنقدر قوی هستند که می توان از آنها برای حل تقریباً هر مشکل بهینه سازی استفاده کرد.

قانون مور

شیوع رو به رشد EO توسط دو عامل اصلی هدایت می شود: قدرت محاسباتی موجود و انباشت مجموعه داده های بزرگ. اولین مورد را می توان با قانون مور توصیف کرد، که اساساً بیان می کند که مقدار قدرت محاسباتی در یک کامپیوتر تقریباً هر دو سال یکبار دو برابر می شود. این پیش بینی برای چندین دهه برقرار است. عامل دوم به اتکای فزاینده به فناوری مربوط می شود که به مؤسسات اجازه می دهد تا حجم فوق العاده زیادی از داده ها را جمع آوری کنند که به آنها امکان تجزیه و تحلیل روندها و بهینه سازی محصولات را می دهد.

چگونه الگوریتم های تکاملی می توانند به بازاریابان کمک کنند؟

مدل سازی ژنتیکی
مدل سازی ژنتیکی

شرایط بازار به سرعت در حال تغییر و بسیار رقابتی است. این امر مدیران بازاریابی را مجبور به رقابت برای تصمیم گیری بهتر کرده است. افزایش در دسترسقدرت محاسباتی باعث شده است که کارگران از EA برای حل مسئله استفاده کنند.

بهینه سازی تبدیل

مدل سازی و الگوریتم ژنتیک
مدل سازی و الگوریتم ژنتیک

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

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

توصیه شده: