Genetic Algorithm (GA) آلگوریتم ژنتیک روشی برای بهینه سازی مسائل خطی و غیر خطی می باشد. آلگوریتم ژنتیک بر اساس اصل تکامل طراحی شده است. بدین منظور که اعدادی که احتمالا جوابهای مسئله می باشند در تعیین جوابهای بعدی تاثیرگذارند و در طی آلگوریتم، جوابهای قوی تر موجب رسیدن به جواب نهایی و تکامل آلگوریتم خواهد شد.
در نرم افزار متلب قسمتی جهت استفاده از این آلگوریتم در نظر گرفته شده است که مورد توجه رشته های مهندسی از جمله رشته مهندسی برق و حتی در مقاطع تحصیلات تکمیلی رشته های عمران، مکانیک، هوافضا و دیگر رشته ها بمنظور بهینه سازی مسئله کاربرد فراوان دارد.
روش حل آلگوریتم ژنتیک
GA مکررا جمعیتی از راه حل های مسئله را تغییر می دهد که از این تغییرات تحت عنوان تکامل یاد می شود. در هرگام از این تکامل دو عضو از جمعیت را به طور تصادفی به عنوان والدین انتخاب کرده و فرزند آنها را بعنوان نسل بعدی در نظر می گیرد. به این ترتیب جمعیت به سمت یک راه حل بهینه تکامل می یابد. با استفاده از این آلگوریتم می توان بسیاری از مسائل بهینه سازی را که با آلگوریتم های استاندارد بهینه سازی حل نمی شود، حل نمود.
اصطلاحات و قوانین آلگوریتم ژنتیک
برای استفاده از این آلگوریتم ابتدا می بایست تعاریف و اصطلاحات را فراگرفت. برای درک بهتر با یک مثال ساده شروع می کنیم. فرض کنید هدف پیدا کردن کمینه تابع
می دانیم تابع فوق در مقدار x=0 کمترین مقدار را خواهد داشت و مقدار تابع y =1 خواهد شد که با روش مشتق گیری به راحتی می توان به این جواب رسید. و اما
مهمترین اصطلاحات آلگوریتم ژنتیک در قالب یک مثال ساده، عبارت است از:
الف) chromosomal: کروموزوم ها یا همان جواب های مسئله. درواقع اعداد x هر کدام کروموزوم می باشند. مثلا اعداد 1، 12، 542 و …. هر کدام یک کروموزوم برای مسئله فوق خواهند بود
ب) Fitness Function: تابع هدف، مسئله یا تابعی که قرار است کمینه یا بیشینه آن محاسبه شود. مثلا تابعی که در بالا ذکر شد. تابع هدف می تواند وزن یک سازه، میزان هزینه یک پروژه باشد اگر تابع هدف متناسب با هزینه باشد به آن تابع هزینه میگویند و هدف کمینه کردن تابع هزینه است. در مقابل اگر تابع هدف مثلا کیفیت رانندگی یا ایمنی یک خودرو باشد مسلما تابع هدف می بایست بیشینه شود و در این حالت مقدار ماکزیمم تابع بعنوان بهینه سازی اعلام می گردد.
پ) Population: جمعیت، جوابهای تصادفی هستند که با عملگرها و سعی و خطا به جواب می رسند. مثلا یک جمعیت 200 تایی، می تواند اعداد کاملا تصادفی باشند مثلا: 1، 56372، 124 و ….
ت) Generation: نسل، هر بار که جوابها ادغام میشوند (والدین=parents) و نسل جدیدی از جوابها بدست می آید (children=فرزندان) یک نسل تولید شده است. مثلا اعداد 1، 56372، 124 و … داخل تابع قرار داده میشوند و هر عددی مقدار تابعی را خواهد داد. جوابها بر اساس کمترین مقدار رتبه بندی و مرتب می شوند، اعداد x ای که کمترین جوابها را بدست آورده اند نگه داشته می شوند و نسل بعدی با استفاده از ترکیب و جهش تولید می شود.
ث) Selection: انتخاب، این عملگر با استفاده از روش های مختلف مثل، روش تصادفی یکنواخت، روش انتخاب مسابقه ای و روش چرخ گردان رولت انجام می شود. در مثال فوق مقدار تابع به ازای مقادیر 0 و 1 و 1- مقادیر کمتری خواهد داشت بنابراین شانس انتخاب این اعداد نسبت به عدد 56372 بیشتر است که این درصد شانس بیشتر در روش های انتخاب، اعمال می گردد.
عملگرهای آلگوریتم ژنتیک
1) crossover: ترکیب (تلفیق)، این عملگر با استفاده از روش هایی مثل ترکیب یک نقطه ای، دو نقطه ای یا دیگر ترکیب پراکنده، موجب ترکیب جوابها خواهد شد.
2)mutation: جهش، همانطور که در طبیعت جهش ژنتیکی وجود دارد وجود جوابهایی که در نسل قبل وجود نداشته موجب تکامل و پراکندگی جوابهای احتمالی خواهد شد و این عملگر موجب پویایی و جلوگیری از قرارگیری آلگوریتم در کمینه های موضعی می شود.
3) Elit count: تعداد 5 درصد جوابهایی که تابع هدف را بهینه می کنند بعنوان جوابهای نخبه، مستقیما به مرحله بعد می روند.
بعد از یادگیری مفاهیم و اصطلاحات آلگوریتیم ژنتیک، نیازمند ابزار و نرم افزاری هستیم که بتوانیم این آلگوریتم را پیاده کرده و مسئله بهینه سازی را حل نمائیم. نرم افزار متلب این قابلیت را فراهم می کند. خوشبختانه ورژن های متلب 2010 الی 2019 در قسمت GA تفاوت چندانی ندارد و با استفاده از Help نرم افزار می توانیم از این روش بهینه سازی استفاده کنیم.
کتاب فارسی “آشنایی با متلب مصطفی کیا” می تواند راهنمای فارسی مناسب برای آشنایی با آلگوریتم ژنتیک باشد. و توصیه می گردد مثال های Help نرم افزار نیز حتما استفاده گردد.
برخی قابلیت های نرم افزار متلب
نرم افزار متلب علاوه بر بهینه سازی با استفاده از آلگوریتم ژنتیک، قابلیت استفاده از منطق فازی به روش منطق استنتاجی ممدانی و سوگنو نیز انجام دهد. قسمت مربوط به فازی متلب در رشته کنترل برق بسیار کاربرد دارد. یکی از قسمت های کاربردی و نوین در زمینه صنعت استفاده از منطق فازی متلب می باشد. علاوه برآن متلب قابلیت کدنویسی به صورت متن (M-file) دارد که زبان برنامه نویسی متلب نسبت به برنامه C++ ساده تر است و معمولا Error و اشتباهات کمتری از کاربر می گیرد لذا کار با آن آسانتر است.
حل مسائل ریاضی، رسم نمودارها، عملیات انتگرال و مشتق گیری و… از دیگر قابلیت های این نرم افزار پرکاربرد است.
سرفصل نرم افزار متلب
رئوس دوره ” تحلیلگر داده با نرم افزار متلب” مطابق سرفصل آموزشی فنی و حرفه ای به شرح زیر است:
1. نصب نرم افزار
2. کار با محیط MATLAB
3. انجام محاسبات ریاضی با MATLAB
4. کار با بردارها و ماتریس ها در MATLAB
5. حل معادالت جبری با MATLAB
6. حل معادالت دیفرانسیل و انتگرال با MATLAB
7. رسم گرافیک در MATLAB
8. برنامه نویسی در MATLAB
9. ایجاد یک واسط گرافیکی GUI
10. شبیه سازی Simulink
هنرجویان این رشته پس از گذراندن دوره متلب و قبولی در آزمون فنی و حرفه ای، مدرک تحلیلگر داده متلب را اخذ خواهند کرد.