مقدمه‌ای بر الگوریتم‌های ژنتیک

الگوریتم ژنتیک یک روش اکتشافی است که از نظریه تکامل طبیعی چارلز داروین الهام‌گرفته شده‌است. این الگوریتم فرآیند انتخاب طبیعی را منعکس می‌کند که در آن افراد شایسته برای تولید مثل به منظور تولید فرزندان نسل بعدی انتخاب می‌شوند. ​

مفهوم انتخاب طبیعی

​​​​​فرآیند انتخاب طبیعی با انتخاب شایسته‌ترین افراد از یک جمعیت آغاز می‌شود. آن‌ها فرزندهایی تولید می‌کنند که ویژگی‌های والدین را به ارث می‌برند و به نسل بعدی اضافه خواهند شد. اگر والدین تناسب بهتری داشته باشند، فرزندان آن‌ها بهتر از والدین خواهند بود و شانس بیشتری برای زنده ماندن خواهند داشت. این فرآیند تکرار می‌شود و در نهایت، نسلی با شایسته‌ترین افراد پیدا خواهد شد. ​

این مفهوم را می توان برای یک مساله جستجو به کار برد. ما مجموعه‌ای از راه‌حل‌ها را برای یک مساله در نظر می‌گیریم و مجموعه‌ای از بهترین راه‌حل‌ها را از میان آن‌ها انتخاب می‌کنیم. ​

پنج فاز در یک الگوریتم ژنتیک در نظر گرفته می‌شوند.

  1. جمعیت اولیه - Initial population
  2. تابع تناسب - Fitness function
  3. انتخاب - Selection
  4. ترکیب - Crossover
  5. جهش - Mutation

جمعیت اولیه - Initial population

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

یک فرد با مجموعه‌ای از پارامترها (‏متغیرها) ‏شناخته‌شده به نام ژن‌ها مشخص می‌شود. ژن‌ها به یک رشته متصل می‌شوند تا یک کروموزوم (‏راه‌حل) ‏را تشکیل دهند. ​

در یک الگوریتم ژنتیک، مجموعه ژن‌های یک فرد با استفاده از یک رشته به صورت الفبایی نمایش داده می‌شود. معمولا مقادیر باینری استفاده می‌شوند (‏رشته 1s و 0s)‏. ما می‌گوییم که ژن‌ها را در یک کروموزوم کدگذاری می‌کنیم. ​


جمعیت، کروزوم‌ها و ژن‌ها ​​​​​​​​
جمعیت، کروزوم‌ها و ژن‌ها ​​​​​​​​


تابع تناسب - Fitness function

​​​تابع تناسب تعیین می‌کند که یک فرد چقدر مناسب است (‏توانایی یک فرد برای رقابت با افراد دیگر)‏. این کار به هر فرد امتیاز تناسب می‌دهد. احتمال اینکه یک فرد برای تولید مثل انتخاب شود براساس امتیاز تناسب آن است.


انتخاب - Selection​​​​​​​​

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

دو جفت از افراد (‏والدین) ‏براساس امتیاز تناسب انتخاب می‌شوند. افراد با تناسب بالا شانس بیشتری برای انتخاب شدن برای تولید مثل دارند.


ترکیب - Crossover

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

به عنوان مثال، نقطه ترکیب را ۳ در نظر بگیرید که در زیر نشان‌داده شده‌است.​​​


نقطه ترکیب
نقطه ترکیب


​​​​​​​​فرزندان با تبادل ژن‌های والدین بین خودشان ایجاد می‌شوند تا به نقطه ترکیب برسند. ​


ژن‌های در حال تغییر در میان والدین
ژن‌های در حال تغییر در میان والدین


فرزندان جدید به جمعیت اضافه می‌شوند. ​


فرزندان جدید ​​​​​​​
فرزندان جدید ​​​​​​​

جهش - Mutation

در برخی از فرزندان جدید تشکیل شده، برخی از ژن‌های آن‌ها می‌تواند در معرض جهش با احتمال تصادفی پایین قرار گیرند. این نشان می‌دهد که برخی از بیت‌ها در رشته بیتی می‌توانند برگردانده شوند.​​​​​


جهش: قبل و بعد
جهش: قبل و بعد

​​​​​​​

جهش برای حفظ تنوع در جمعیت و جلوگیری از هم‌گرایی زودهنگام رخ می‌دهد. ​


پایان

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

توضیحات

​​​​​​​جمعیت یک اندازه ثابت دارد. همانطور که نسل‌های جدید شکل می‌گیرند، افراد با کم‌ترین تناسب می‌میرند و فضایی را برای فرزندان جدید فراهم می‌کنند.

توالی فازها برای تولید افراد در هر نسل جدید که بهتر از نسل قبلی هستند، تکرار می‌شود. ​


شبه کد



Source: Introduction to Genetic Algorithms — Including Example Code | by Vijini Mallawaarachchi | Towards Data Science