21 ژانویه 2019
پاسخ به پرسشی پیرامون الگوریتم ژنتیک و مسائل بهینهسازی — پادکست به همراه نسخه متنی
پرسشی توسط یکی از دانشجویان پیرامون «الگوریتم ژنتیک و مسائل بهینهسازی» مطرح شده بود که در یک پادکست به آن پاسخ دادهام. نسخه متنی این پادکست نیز در همین مطلب قرار گرفته است. البته، منبع اصلی همچنان فایل صوتی محسوب میشود. خوشحال میشوم در صورتی که مساله خاصی در رابطه با نسخه متنی وجود داشت، آن را از طریق بخش نظرات با من در میان بگذارید.
پاسخ به پرسشی پیرامون الگوریتم ژنتیک و مسائل بهینهسازی
ذخیره کردن این فایل صوتی: لینک دانلود
نسخه نوشتاری
دوستی سوالی را مطرح کردند با این مضمون که چطور میتوانند کد الگوریتم ژنتیک چند هدفه را که در وبسایت فرادرس قرار دارد تغییر بدهند و اصلا چه چیزهایی نیازمند تغییر هست تا بتوانند از آن برای حل «مساله بهینهسازی» (Optimization problem) خودشان که مکانیابی منابع «تولید پراکنده» (Distributed Generation) در شبکه قدرت هست، استفاده کنند.
این سوال برای خیلیها مطرح میشود. مستقل از اینکه فرد چه رشته علمی را دنبال میکند، این مساله به صورت کلی مطرح هست که مثلا در یک مساله مهندسی مکانیک، مهندسی صنایع و دیگر رشتهها چگونه میتوانم این کد را استفاده کنم. مادامی که فرد با یک مساله بهینهسازی مواجه است، هر ابزاری، مثل «الگوریتم ژنتیک» (Genetic Algorithm)، از هر نوعی که باشد یا هر ابزار بهینهسازی قابل استفاده است. به همین منظور و در راستای حل مساله، فرد باید توصیف مساله را به شکل استانداردی فراهم کند و بعد اینها را بهم وصل کند.
یکی از روشهای استاندارد این است که متغیرهای مساله را به صورت متغییرهای استانداردی که بین صفر و یک هستند – متغیرهای پیوسته – توصیف کرد. برای انجام این کار، راههای گوناگونی نیز وجود دارد. باید به این نکته نیز توجه کرد که لزومی ندارد این الگو ارتباطی به رشته خاصی داشته باشد چون بیشتر مبنای ریاضی است که در آن اهمیت دارد و تا حدی که بتوان با مساله ارتباط برقرار کرد کافی محسوب میشود و برای مثال، بدین شکل فردی با رشته تحصیلی برق نیز میتواند مسالهای که در حوزه صنایع تعریف شده را درک و با آن ارتباط برقرار کند.
به این رویکرد در مجموعههای آموزشی گوناگون پرداخته شده است. برای مثال، یکی از روشها این است که همه متغییرهای پیوسته با یک نگاشت ساده خطی تبدیل به اعداد بین صفر و یک شوند. هنگامی که فرد بخواهد مساله را جایگذاری کند، باز با عکس آن نگاشت میتواند مقادیر کنونی را به مقادیر واقعی تبدیل کند. نکته مهم اینجا است که چیزی که الگوریتم ژنتیک یا هر الگوریتم بهینهسازی دیگری با آن کار میکند، اعداد صفر و یک هستند. مزیت این کار آن است که دیگر نیازی نیست نگران «Cross Over» و «Mutation» و خیلی از پارامترهای دیگر بود. این کار به فرد این آزادی را میدهد که یک ابزار همه فن حریف داشته باشد. زیرا همه مسائل را به مسائلی با متغیرهای در بازه صفر و یک ترجمه میکند.
مساله مهم دیگر تعریف یک تابع هزینه و تابع هدف مناسب است که در آن قیدهای مختلف برای موارد گوناگون لحاظ شده باشند. برای مثال، در آموزش بهینهسازی مقید که در فرادرس منتشر شده است، مثالهای مختلفی در این رابطه وجود دارند. بخشهای گوناگونی از این آموزش رایگان هستند و میتوان با بررسی آنها با سبک کار آشنا شد. شاید مثالی مربوط به رشته تحصیلی فرد نیست، ولی مطمئنا چیزهایی برای یادگیری از آن مثال برای ایشان نیز وجود دارد. در واقع، موضوع مهم تکنیک و دانش ریاضی فرد است که پشت یک موضوع قرار دارد. همین چیزهای کوچک میتوانند با اتصال به یکدیگر راه حل جامعی برای حل مسائل باشند.
مساله دیگری که باید بر آن تاکید کنم این است که خیلی از مواقع، مشکلات و به ویژه مسائل علمی وجود دارد که افراد فکر میکنند راه حل عجیب و غریبی دارد. در حالی که اصلا اینچنین نیست. گاهی، چیزهای سادهای هستند که میتوانند کار فرد را راه بیاندازند، به درد او بخورند و کار را جلو ببرند. متاسفانه این دید زیاد وجود دارد که یک چیز کوچک و ساده نمیتواند کاری انجام بدهد. متاسفانه این دید هست و خیلی هم وجود دارد ولی باید تغییر کند. در حال حاضر به صورت کلی این توضیحات را ارائه کردم و در آینده باز هم به این موضوع خواهم پرداخت و شاید حتی مثالهای دیگری را نیز ارائه کنم.
باید به این نکته هم اشاره کنم که مجموعه آموزشهای موجود در فرادرس، به ویژه مجموعه آموزشی «بهینهسازی مقید»، مسیر خوبی را برای ورود به این موضوع ایجاد میکنند. به طور کلی، مجموعههای آموزشی که در فرادرس هستند میتوانند راهگُشا باشند، چون مسائل کاربردی حل شده با استفاده از الگوریتم به همراه کد آن که از پایه نوشته و در مساله اعمال شده است وجود دارند. این همان کاری است که دیگران نیز باید برای مسائل خودشان انجام دهند.
سعید
با عرض سلام
بهینه سازی چندهدفه فرادرس بسیار جالب گویا و پرکاربرد بود ، بابت تولید این بسته از شما و همکاران تشکر میکنم.
به نظر شما میشه هنگام تولید جمعیت با استفاده از الگوریتم ژنتیک در spea2یک جمعیت دیگر هم با استفاده از تکامل دیفرانسیلی تولید کنیم و اسم الگوریتم رو هیبرید بزاریم؟ یا اینکار از نظر علمی درست نیست ؟
با تشکر فراوان