View Full Version : سوال: پیاده سازی الگوریتم ژنتیک با استفاده از MATLAB
mahak006
یک شنبه 29 اردیبهشت 1392, 19:28 عصر
با سلام . من الگوریتم ژنتیک رو می خوام با استفاده از MATLAB پیاده سازی کنم . با تولباکس نباید باشه . چون بره پروژه هوش مصنوعی نیاز دارم . الآن بین کارم به یه سوالی برخوردم .
یه کروموزوم شامل ۳۰ ژن دارم .
حالا می خوام این کروموزوم رو با بقیه کروموزوم ها چک کنم تا اگه تکراری نبود ، به لیست جمعیتم اضافه کنم .
در واقع یه ماتریس سطری که m ستون داره رو می خوام تو یه ماتریس ۲ بعدی nدرm سرچ کنم تا اگه وجود نداشت ، به ماتریس اضافش کنم .
ا=مشکلی که هست اینه که می خوام اگه راهی داره ، این کارو بدون حلقه انجام بدم ( به دلایلی که اغلب افراد می دونن ) . چون تا همینجای کار هم ۲ تا حلقه تو در تو بره برنامم دارم .
manij_mhm
یک شنبه 29 اردیبهشت 1392, 19:38 عصر
سلام.
شما دو کروموزوم رو از هم کم کنید و بعد با استفاده از قدرمطلق مجموع عناصر تفریق بدست امده می تونید تشخیص بدید که یکسان هستند یا خیر!
موفق باشید.
mahak006
یک شنبه 29 اردیبهشت 1392, 19:45 عصر
ممنون . ولی میخوام بدون حلقه باشه . فکر کنید مثلا جمعیت اولیه ۳۰۰ تا باشه . می خوام یه جوری ، بدون حلقه این کار انجام بشه . اگه وجود داره . اگه نه که با حلقه و دستور all هم میتونم انجامش بدم .
manij_mhm
یک شنبه 29 اردیبهشت 1392, 19:54 عصر
خوب اینم بدون حلقه می شه! مگه نمی خواین یه کروموزم رو با 300 تا کرومزوم دیگه مقایسه کنید؟
mahak006
دوشنبه 30 اردیبهشت 1392, 12:01 عصر
خوب اینم بدون حلقه می شه! مگه نمی خواین یه کروموزم رو با 300 تا کرومزوم دیگه مقایسه کنید؟
بله . البته شاید من درست متوجه نشدم منظورتون چجوریه . می تونید با مثال ، مشخص کنید . ممنون می شم .
کروموزوم من شامل ۳۰ ژن هست . شما مثالتون رو ساده کنید و با ۵ ژن ( ماتریس با ۵ ستون و مثلا جمعیت ۳۰۰ تا ) تشریح کنید .
manij_mhm
دوشنبه 30 اردیبهشت 1392, 15:34 عصر
می تونید با مثال ، مشخص کنید .
ماتریس یه بعدی f با 5 ستون به صورت زیر:
f=[1 2 3 4 5]
و ماتریس D با 8 سطر و 5 ستون (در اینجا تعداد جمعیت 8 تاست)
d= [ 1 1 1 1 1; 2 2 2 2 2 ;3 3 3 3 3 ; 4 4 4 4 4 ; 5 5 5 5 5 ;6 6 6 6 6 ;7 7 7 7 7; 1 2 3 4 5]
با دستور
f2=repmat(f,8,1)
رو به تعداد جمعیت اولیه در یه ماتریس ایجا می کنید. حاصل ماتریس ماتریسی با 8 سطر و 5 ستون هست که در هر سطر f کپی شده!!
حالا k=d-f2 تفریق کرموروم f رو از هر سطر d (هر جمعیت اولیه) رو محاسبه می کنه.
در انتها اگر
sum(sum(abs(k),2)==0)>0
باشه! یعنی f در جمعیت اولیه وجود داره!
موفق باشید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.