نمایش نتایج 1 تا 6 از 6

نام تاپیک: اشکال در (Roulette Wheel (GA

  1. #1
    کاربر دائمی آواتار TheMatrix
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    سن
    30
    پست
    102

    Tick اشکال در (Roulette Wheel (GA

    سلام دوستان.
    من تازه با GA یا همون الگوریتم ژنتیک آشنا شدم و دیدم واقعا چیز محشریه.
    من یه برنامه ی ساده با استفاده از GA نوشتم که یه رشته ای رو پیدا میکنه. روش من برای انتخاب Roulette Wheel یا همون چرخ گردان هستش ولی من وقتی برنامه رو اجرا میکنم بعد از گذشت حتی 1000000 بار تکامل, هیچ کدوم از رشته ها اصلا به رشته ی هدف نزدیک نشدند.
    من یه چنتا کانتر و متغیر به برنامم اضافه کردم و دیدم مقدار تولید مثل یا cross-over در کروموزم های با برازندگی بالاتر با مقدار تولید مثل در برازندگی های پایین مساوی است, و این بدین معنی است که قسمت انتخاب طبیعی یا همون تابع select درست کار نمیکنه.
    این اون تابعی ه که من برای انتخاب نوشتم:
    int select()
    {
    int SUM=0,N=0,TSUM=0;
    for(int i=0; i<population_size; i++)
    SUM=SUM+score[i];
    N=random(0,SUM);
    for(int i=0; i<population_size; i++)
    {
    TSUM=TSUM+score[i];
    if(TSUM>=N)
    return i;
    }
    return -1;
    }


    توجه کنید آرایه ی score در اینجا برازندگی رشته ها را در بر دارد.
    سورس خود برنامه رو هم میزارم.(سورس به زبان سلیس ++C)
    ممنون میشم کمکم کنید.
    فایل های ضمیمه فایل های ضمیمه
    • نوع فایل: zip GA.zip‏ (1.0 کیلوبایت, 105 دیدار)

  2. #2
    1. معیار توقف چیست؟ (while(1 معنی نمیده!
    2. چرا تعداد جمعیت ثابت است و offspring ها مستقیما بر روی جمعیت نسل قبل قرار می گیرند؟
    3. معیار شما برای محاسبه fitness چیست؟ اگر تعداد کاراکتر های مشابه معیار بوده چرا با fitness با مقدار 6 (که از تعداد کاراکتر ها هم بیشتر است!!!) همچنان الگوریتم ادامه پیدا می کند؟
    4. mutation کجاست؟
    5. مسئله Word Matching با رشته های طولانی تر از این (18 کاراکتر) با حدود 23 تکرار (230 کرومزوم) همگرا می شود!

    الگوریتم ژنتیک در تصویر زیر نشان داده شده است، با کد خودتون مقایسه کنید(منبع).
    عکس های ضمیمه عکس های ضمیمه  

  3. #3
    کاربر دائمی آواتار TheMatrix
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    سن
    30
    پست
    102
    نقل قول نوشته شده توسط arsp_2004 مشاهده تاپیک
    1. معیار توقف چیست؟ (while(1 معنی نمیده!
    2. چرا تعداد جمعیت ثابت است و offspring ها مستقیما بر روی جمعیت نسل قبل قرار می گیرند؟
    3. معیار شما برای محاسبه fitness چیست؟ اگر تعداد کاراکتر های مشابه معیار بوده چرا با fitness با مقدار 6 (که از تعداد کاراکتر ها هم بیشتر است!!!) همچنان الگوریتم ادامه پیدا می کند؟
    4. mutation کجاست؟
    5. مسئله Word Matching با رشته های طولانی تر از این (18 کاراکتر) با حدود 23 تکرار (230 کرومزوم) همگرا می شود!

    الگوریتم ژنتیک در تصویر زیر نشان داده شده است، با کد خودتون مقایسه کنید(منبع).
    مگه تعداد جمعیت نباید ثابت باشه؟

  4. #4
    بله ولی این که در مرحله Selection از کجا انتخاب شوند مهم است.

    مثلا 10 کرومزوم داریم و از طریق Crossover نیز 6 کروکزوم جدید و از طریق mutation هم 3 کروکزوم جدید تولید می شوند.
    حالا دو روش داریم :
    1. از بین این 19 تا کرومزوم، 10 کرومزوم انتخاب شوند.
    2. تنها از بین کرومزوم های جدید و کرومزوم های تکامل نیافته، 10 کرومزوم انتخاب شوند. (روش شما)

    به نظر من اولی بهتر عمل می کند.

  5. #5
    کاربر دائمی آواتار TheMatrix
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    تهران
    سن
    30
    پست
    102
    از راهنمایی شما ممنونم.
    ولی بازم یه سوال داشم:
    هدف ما از جهش, ایجاد کروموزم های تکی جدید است یا هدف, تغییر کروموزم های جدید(فرزندان) است؟

    در ضمن, با استفاده از راهنمایی های مفید شما من برنامه را بازنویسی کردم که کار هم میکند, منتهی یه مشکل کوچیک داره اونم اینه که تعداد جمعیت اولیه نمیتونه فرد باشه.

    ممنون میشم مشکلات برناممو بگید.
    فایل های ضمیمه فایل های ضمیمه

  6. #6
    هدف از جهش (mutation) ایجاد کرومزوم های تکی جدید است. برای مثال اگر 10 کرومزوم داشته باشیم و 6 تای آنها در crossover شرکت کرده باشند 4 تای دیگر می توانند در mutation شرکت کنند.
    و این که چند تا کرومزوم در crossover و چند تا در mutation شرکت کنند تجربی است، نرخ های مختلف را تست کنید. (البته نرخ mutation معمولا کم در نظر گرفته می شود)

    به طور کلی در الگوریتم ژنتیک عملگر های موجود جهت اجتناب از ماکزیمم محلی (local optima) هستند و در واقع عملگری مانند جهش فضای جستجو را جهت انتخاب هایی بهتر گسترده تر می کند.

تاپیک های مشابه

  1. مشکل با wheel موس
    نوشته شده توسط hamid_isf_1360 در بخش مباحث عمومی دلفی و پاسکال
    پاسخ: 11
    آخرین پست: شنبه 24 شهریور 1386, 14:15 عصر
  2. Mouse Wheel
    نوشته شده توسط Babak-Aghili در بخش C#‎‎
    پاسخ: 4
    آخرین پست: یک شنبه 09 مرداد 1384, 23:00 عصر

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •