آموزش الگوریتم ژنتیک به زبان فارسی
الگوریتم ژنتیک چیست؟
الگوریتم ژنتیک-(Genetic Algorithm – GA) تکنیک جستجویی در علم رایانه برای یافتن راهحل تقریبی برای بهینهسازی و مسائل جستجو است. الگوریتم ژنتیک نوع خاصی از الگوریتمهای تکامل است که از تکنیکهای زیستشناسی مانند وراثت و جهش استفاده میکند.
الگوریتم ژنتیک که بهعنوان یکی از روشهای تصادفی بهینه یابی شناخته شده, توسط جان هالند در سال ۱۹۶۷ ابداع شدهاست. بعدها این روش با تلاشهای گلدبرگ ۱۹۸۹, مکان خویش را یافته و امروزه نیز بواسطه تواناییهای خویش , جای مناسبی در میان دیگر روشها دارد.
الگوریتمهای ژنتیک معمولاً به عنوان یک شبیهساز کامپیوتر که در آن جمعیت یک نمونهٔ انتزاعی (کروموزومها) از نامزدهای راهحل یک مسأله بهینهسازی به راه حل بهتری منجر شود، پیادهسازی میشوند. به طور سنتی راهحلها به شکل رشتههایی از ۰ و ۱ بودند، اما امروزه به گونههای دیگری هم پیادهسازی شدهاند. فرضیه با جمعیتی کاملاً تصادفی منحصر بفرد آغاز میشود و در نسلها ادامه مییابد. در هر نسل گنجایش تمام جمعیت ارزیابی میشود، چندین فرد منحصر در فرایندی تصادفی از نسل جاری انتخاب میشوند (بر اساس شایستگیها) و برای شکل دادن نسل جدید، اصلاح میشوند (کسر یا دوباره ترکیب میشوند) و در تکرار بعدی الگوریتم به نسل جاری تبدیل میشود
برای مثال اگر بخواهیم نوسانات قیمت نفت را با استفاده از عوامل خارجی و ارزش رگرسیون خطی ساده مدل کنیم، این فرمول را تولید خواهیم کرد : قیمت نفت در زمان t = ضریب 1 نرخ بهره در زمان t + ضریب 2 نرخ بیکاری در زمان t + ثابت 1 . سپس از یک معیار برای پیدا کردن بهترین مجموعه ضرایب و ثابتها جهت مدل کردن قیمت نفت استفاده خواهیم کرد. در این روش 2 نکته اساسی وجود دارد. اول این که روش خطی است و مسئله دوم این است که ما به جای اینکه در میان “فضای پارامترها” جستجو کنیم، پارامترهای مورد استفاده را مشخص کردهایم.
با استفاده از الگوریتم ژنتیک ما یک ابر فرمول یا طرح، تنظیم میکنیم که چیزی شبیه “قیمت نفت در زمان t تابعی از حداکثر 4 متغیر است” را بیان میکند.سپس دادههایی برای گروهی از متغیرهای مختلف،شاید در حدود 20 متغیر فراهم خواهیم کرد. سپس الگوریتم ژنتیک اجرا خواهد شد که بهترین تابع و متغیرها را مورد جستجو قرار میدهد.روش کار الگوریتم ژنتیک به طور فریبندهای ساده،خیلی قابل درک و به طور قابل ملاحظهای روشی است که ما معتقدیم حیوانات آنگونه تکامل یافتهاند.هر فرمولی که از طرح داده شده بالا تبعیت کند فردی از جمعیت فرمولهای ممکن تلقی میشود.
متغیرهایی که هر فرمول دادهشده را مشخص میکنند به عنوان یکسری از اعداد نشان دادهشدهاند که معادل [دی ان ای|دی.ان.ای](DNA) آن فرد را تشکیل میدهند.
موتور الگوریتم ژنتیک یک جمعیت اولیه از فرمول ایجاد میکند.هر فرد در برابر مجموعهای از دادههای مورد آزمایش قرار میگیرند و مناسبترین آنها (شاید 10 درصد از مناسبترینها) باقی میمانند؛ بقیه کنار گذاشته میشوند.مناسبترین افراد با هم جفتگیری (جابجایی عناصر دی ان ای) و تغییر (تغییر تصادفی عناصر دی ان ای) کردهاند. مشاهده میشود که با گذشت از میان تعداد زیادی از نسلها، الگوریتم ژنتیک به سمت ایجاد فرمولهایی که دقیقتر هستند، میل میکنند. در حالی که شبکههای عصبی هم غیرخطی و غیرپارامتریک هستند، جذابیت زیاد الگوریتمهای ژنتیک این است نتایج نهایی قابل ملاحظهترند. فرمول نهایی برای کاربر انسانی قابل مشاهده خواهد بود، و برای ارائه سطح اطمینان نتایج میتوان تکنیکهای آماری متعارف را بر روی این فرمولها اعمال کرد. فناوری الگوریتمهای ژنتیک همواره در حال بهبود است و برای مثال با مطرح کردن معادله ویروسها که در کنار فرمولها و برای نقض کردن فرمولهای ضعیف تولید میشوند و در نتیجه جمعیت را کلاً قویتر میسازند.
مختصراً گفته میشود که الگوریتم ژنتیک (یا GA) یک تکنیک برنامهنویسی است که از تکامل ژنتیکی به عنوان یک الگوی حل مسئله استفاده میکند.مسئلهای که باید حل شود ورودی است و راه حلها طبق یک الگو کدگذاری میشوند که تابع fitness نام دارد و هر راه حل کاندید را ارزیابی میکند که اکثر آنها به صورت تصادفی انتخاب میشوند.
الگوریتم ژنتیک (GA) یک تکنیک جستجو در علم رایانه برای یافتن راه حل بهینه و مسائل جستجو است. الگوریتمهای ژنتیک یکی از انواع الگوریتمهای تکاملیاند که از علم زیستشناسی مثل وراثت، جهش، [انتخاب ناگهانی(زیستشناسی)|انتخاب ناگهانی]، انتخاب طبیعی و ترکیب الهام گرفته شده.
عموماً راهحلها به صورت 2 تایی 0 و 1 نشان داده میشوند، ولی روشهای نمایش دیگری هم وجود دارد. تکامل از یک مجموعه کاملاً تصادفی از موجودیتها شروع میشود و در نسلهای بعدی تکرار میشود. در هر نسل، مناسبترینها انتخاب میشوند نه بهترینها.
یک راهحل برای مسئله مورد نظر، با یک لیست از پارامترها نشان داده میشود که به آنها کروموزوم یا ژنوم میگویند. کروموزومها عموماً به صورت یک رشته ساده از دادهها نمایش داده میشوند، البته انواع ساختمان دادههای دیگر هم میتوانند مورد استفاده قرار گیرند. در ابتدا چندین مشخصه به صورت تصادفی برای ایجاد نسل اول تولید میشوند. در طول هر نسل، هر مشخصه ارزیابی میشود وارزش تناسب (fitness) توسط تابع تناسب اندازهگیری میشود.
گام بعدی ایجاد دومین نسل از جامعه است که بر پایه فرآیندهای انتخاب، تولید از روی مشخصههای انتخاب شده با عملگرهای ژنتیکی است: اتصال کروموزومها به سر یکدیگر و تغییر.
برای هر فرد، یک جفت والد انتخاب میشود. انتخابها به گونهایاند که مناسبترین عناصر انتخاب شوند تا حتی ضعیفترین عناصر هم شانس انتخاب داشته باشند تا از نزدیک شدن به جواب محلی جلوگیری شود. چندین الگوی انتخاب وجود دارد: چرخ منگنهدار(رولت)، انتخاب مسابقهای (Tournament) ،…
معمولاً الگوریتمهای ژنتیک یک عدد احتمال اتصال دارد که بین 0.6 و 1 است که احتمال به وجود آمدن فرزند را نشان میدهد. ارگانیسمها با این احتمال دوباره با هم ترکیب میشوند. اتصال 2 کروموزوم فرزند ایجاد میکند، که به نسل بعدی اضافه میشوند. این کارها انجام میشوند تا این که کاندیدهای مناسبی برای جواب، در نسل بعدی پیدا شوند. مرحله بعدی تغییر دادن فرزندان جدید است. الگوریتمهای ژنتیک یک احتمال تغییر کوچک و ثابت دارند که معمولاً درجهای در حدود 0.01 یا کمتر دارد. بر اساس این احتمال، کروموزومهای فرزند به طور تصادفی تغییر میکنند یا جهش مییابند، مخصوصاً با جهش بیتها در کروموزوم ساختمان دادهمان.
این فرآیند باعث به وجود آمدن نسل جدیدی از کروموزومهایی میشود، که با نسل قبلی متفاوت است. کل فرآیند برای نسل بعدی هم تکرار میشود، جفتها برای ترکیب انتخاب میشوند، جمعیت نسل سوم به وجود میآیند و …. این فرآیند تکرار میشود تا این که به آخرین مرحله برسیم.
عملگرهای یک الگوریتم ژنتیک
در هر مسئله قبل از آنکه بتوان الگوریتم ژنتیک را برای یافتن یک پاسخ به کار برد به دو عنصر نیاز است: اول روشی برای ارائه یک جواب به شکلی که الگوریتم ژنتیک بتواند روی آن عمل کند لازم است. به شکل سنتی یک جواب به صورت یک رشته از بیتها، اعداد یا نویسه ها.نمایش داده میشود.دوم روشی لازم است که بتواند کیفیت هر جواب پیشنهاد شده را با استفاده از توابع تناسب محاسبه نماید. مثلاً اگر مسئله هر مقدار وزن ممکن را برای یک کوله پشتی مناسب بداند بدون اینکه کوله پشتی پاره شود، (مسئله کوله پشتی را ببینید) یک روش برای ارائه پاسخ میتواند به شکل رشته ای از بیتهای ۰ و۱ در نظر گرفته شود, که ۱ یا ۰ بودن نشانه اضافه شدن یا نشدن وزن به کوله پشتی است.تناسب پاسخ، با تعیین وزن کل برای جواب پیشنهاد شده اندازه گیری میشود.
روال بهینه یابی در الگوریتم ژنتیک براساس یک روند تصادفی- هدایت شده استوار میباشد. این روش,بر مبنای نظریه تکامل تدریجی و ایدههای بنیادین داروین پایه گذاری شدهاست.در این روش , ابتدا برای تعدادی ثابت که جمعیت نامیده میشود مجموعهای از پارامترهای هدف بصورت اتفاقی تولید میشود , پس از اجرای برنامه شبیه ساز عددی را که معرف انحراف معیار و یا برازش آن مجموعه از اطلاعات است را به آن عضو از جمعیت مذکور نسبت میدهیم. این عمل را برای تک تک اعضای ایجاد شده تکرار میکنیم , سپس با فراخوانی عملگرهای الگوریتم ژنتیک از جمله لقاح , جهش و انتخاب نسل بعد را شکل میدهیم و این روال تا ارضای معیار همگرایی ادامه داده خواهد شد.
بصورت متداول سه معیار بهعنوان معیار توقف شمرده میشود: ۱. زمان اجرای الگوریتم ۲. تعداد نسلهایی که ایجاد میشوند ۳. همگرایی معیار خطا
کاربردهای الگوریتم ژنتیک :
• روندیابی هیدرولوژیکی رواناب جاری در شبکه رودخانه خشک
• کمک در حل مسایل تصمیم گیری چند معیاره
• بهینه سازی چند هدفه در مدیریت منابع آبی
• بهینه سازی و بارآرایی شبکه های توزیع نیروی برق
شرایط خاتمه الگوریتمهای ژنتیک عبارتند از:
به تعداد ثابتی از نسلها برسیم.
بودجه اختصاص دادهشده تمام شود(زمان محاسبه/پول).
یک فرد(فرزند تولید شده) پیدا شود که مینیمم (کمترین) ملاک را برآورده کند.
بیشترین درجه برازش فرزندان حاصل شود یا دیگر نتایج بهتری حاصل نشود.
بازرسی دستی.
ترکیبهای بالا.
آموزش الگوریتم ژنتیک به زبان فارسی
فایل پی دی اف