پروژه آماده درس هوش مصنوعی حل مسئله n وزیر با روش الگوریتم ژنتیک به زبان سی شارپ (#C)
این پروژه برای درس هوش مصنوعی انجام شده اما محدودیت خاصی نداره و میتونید در هر جایی ازش استفاده کنید.
کدنویسی کاملا تمیزه و دارای کامنت (توضیحات) هم می باشد.
برنامه دارای 170 خط کد است.
فایل شامل دو مورد است:
فایل کامل برنامه به زبان #c
سورس کد برنامه در فایل Word
به زبان خیلی ساده مسئله n وزیر که بیشتر به 8 وزیر معروف است یک الگوریتم است؛
به این صورت که شما با داشتن 8 وزیر و 64 خانه باید وزیرها را طوری بچینید که یکدیگر را تهدید نکنند.
به عکس زیر توجه کنید:
اینجا 8 وزیر به گونه ای در خانه ها چیده شده اند که به هیچ وجه (افقی،عمودی،مورب) یکدیگر را تهدید نمیکنند.
الگوریتم ژنتیک مثل هر الگوریتم بهینه سازی دیگر با تعریف متغیرهای بهینه سازی آغاز می شود و مانند الگوریتم های بهنیه سازی دیگر نیز خاتمه می یابد یعنی با تست همگرایی.
یک الگوریتم GA دارای پارامترهای زیر است:
: Fitnessتابعی برای ارزیابی یک فرضیه که مقداری عددی به هر فرضیه نسبت میدهد
: Fitness_threshold مقدار آستانه که شرط پایان را معین میکند
: population تعداد فرضیه هائی که باید در جمعیت در نظر گرفته شوند
: crossover rate در صدی از جمعیت که در هر مرحله توسط الگوریتم crossover جایگزین میشوند
:mutation rate نرخ mutation
الگوریتم GA به صورت زیر کار می کند:
: Initializeجمعیت را با تعداد population فرضیه بطور تصادفی مقدار دهی اولیه کنید.
: Evaluateبرای هر فرضیه h در population مقدار تابع (Fitness(h را محاسبه نمائید.
تا زمانیکه Fitness_threshold بیشتر از (maxh Fitness(h باشد یک جمعیت جدید ایجاد کنید.
فرضیه ای که دارای بیشترین مقدار Fitness است را برگردانید.
توی این برنامه هم همین روند طی شده
حالا به عکس اجرای برنامه توجه کنید:
با زدن دکمه اول (calculate) یک نسل با اندازه جمعیت داده شده تولید میشود و در لیست نمایش داده میشود که رقم آخر در هر سطر نشان دهنده fitness آن کروموزوم است
با زدن کلید دوم (answer) کروموزوم ها بر اساس fitnessها به صورت صعودی مرتب میشوند، جمعیت نصف میشود و دوباره الگوریتم اجرا میشود.
این روند ادامه مییابد تا به fitness با مقدار 0 برسیم که جواب نهایی ماست.
در کادر سوم (زیر دکمه ها) جواب نهایی ظاهر میشود که عدد اول نشان دهنده این است که بعد از چند نسل به جواب رسیدیم و عدد دوم نشان دهنده نحوه چیدمان وزیر ها در صفحه شطرنج است.
برای مثال در این اجرا ما بعد از 52 نسل به جواب رسیدیم و نحوه چیدمان وزیرها با فرض اینکه هر # نشان دهنده یک وزیر است به صورت زیر خواهد بود:
O O O O O # O O
O O O # O O O O
O O O O O O O #
O O O O # O O O
# O O O O O O O
O # O O O O O O
O O O O O O # O
O O # O O O O O
و حتی به راحتی میشود تعداد وزیر ها را تغییر داد.
این نمونه اجرای دیگر برنامه برای 4 وزیر است:
*نکته*
زمان اجرا برای nهای بالاتر بیشتر است و ممکن است بیشتر طول بکشد پس حتما منتظر بمانید.
در آخر امیدوارم که برنامه به دردتون بخوره.
در صورتی که هر مشکلی بعد از خرید بود از طریق تیکت پشتیبانی با من درمیون بذارید تا حل بشه.
ما رو به دوستانتون هم معرفی کنید.
هنوز هیچ دیدگاهی نوشته نشده است