در سالهای اخیر، الگوریتمهای فرا ابتکاری برای حل مسائل پیچیده در دنیای واقعی که زمینههای مختلفی مانند اقتصاد، مهندسی، سیاست، مدیریت و مهندسی را شامل میشوند، مورد استفاده قرار گرفتهاند. الگوریتم ژنتیک (GA) به عنوان روشی برای بهینهسازی ابزار جستوجو برای حل مسائل دشوار بر اساس اصل انتخاب ژنتیکی نسبت داده میشود. در این الگوریتم علاوه بر بهینهسازی به یادگیری ماشین، تحقیق و توسعه نیز پرداخته خواهد شد. این روش شبیه به تولید کروموزوم در زیستشناسی است که متغیرهایی مانند انتخاب، تقاطع و جهش با هم عملیات ژنتیکی را تشکیل میدهند که در ابتدا روی یک جمعیت تصادفی قابل اجرا هستند. چنانچه به این حیطه علاقهمندید پیشنهاد میکنیم این مقالهی پژوهشی را از دست ندهید.
فهرست مطالب
تعریف الگوریتم ژنتیک
الگوریتم ژنتیک یا GA یک الگوریتم بهینه سازی و فرا ابتکاری تعریف میگردد، این ابزار و الگوریتم برای حل مسئله های بهینه سازی اختصاصی طراحی گردیده است. این الگوریتم اولین بار توسط جان هلند (Jan Holland) در سال 1970 میلادی معرفی شد و در دهه 60 و 70 با تلاش وی و شاگردانش در دانشگاه میشیگان آمریکا توسعه پیدا کرد. جان هلند با تکیه بر نظریه تکامل وراثتی، نظریه انتخاب طبیعی و نحوه انتقال خصوصیات از والدین به فرزندان، در انسان و فرموله کردن این رفتارها به یک الگوریتم برای حل مسئله رسید که نام آن را Genetic Algorithm نامید. در سال 1992 مقالهای توسط دی جانگ، با عنوان “الگوریتم وراثتی بهینه ساز تابع نیست” ارائه شد که بیان میکرد این الگوریتم فقط یک بهینه ساز برا حل توابع ریاضی نیست بلکه توانایی بسیاری برای حل مسائل مختلف در دنیای واقعی را دارد. در ادامه الگوریتمهای فرا ابتکاری جدید فراوانی با الهام از طبیعت ایجاد شد و معرفی گردید. در واقع میتوان الگوریتم ژنتیک را به عنوان اصل پایه و اولین الگوریتم فرا ابتکاری معرفی کرد.
الگوریتم ژنتیک، تعدادی راه حل اولیه برای مسئله مورد نظر بهصورت تصادفی میسازد که به هر راه حل به اصطلاح کروموزوم گفته میشود و به مجموعه همه کروموزومها یا راه حلها اصطلاحا جمعیت گفته میشود. بعد از این که یک جمعیت به صورت تصادفی ساخته شد، الگوریتم ژنتیک میزان خوب بودن هر یک از کروموزومهای جمعیت را (با تابع شایستگی) بررسی میکند سپس سعی میکند طی سه مرحله بنامهای "انتخاب"، "ترکیب" و "جهش" راه حلها را بهبود دهد و راه حلهای جدیدی را تولید کند. در این الگوریتم از یک سری مفاهیم استفاده میشوند که عبارتند از:
- ژن (Gene)
- کروموزوم (Chromosome)
- آل (Allele)
- جمعیت (Population)
- تابع شایستگی یا تابع برازش (Fitness Function)
- تولید مثل (Reproduction)
- عملگر انتخاب (Selection)
- عملگر ترکیب (Crossover)
- عملگر جهش (Mutation)
- همگرایی (Convergence)
الگوریتم ژنتیک در متلب
یکی از شناخته شدهترین روشهای بهینه سازی هوشمند الگوریتم ژنتیک در متلب محسوب میگردد. الگوریتم ژنتیک در متلب یکی از ابزارهای قدرتمند برای حل مسائل بهینهسازی و جستوجو به شمار میرود. متلب به عنوان یک محیط برنامهنویسی و محاسباتی، امک
انات فراوانی برای پیادهسازی و استفاده از الگوریتمهای ژنتیک فراهم میکند. کاربران از رشتههای مختلف با استفاده از نرم افزار متلب از این الگوریتم برای پیشبرد اهداف پژوهشی استفاده میکنند. اهمیت این الگوریتم در محاسبات تکاملی و همچنین هوش محاسباتی در مسائلی که برای حل آنها از الگوریتم در متلب استفاده میشود نمود پیدا میکند. در جعبه ابزار نرم افزار MATLAB کدهای آماده الگوریتم ژنتیک وجود دارد و محققین میتوانند از این کدهای آماده برای بهینه سازی مسائل ریاضی استفاده کنند. این الگوریتم را میتوان از اول تا آخر در نرم افزار متلب کدنویسی کرد. از جمله مسائل و کاربردهای الگوریتم ژنتیک در متلب میتوان به موارد زیر اشاره کرد:
- مسئله مکانیابی در مدلهای ریاضی
- مسئله حمل و نقل
- حل مسائل تخصیص و شناسایی و مدلسازی سیستم
- کمک کننده در تست نرمافزارها
- طراحی بهینه سازهها
- بهینهسازی الگوریتمهای تولید متن یا تصویر
- شناسایی الگوها در دادههای ژنتیکی
- بهینهسازی مدلها برای پیشبینی رفتار سیستمها
- طراحی مدارهای الکتریکی بهینه
- بهینهسازی در زنجیره تأمین برای کاهش هزینه
- شبیهسازی و پیشبینی رفتار بازار
- بهینه سازی ایمپلنتها و پروتزهای ارتوپدی
- کمککننده در مسیر حرکت و کنترل رباتها
مراحل انجام پروژههای الگوریتم ژنتیک در متلب:
- نمایش دامنه متغیر مسئله
- تعریف یک تابع برازش
- تولید تصادفی جمعیت اولیه
- محاسبه برازش هر کروموزوم منفرد
- انتخاب یک جفت کروموزوم
- ایجاد یک جفت کروموزوم فرزند
مراحل الگوریتم ژنتیک
پنج فاز و مرحله برای الگوریتم ژنتیک در نظر گرفته میشود:
- جمعیت اولیه
- عملگر سازگاری
- انتخاب
- ترکیب
- جهش
این رویکرد 5 مرحلهای به ویژه در زمینههای مهندسی و برنامهریزی مفید است، به خصوص در جایی که روشهای سنتی حل مسئله ممکن است به دلیل پیچیدگی و تعداد راهحلهای ممکن غیرعملی باشند. در جدول زیر 5 فاز به طور کامل توضیح داده شدهاند:
مراحل الگوریتم ژنتیک |
توضیحات |
جمعیت اولیه (Initial population) |
این فرآیند با مجموعهای از نمونههای اولیه و راه حلها آغاز میشود جمعیت (population) نامیده میشود. هر نمونه از این جمعیت یک راه حل برای مشکلی است که ما میخواهیم آن را حل کنیم. هر نمونه این جمعیت به وسیلهی مجموعهای از پارامترها توصیف و طبقه بندی میشود که به هر یک از این پارامترها ژن (Genes) گفته میشود. این ژنها به هم میپیوندند و تولید یک رشته به نام کروموزوم (Chromosome) میکنند که تمام ویژگیهای راه حل ما را ارائه میدهد. |
عملگر سازگاری (Fitness function) |
مرحله دوم الگوریتم ژنتیک عملگر سازگاری است که مشخص میکند هر نمونه این جامعه به چه میزان قابلیت سازگاری با محیط را دارد، با این کار به هر یک از نمونهها امتیازی اختصاص داده میشود و احتمال این که یک نمونه از جامعه برای ادامه نسل انتخاب شود به این امتیاز که بر اساس سازگاری به آن اختصاص داده میشود بستگی دارد. عملگر سازگاری باید دو ویژگی مهم را داشته باشد: این عملگر باید به اندازه کافی برای انجام محاسبات سریع باشد و باید بتواند به صورت کمی میزان سازگاری راه حلهای اولیه و همچنین راه حلهای به وجود آمده از ترکیب دو راه حل والد را به داشته باشد. |
انتخاب (Selection) |
انتخاب فرآیند گزینش والدهای مناسبی است که بتوانند با هم ترکیب شوند و نسلهای بعدی را به وجود آورد. در این مرحله ما بهترین و سازگارترین نمونه جامعه را انتخاب میکنیم و به آنها اجازه میدهیم که ژنهای خود را به نسل بعد انتقال دهند. دو جفت نمونه از این جمعیت برحسب بیشترین سازگاری انتخاب میشوند که ما آنها را والد مینامیم. افراد با بالاترین سازگاری شانس بیشتری برای انتخاب شدن و ادامه نسل دارند. |
ترکیب (Crossover) |
ترکیب مهمترین و اساسیترین فاز و مرحله الگوریتم ژنتیک محسوب میشود. هر کدام از این جفت والدها با هم ترکیب میشوند و نمونه جدید به وجود میآورند نقطه بازترکیب به صورت تصادفی در داخل ژنها انتخاب میشود. نمونههای جدید با انتقال جابهجایی ژنهای والد و انتقال یک ژن از والد اول به والد دوم و برعکس به وجود میآیند. این جابجایی از ابتدای ژنها تا نقطه بازترکیب به صورت متناظر صورت میگیرد و فرزندان جدید به جمعیت اضافه میشوند. |
جهش (Mutation) |
پس از شکلگیری نمونههای جدید بعضی از ژنها دچار جهش میشوند که احتمال تصادفی بودن این جهش کم است. هدف اصلی جهش نگه داشتن تنوع و تمایز میان جمعیت و جلوگیری از همگرا شدن زودهنگام جمعیت به یک نوع خاص است. |
اهمیت یادگیری الگوریتم ژنتیک
در دههی اخیر الگوریتمهای ژنتیک با توانایی کاوش در فضاهای بزرگ و پیچیده و یافتن بهترین راه حل ممکن به عنوان یک ابزار مدل سازی مناسب معرفی شدهاند. مهندسین و پژوهشگران با استفاده از نرم افزارهای کد نویسی مانند پایتون و متلب این الگوریتمهای را اجرا میکنند. این الگوریتمها در سرعت بخشیدن به مسائل عمرانی مانند ساخت سازههای عظیم و بهینه نمودن آنها برای تبدیلشدن بهترین و مستحکمترین نوع ساخت و حتی در طراحی تجهیزات پزشکی تاثیر بسزایی دارند. یادگیری الگوریتم ژنتیک در متلب نیز با توجه به مسائل بیان شده از اهمیت بالایی برخوردار است زیرا با توانایی حل مسائل پیچیده در الگوریتمهای ژنتیک در بسیاری از رشتهها نقش کلیدی ایفا میکند و میتواند بهینهسازی را برای شکلهای مختلفی از مسئله به اجرا درآورد. یادگیری این الگوریتم برای دانشجویان و پژوهشگران کمک میکند تا با روشهای پیشرفتهتر برای حل مسائل خود آشنا شوند.
شما میتوانید دوره آموزش نرم افزار متلب را به صورت تخصصی در گروه آموزشی پارس پژوهان آغاز نمایید و از تجربیات بهترین اساتید این مجموعه در حیطهی الگوریتم ژنتیک در رشتههای مختلف تحصیلی بهرهمند شوید. در ادامه برخی از مهمترین دورههای گروه آموزشی پارس پژوهان مرتبط را مشاهده مینمایید:
- دوره آموزش متلب
- دوره آموزش الگوریتم ژنتیک در متلب
- دوره آموزش پردازش سیگنالهای حیاتی در متلب
- دوره آموزش پردازش سیگنال دیجیتال در متلب
- دوره آموزش پردازش تصویر در متلب
برای مشاهده یک نمونه از کاربرد الگوریتم ژنتیک در طراحی سیستمهای پزشکی و مدلسازیهای زیستی، مطالعه مقاله در مجله Multimedia Tools and Applications توصیه میشود. الگوریتم ژنتیک به دلیل توانایی بالا در حل مسائل پیچیده، به ویژه در طراحی تجهیزات و سیستمهای پزشکی، نقش پررنگی در رشته مهندسی پزشکی ایفا میکند. اگر علاقهمند به شناخت بیشتر این حوزه هستید، پیشنهاد میکنیم مقاله مهندسی پزشکی چیست؟ را مطالعه کنید.
جمع بندی
الگوریتم ژنتیک، به طور قطع شناخته شدهترین روش بهینه سازی هوشمند و الگوریتم تکاملی است که کاربردهای فراوانی در رشتههای مختلف علمی و مهندسی دارد. الگوریتم ژنتیک شامل دستهای از الگوریتمهای بهینهسازی احتمالی است. ابزار MATLAB در محاسبات برای یافتن راهحلهای تقریبی برای بهینهسازی و مسائل جستجو استفاده میشود. در مجموع، الگوریتمهای ژنتیک با بهرهگیری از اصول تکامل و سازگاری، ابزاری قدرتمند برای مقابله با مسائل پیچیده هستند. یادگیری الگوریتم ژنتیک در متلب نه تنها به دانشجویان و پژوهشگران کمک میکند تا مهارتهای فنی و تحلیلی خود را تقویت کنند بلکه آنها را برای حل مسائل واقعی و چالشهای جدید آماده میسازد.
نویسنده مقاله: سمانه خان بیگی، کارشناسی مهندسی پزشکی. صالحه علی پور کارشناس ارشد مهندسی پزشکی.