اطلاعیه

Collapse
No announcement yet.

سوال در مورد تابع انتخاب چرخ رولت

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    سوال در مورد تابع انتخاب چرخ رولت

    سلام دوستان.من یک تابع انتخاب چرخ رولت دارم فقط نمیدونم خروجی چه چیزی را یرای پرنت اول و دوم بدم.ممنون میشم اگه کسی میتونه کمکم کنه.این کد منه: totalfit=sum(pop(j,Ncities+1));
    prob=pop(j,Ncities+1) / totalfit;
    prob=cumsum(prob);
    rns=sort(rand(popsize,1));
    fitin=1; newin=1;
    while newin<=popsize
    if (rns(newin)<prob(fitin))
    newpop(newin)=pop(fitin);
    newin=newin+1;
    else fitin=fitin+1;
    end
    :angry:

    #2
    پاسخ : سوال در مورد تابع انتخاب چرخ رولت

    خب من کار انتخابگر چرخ رولت رو توضیح میدم (با توابع متلب کار نکردم)
    شما یه جمعیت داری (برای انتخاب والدین یا همون parents) این والدین هر کدوم یه fitness دارند. مجموع کل فیتنس ها رو هم ارز عدد یک بگیر ؛ پس هر والد با توجه به فیتنسش یه عددی میشه بین 0 تا 1 (به اینکار میگن نرمالیزه کردن)
    این فیتنس ها رو اگه بچینی کنار هم مجموعشون میشه 1
    در انتخاب چرخ رولت؛ شما یه عدد تصادفی انتخاب میکنی ؛ این عدد در محدوده هر نفر افتاد این فرد بعنوان یک والد انتخاب میشه
    مثال: 4 نفر دارین با فیتنس مثلا 400و200و100و100
    نرمالیزه میکنیم و کنار هم میچینیم. نفر اول میشه از 0 تا 0.5
    نفر دوم میشه از 0.5 تا 0.75 نفر سوم میشه از 0.75 تا 0.875 و نفر آخر میشه از 0.875 تا 1
    یه عدد تصادفی انتخاب میکنید مثلا 0.6 ؛ این عدد در محدوده نفر دوم هست پس نفر دوم بعنوان یک والد انتخاب میشه
    بر اساس چرخ رولت

    دیدگاه

    لطفا صبر کنید...
    X