الگوریتمهای ژنتیک به انگلیسی : (Genetic algorithm) تکنیک جستجو در علم رایانه برای یافتن راهحل تقریبی برای بهینهسازی مدل، ریاضی و مسائل جستجو است. الگوریتم ژنتیک نوع خاصی از الگوریتمهای تکاملی است که از تکنیکهای زیست شناسی فرگشتی مانند وراثت، جهش زیستشناسی و اصول انتخابی داروین برای یافتن فرمول بهینه جهت پیشبینی یا تطبیق الگو استفاده میشود. الگوریتمهای ژنتیک اغلب گزینه خوبی برای تکنیکهای پیشبینی بر مبنای رگرسیون هستند. مدلسازی الگوریتم ژنتیک یک تکنیک برنامهنویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مسئله استفاده میکند.
مسئلهای که باید حل شود دارای ورودیهایی میباشد که طی یک فرایند الگوبرداری شده از تکامل ژنتیکی به راهحلها تبدیل میشود سپس راه حلها به عنوان کاندیداها توسط تابع برازش یا تابع برازندگی (Fitness Function) مورد ارزیابی قرار میگیرند و چنانچه شرط خروج مسئله فراهم شده باشد الگوریتم خاتمه مییابد. بهطور کلی یک الگوریتم مبتنی بر تکرار است که اغلب بخشهای آن به صورت فرآیند های تصادفی انتخاب میشوند که این الگوریتمها از بخشهای تابع برازش، نمایش، انتخاب و تغییر تشکیل میشوند.
در علوم کامپیوتر و تحقیقات عملیاتی ، یک الگوریتم ژنتیک (GA) یک متاهوریست است که از فرایند انتخاب طبیعی الهام گرفته شده و متعلق به طبقه بزرگتر الگوریتم های تکاملی (EA) است. الگوریتم های ژنتیک معمولاً برای تولید راه حل های با کیفیت بالا برای بهینه سازی و مشکلات جستجو با اتکا به عملگرهای الهام گرفته از نظر بیولوژیکی مانند جهش ، متقاطع و انتخاب استفاده می شوند.
بسیاری از اختراعات بشری از طبیعت الهام گرفته شدهاند. شبکه های عصبی مصنوعی نمونه بارز چنین ابداعاتی هستند. یکی دیگر از چنین ابداعاتی، توسعه ایده الگوریتم ژنتیک است. الگوریتمهای ژنتیک، با شبیهسازی (Simulating) فرایند تکامل در طبیعت، با هدف یافتن بهترین جواب ممکن برای یک مسأله، به جستجو در فضای جوابهای کاندید (Candidate Solution Space) میپردازند. در فرایند جستجو برای یافتن جواب بهینه، ابتدا مجموعه یا جمعیتی از جوابهای ابتدایی تولید میشود. سپس، در نسلهای (Generations) متوالی، مجموعهای از جوابهای تغییر یافته تولید میشوند (در هر نسل از الگوریتم ژنتیک، تغییرات خاصی در ژنهای کروموزومهای تشکیل دهنده جمعیت ایجاد میشود). جوابهای اولیه معمولا به شکلی تغییر میکنند که در هر نسل، جمعیت جوابها به سمت جواب بهینه همگرا (Converge) میشوند.
الگوریتم های ژنتیک در دهه گذشته به طور فزاینده ای در مهندسی مورد استفاده قرار گرفته اند ، زیرا به عنوان ابزاری برای بهینه سازی در طراحی مهندسی در نظر گرفته می شود. این کار استفاده از الگوریتم های ژنتیک را برای حل مشکلات پیچیده بهینه سازی ، مدیریت عدم قطعیت در سناریوهای معمولی صنعتی معرفی می کند. در این زمینه ، این کار از GA به عنوان یک ابزار بهینه سازی برای تصمیم گیری برای تعیین تولید مطلوب ، سطح موجودی و توزیع در مشکل برنامه ریزی زنجیره تامین تحت عدم قطعیت استفاده می کند.
تاکنون محصولات متنوعی برای آموزش مباحث تئوری و عملی الگوریتم ژنتیک ارائه شده اند، یکی از بهترین این محصولات برنامه (MATLAB) است. این محصول شامل همه مطالبی است که شما باید در مورد الگوریتم ژنتیک بدانید و از نظر برنامه نویسی نیز کامل ترین محصولی است که تاکنون در مورد الگوریتم های ژنتیکی ارائه شده است.
این الگوریتم شامل مراحل مختلفی می شود که در هر یک از این مراحل اتفاق به خصوصی رخ می دهد و بدین ترتیب ادامه چرخه امکان پذیر میشود.
۱- ارزش دهی آغازی یا جمعیت اولیه: نخستین گام جهت آغاز یک الگوریتم ژنتیک، تعیین و ارائه تعریف دقیقی از جمعیت است. بنابراین جمعیت ما شامل اشخاصی می شود که هر یک از آنها مجموعه کروموزوم مختص به خود را دارند.
۲- تابع برازندگی: تابع برازندگی، عملکردی است که از طریق آن “مقدار برازندگی” هر یک از اعضای تشکیل دهنده جمعیت اولیه تعیین می شود. پس از اینکه مقدار برازندگی اعضا مشخص شد، جواب های کاندید انتخاب می شود.
۳- انتخاب: در این مرحله از الگوریتم ژنتیک، نوبت آن است که کروموزوم هایی که قصد تکثیر رشته های آنها را داریم، انتخاب کنیم. تصور کلی افراد در این مرحله آن است که ما باید کروموزم های برازنده را انتخاب کنیم و اجازه دهیم که این رشته های DNA تکثیر پیدا کنند.
۴- ترکیب یا آمیزش: حال که به کروموزم های برازنده انتخاب شدند، نوبت آن است که رشته ها یا کروموزم های مناسب تری تولید شوند اما ترکیب کروموزوم ها به چه صورت رخ خواهد داد؟
۵- جهش: چنانچه از دیدگاه زیست شناسی نگاه کنیم، فرزندان دقیقا از همان صفات والدین برخوردار نیستند. اما چرا واقعیت این گونه است؟ در حقیقت در طول رشد کودکان، تغییراتی در ژن آنها رخ می دهد که باعث می شود آنها تفاوت های بسیاری با والدین خود داشته باشند.