![]() |
روش های جدید جهش و کراس اور ؟
سلام
من برای پروژه ام برنامه ای نوشتم که برای انتخاب از چرخه ی رولت ، برای کراس اور به صورت رندم چند نقطه رو انتخاب میکنه و جابه جا میکنه و برای جهش به صورت رندم چند ژن رو تغییر میده اما استادمون گفتن این روش های پایه هست و این پروژه قبول نیست! دنبال روش های جدید در میوتیشن وکراس اور باش می خواستم ببینم روش های نوین در این زمینه ها برای بهینه سازی بهتر چیه |
با سلام
البته این جالبه که ایشان خواستند روش جدید ارائه کنید! باید در نظر داشت وظیفه این عملگرها، هدفی است که باید انجام دهند به هر حال شاید منظور ایشان این بوده است که مطالعه ای بر مقالات جدید داشته باشید. بعبارت دیگر مثلا همه روش های جهش برای جلوگیری از به دام افتادن در یک بهینه لوکال است حالا فرق زیادی نمی کند چه متدی باشد البته این را هم اضافه می کنم همین مسائل که بنده خدمتتان عرض می کنم چندان فرق نمی کنند بصورت حرفه ای دارای ریزه کاریهایی هستند مثلا ساختار مسئله شما در تعیین نحوه انتخاب این عملگرها تاثیر گذارند. همچنین اخیرا روش هایی که از ترکیب سیستمهای آشوبناک با الگوریتم ژنتیک ارائه شده اند مقایسه هایی را با روش های پایه ای الگوریتم ژنتیک انجام داده اند که نشان می دهد کیاس + الگوریتم ژنتیک بهتر از الگوریتم ژنتیک پایه است. برای مطالعه مقالاتی در این خصوص از لینک های امضاء من استفاده کنید |
ممنون از پاسخت
این که گفتید جهش برای جلوگیری از به دام افتادن در یک بهینه لوکال است خیلی برام مفید بود ! من خیلی وقت زیادی ندارم که بخوام مباحث دیگه ای هم یاد بگیرم و ترکیبش کنم، برای ترکیب تنها چیزی که به ذهنم میرسید ترکیب منطق فازی با الگوریتم ژنتیکی بود که نمی دونم چه جور پیاده سازیش باید کرد ، یعنی کجا ازش استفاده بشه اما خیلی اصرار داشت به صورت رندم نقطه ای برای کراس اور یا برای جهش انتخاب نشه و جوری باشه که کمک به بهینه شدن بکنه، سایت های داخل امضاتون که پولکی بودن اگه اسم متد های جالبی رو میدونید بگید خودم میرم پیدا شون میکنم |
سلام
شما می تونی از شبیه سازی هم تو بخش Crossover استفاده کنی، تو این زمینه مقاله هم وجود داره، البته برای راهنمایی می تونی بری پیش آقای دکتر پرهام عظیمی و ازشون کمک بگیری. ضمنا بحث فازی رو نمی شه همیشه مد نظر قرار داد، بخصوص در مورد عملگرها، در واقع فازی بحث دیتا ها رو داره تا عملگرها. البته میتونی برای بهبود جوابها از همه روشهای Crossover استفاده کنی (براساس یک عدد تصادفی). در مورد چرخ رولت از تورنامنت هم می شه استفاده کرد که بنظرم خوبه ولی کلاسیکه. مورد خیلی خیلی مهم تو این عملگرها اینه که شما طوری اونها رو بنویسی که بتونن الگوریتم رو در زمانی منطقی به جوابی منطقی برسونن و این یعنی اینکه خیلی زود یا خیلی دیر همگرا نشن، چون در اون صورت شما باز هم بهینگی محلی دارید. اگر تو ScienceDirect.com | Search through over 11 million science, health, medical journal full text articles and books. مقاله ای بود که لازم داشتی، لینک صفحه اش رو برام میل کن و من خودش رو برات ارسال می کنم. |
الان به نظر شما این کار من درسته یا نه ، روش جدید محسوب میشه یا نه (!)
جهش در الگوریتم ژنتیک برای این استفاده میشه که در یک مینیمم لوکال گیر نیوفتیم (یعنی در واقع با اینکه الان همه ی انسان ها از وضعیت خودشون راضی هستند ، اما شاید یک جهش باعث شه انسان ها قابلیت پرواز داشته باشند و نسل هایی از این دسته انسان ها هزینه ی کم تری دارند..یعنی از مینیمم لوکال رها شدیم...) پس روشی که میشه برای این مورد پیاده کرد: 1-درصدی از جمعیت برای جهش انتخاب میکنیم 2-dna هر فرد رو چند مرتبه (مثلا مرتبه10) از 1 درصد تا 100 درصد دچار تغییر (جهش) میکنیم 3-از بین dna های جدید کم هزینه ترین رو انتخاب میکنیم شاید به انسان پرنده رسیده باشیم! و هرگز در مینیمم لوکال گیر نمی کنیم |
با سلام
1- چرا درصدی از جمعیت؟ در جهش هیچ تمایزی برای هیچ نسلی قائل نمیشیم (مثال: حتی کودک فقیر باید بتواند به ثروت برسد) 2- چرا چند مرتبه؟ 3- اگر هدف جستجوی کمینه باشد بله بطور کلی: طی فرآیند جهش این قابلیت را به تمام نسل ها میدهیم تا به شایستگی بیشتر دست یابند (نکته1) همچنین باید توجه داشته باشیم اگر چه ظاهرا جهش خوب است (نکته2) ولی اجازه نداریم مقدار آن را زیاد در نظر بگیریم (معمولا 1% در نظر گرفته می شود)؛ یعنی چی؟ یعنی فرض کنیم در یک مرحله از الگوریتم ژنتیک 20نسل داریم، برای تک تک نسل ها به ازای هز ژن یک عدد تصادفی تولید کنید در بازه 0 تا 100، اگر عدد مذکور 1 یا کمتر بود آنوقت جهش بر روی آن ژن اعمال شود. مسلما توقع داریم اگر 100 ژن داشته باشیم یکی از آنها تغییر کند منتهی توجه کنید توقع داریم! یعنی می تواند هیچ ژنی تغییر نکند و می تواند چند ژن تغییر کنند این ندیگر بستگی به عدد تصادفی دارد. نکته 1: ممکن است برخی نمونه ها شایسنگی کمتر کسب کنند نکته 2: اگر مقدار جهش زیاد باشد ممکن است اتفاق های بدی رخ دهد یعنی مثلا فرض کنید طی Crossover های بسیار خوب در حال بالارفتن از یک قله هستیم (تابع هدف) دقیقا زمانیکه نزدیکیهای قله می شویم ناگهان بر اثر یکی از جهش ها (که احتمال رخدادش زیاد شده) به یک قله نه چندان مطلوب دیگر انتقال یابیم در اینصورت است که برنامه دچار کوبیدگی می شود و زمان خاتمه بشدت افزایش می یاید. من فکر کنم منظور استادتان استفاده از اپراتورهای بشکل ماسک است! اگر ایشان در پردازش تصویر هم دستی داشته باشد معمولا از Crossover, Mutation های بشکل ماسک نیز استفاده می شود. موفق باشید |
درواقع جهش تنها عامل بهینگی محلی نیست، هر سه اپراتور تو این مورد سهم دارند اما این سهم اگر خیلی زیاد یا خیلی کم باشه هم تاثیر منفی داره.
جهش باعث میشه شما فضای بیشتری رو از فضای حل جستجو کنید و این در حالی هست که crossover در فضایی که توش هستید کار می کنه و البته نخبه گرایی (اپراتور سوم) هم همینکار رو در کل فضای جستجو شده تا حال، اما اینکه شما چند مرتبه یک کرومزوم رو بردارید و ژنهاش رو دستکاری کنید نوآوری نیست، مثل اینه که شما تو Crossover بجای تک نقطه از چند نقطه استفاده کنید. می تونید یه نگاهی بیندازید به سایت متلب سایت و تو اون از عنوانهای مطالب ایده بگیرید، مثلا تلفیق زنتیک و عصبی و ... اینهم می تونه کمک کنه. بنظرم اینها رو لیست کن و به استاد نشان بده و نظرش رو بپرس تا وقتی یکی رو انتخاب کرد اونوقت بیشتر می شه روش مانور داد. |
نقل قول:
یعنی اگر خدا به سبک من عمل میکرد شاید الان انسان پرنده هم وجود داشت و از این مینیمم لوکال در رفته بودیم! تا ماسک رو هم قبول نداشت! یعنی گفت سینگل پوینت هم بکنی قبول هست ولی رندم نقطه رو انتخاب نکن ! بررسی کن یه نقطه خوب برای سینگل پوینت انتخاب کن! یا اگه با احتمال اون نقطه رو انتخاب میکنه توزیع یکنواخت نباشه و دلیل داشته باش... می خواستم ببینم روش های جدید چی هست همینجوری ازشون استفاده کنم دهن پر کن باشه... نقل قول:
|
نقل قول:
اما در مورد توزیع یکنواخت، شما اگر از هر توزیع دیگری استفاده بکنی، بنا بر اصول احتمالات، اعداد ایجاد شده از الگو پیروی می کنه و مجددا بحث بالا در مورد جهش نقض میشه. اما وقت، دوست من، ماها مجبوریم بریم یاد بگیریم و پیشنهاد می کنم برای یادگیری اینچیزها بری و مقالاتی رو بخونی که حاصل کار یه پروژه کارشناسی ارشده و بعد با دانشجویی که اون رو کار کرده و ایمیلش هم تو مقاله هست مکاتبه کنی، اکثر اونها وقتی علاقه مند ببین شما رو برات متن اصلی پایان نامشون رو میفرستن یا خیلی خیلی عالی و پایه ای کمکت می کنن (این مورد برای خود من چند بار پیش آمده) بهر حال اگر کاری از دست من بر بیاد در خدمتم. |
نقل قول:
چرا بحث جهش نقض میشه؟! من یه مقاله اینگلیسی راجع به کراس اور فازی پیدا کردم دارم روش کار میکنم فقط جهش رو موندم چه کار کنم !! A Dynamic Fuzzy-Based Crossover Method for Genetic Algorithms |
نقل قول:
دوست عزیز، اینکار شما غلطه؛ سیستم دچار local convergence می شود |
ما نمیتونیم بگیم یه جهش بد هست، چه بسا وقتی بره و روش یه crossover بخوره یه چیز عالی بدست بیاد دقیقا عین طبیعت. بهمین دلیل شما نباد توش دست ببرید.
مقاله رو دیدم، چندان جونداری و البته معتبر نیست، ولی بازم کاچی به از هیچ چی. |
نقل قول:
نقل قول:
ScienceDirect.com - Fuzzy Sets and Systems - A fuzzy-based lifetime extension of genetic algorithms این رو میتونی بگیری؟ |
نقل قول:
امیدوارم لینک زیر رو درست زده باشم.:1::1: Download File : 1-s2.0-S0165011404003100-main.rar |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۹:۲۶ بعد از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.