مجموعه آموزشی پی استور - https://programstore.ir

الگوریتم ژنتیک Genetic Algorithm

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

مقدمه

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

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

چند سال بعد از ارائه تئوری ژنتیک، چارلز داروین در سال 1859، نظریه ” منشاء انواع” را منتشر نمود. در این تئوری او به شرح و بسط نحوه تکامل موجودات زنده در قالب یک پدیده طبیعی می پردازد. تئوری ژنتیک مندل می‌توانست کمک بزرگی به داروین بنماید، ولی متأسفانه داروین از مفاد آن بی‌اطلاع بود. به هر حال، یک مشخصه مهم تئوری، تفوق بیشتر و شانس بقای انواع موجودات زنده قویتر یا سازگارتر با محیط، در طول زندگی و حتی نسل های بعدی می باشند. به عبارت ساده، قوی‌بنیه‌ها و سازگارترها زنده می‌مانند و این ویژگی را به فرزندان خود منتقل می‌کنند. داروین به این مسئله، عبارت و اصطلاح ” انتخاب طبیعی” اطلاق می‌کند. بدین ترتیب، یک رشد تکاملی سریع از موجوداتی خواهیم داشت که بهتر از والدین و نسل های قبل‌ترشان با محیط خودشان تعامل داشته و خو می‌گیرند.

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

الگوریتم ژنتیک

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

الگوریتم ژنتیک
جان هلند

ژنتیک بیولوژیکی

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

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

پاورپوینت الگوریتم ژنتیک GA [2]

پاورپوینت آماده الگوریتم ژنتیک

پاورپوینت الگوریتم ژنتیک GA در 23 صفحه در قالب ppt. یا pptx. با قابلیت ویرایش و توضیحات اضافی برای برخی صفحات در قالب Note آماده دانلود می باشد. برای تهیه و دانلود این پاورپوینت از طریق لینک زیر اقدام کنید.

روش الگوریتم ژنتیک

الگوریتم ژنتیک روشی برای بهینه سازی [3] با جستجوی وسیع است و کارکرد آن بر اصول انتخاب طبیعی حاکم بر ژنتیک طبیعی استوار است. ایده این الگوریتم [4] از نظریه تکامل داروین الهام گرفته شده است. اگرچه این الگوریتم روشی برای جستجوی تصادفی است، ویژگی های خاص آن موجب می شود که نتوان آن را یک جستجوی تصادفی ساده قلمداد کرد. این الگوریتم جزو الگوریتم های تکاملی [5] است.

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

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

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

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

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

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

الگوریتم ژنتیک
صورت کلی یک الگوریتم ژنتیک

معرفی یک الگوریتم ژنتیک ساده

الگوریتم های ژنتیک، به‌جای آنکه بر روی پارامترها کار کنند با شکل کد شده آن ها سروکار دارند. برای مثال فرض کنید که بیشینه کردن تابع f(x,y)=X^2+Y^2 (با محدودیت‌های x و y اعداد صحیح و x بین 0 تا 7 و y بین 0 تا 31 مدنظر باشد. متداول-ترین روش کدگذاری، کدگذاری باینری است.

ازاین‌رو پارامتر با دنباله مناسبی از اعداد جایگزین می شود. هر عدد صحیح از 0 تا 31 را می‌توان با 5 بیت و هر عدد صحیح از 0 تا 7 را با 3 بیت می‌توان نمایش داد. برای مثال شکل زیر کدگذاری باینری دو متغیر x= 9 و y=5 را نشان می‌دهد.

کدگذاري باینري متغیر
بنابراین با هر نقطه از فضای دوبعدی (x,y) دنباله‌ای به‌صورت شکل زیرمتناظر است.

کدگذاري باینري نقطه (x,y)

در ادامه بحث تعاریفی بیان می شود، سپس در بخش های بعد روند کلی یک الگوریتم ژنتیکی ساده تشریح می شود.

حل مسئله TSP با الگوریتم ژنتیک [6]

فیلم آموزش حل مسئله فروشنده دوره گرد با الگوریتم ژنتیک GA در متلب

در فیلم آموزش حل مسئله TSP با الگوریتم ژنتیک GA در متلب به توضیح و تشریح تئوری و مفاهیم الگوریتم ژنتیک برای حل مسئله فروشنده دوره گرد و نحوه پیاده سازی آن در متلب پرداخته شده است. این آموزش در 1 ساعت و 48 دقیقه توسط مهندس امین جلیل زاده تدریس شده است.

تعریف‌ها

نحوه عملکرد عملگر جابجایی

عملگر جهش

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

در این مقاله آموزشی سعی شد تا یک دیدگاه کلی از الگوریتم ژنتیک برای شما باز شود. واضح است برای مطالعات تکمیلی وقت و زمان بیشتری لازم است. پیشنهاد می کنیم مقاله آموزش جامع الگوریتم ژنتیک [7] را مشاهده کنید و یا از طریق لینک زیر آموزش الگوریتم ژنتیک را تهیه و دانلود کنید. در این آموزش با حل یک مثال کاربردی نحوه کار الگوریتم ژنتیک بطور کامل تشریح شده است. امیدواریم مطالب فوق برای شما مفید بوده باشد. موفق و پیروز باشید.

آموزش نحوه پیاده سازی حل مسئله فروشنده دوره گرد با الگوریتم ژنتیک در پایتون [8]

پکیج آموزش حل مسئله فروشنده دوره گرد با الگوریتم ژنتیک در پایتون

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