No category

پایان نامه ارشد با موضوع درایه، m، ، r=1;

دسامبر 1, 2018

تولید شده و در متغیر u ذخیره می شود تا از درایه های آن برای جهش کروموزوم والد و تولید فرزند جدید استفاده نماییم.
۷۱. ee=y+2;
۷۲. u=randperm(psize);
در خط ۷۴ یک حلقه for تعریف شده است که شروع به جهش ژن های کروموزوم والد می کند. این جهش به تعداد change که معین کننده تعداد ژن هایی است که باید جهش یابند انجام می شود (change یکی از متغیرهای کنترلی توضیح داده شده در ابتدای الگوریتم است).
اکنون باید تعیین شود که کدام ژن جهش یابد. انتخاب این ژن به صورت تصادفی صورت می گیرد بدین ترتیب که یک بردار تصادفی از اندازه مسئله تولید شده (خط ۷۵) و شماره درایه متناظر با بزرگترین مقدار این بردار را در m ذخیره می‌کنیم و ژن m ام را جهش می دهیم.
ابتدا باید یکی از دو کروموزومی که به این مرحله آمده اند انتخاب شود (عملگر جهش بر روی یک کروموزوم صورت میگیرد). بنابر این در خط ۷۶ یک بردار ۱*۲ از اعداد تصادفی تولید شده و با استفاده از دستورات خطوط ۷۷ تا ۸۳ با توجه به اینکه درایه اول بردارتصادفی از درایه دوم بردار تصادفی بزرگتر است یا نه اقدام به انتخاب یکی از دو والد کرده و درایه m ام کروموزوم منتخب را با درایه m ام بردار u که در بالا تعریف شد جا به جا می نماییم (جهش می دهیم).
۷۳. for g=1:change
۷۴. [n,m]=max(rand(1,psize));
۷۵. rand(1,2);
۷۶. if rand(1,1)>=rand(1,2)
۷۷. chrom1(m)=u(m);
۷۸. a(ee,:)=chrom1;
۷۹. else
۸۰. chrom2(m)=u(m);
۸۱. a(ee,:)=chrom2;
۸۲. end
۸۳. end
در اینجا مجددا شرط شدنی بودن جواب بررسی می شود (خطوط ۸۵ تا ۱۰۸) که عیناَ مانند دستورات خطوط ۴۸ تا ۷۱ است که قبلاَ توضیح داده شد.
۸۴. if sort(a(ee,:),2)==sort(randperm(psize))
۸۵. r=0;
۸۶. else
۸۷. r=1;
۸۸. end
۸۹. while r==1
۹۰. for p=1:psize
۹۱. for q=p+1:psize
۹۲. if a(ee,p)==a(ee,q);
۹۳. u=randperm(psize);
۹۴. for i=1:psize
۹۵. [n,m]=find(u==a(ee,i));
۹۶. u(m)=[];
۹۷. end
۹۸. a(ee,q)=u(1);
۹۹. end
۱۰۰. end
۱۰۱. end
۱۰۲. if sort(a(ee,:))==sort(randperm(psize))
۱۰۳. r=0;
۱۰۴. else
۱۰۵. r=1;
۱۰۶. end
۱۰۷. end
۱۰۸. plot(fitness)
در خط ۱۰۹ با استفاده از دستور plot نمودار هزینه جواب ها (fitness) رسم شده است.
۱۰۹. end
end واقع در خط ۱۱۰ مربوط به اولین حلقه for در خط ۱۱ است که پس از تولید تعداد run استقرار از حلقه خارج می شویم و نوبت به ارزیابی جواب مسئله می رسد.
در خط ۱۱ بردار a آمده است که تمامی استقرار هایی که تولید شده به علاوه استقرارهای اولیه را (که در مجموع به اندازه run است) نشان می دهد. a یک ماتریس با ابعاد run در psize است.
در خط ۱۱۲ مقادیر کل tc های به دست آمده برای تمام جواب ها به صورت صعودی مرتب شده و در متغیر ss ذخیره می شود.

No Comments

Leave a Reply