- در صورت نیاز به آموزش آنلاین نحوه ساخت این پروژه توسط نرم افزارهای آموزش راه دور و یا درخواست تهیه پروژه مشابه، کافیست با شماره تماس 09179221734 یا آدرس ایمیل behnam.h1368@gmail.com هماهنگی های لازم را انجام دهید.
توضیح کلی :
موضوع پروژه در رابطه با مسئله هشت وزیر با الگوریتم ژنتیک است. که زبان برنامه نویسی مورد استفاده در این پروژه سی شارپ می باشد.
همانطور که می دانیم الگوریتم ژنتیک یک تعداد نسل دارد که در هر نسل یک جمعیت اولیه تعریف می شود که این جمعیت اولیه نشان دهنده تعداد کروموزم های هر نسل است وهر کروموزم هم از یک تعداد ژن تشکیل شده که ما می توانیم با انجام دادن جهش و یا تبادل بر روی ژن های هر کروموزم به تعداد کروموزم ها یا همان جممعیت هر نسل بیفزاییم . که با این کار می توانیم با افزایش کروموزم ها در نسل های بعدی کروموزم های با fitness بهتر را تولید کرده و زودتر به جواب برسیم.
جهش به این صورت انجام می شود که اگر طبق نرخ جهش ، کروموزمی شانس جهش داشت ژن هایی از آن کروموزم را به صورت رندوم انتخاب می کند و جای آنها را عوض می کند و به این صورت کروموزم جدیدی را تولید می کند.
تبادل هم به این صورت انجام می شود که اگر طبق نرخ تبادل ، دو کروموزم شانس تبادل را پیدا کرند چند ژن را از کروموزم اول به صورتی انتخاب می کند که آن ژن ها در کروموزم اول نبوده وهمچنین بقیه ژن ها را از کروموزم دوم به صورتی انتخاب می کند که آن ژن ها در کروموزم دوم نباشد و بعد این ژن ها را با هم قاطی می کند و از آنها یک کروموزم جدید می سازد .
در این پروژه هم در فرم مربوطه می توان تعداد نسل ، جمعیت اولیه هر نسل ، نرخ تبادل و نرخ جهش را وارد کرده وبر طبق آنها مسئله حل می شود .
در این مسئله تعداد ژن های هر کروموزم برابر با 8 است که این تشان دهنده مکان هر وزیر در هر سطر مربوط به هر ستون است.
مسئله به صورت گرافیکی حل شده و چیزی که در صفحه شطرنج نشان می دهد مربوط به آن کروموزمی است که بیشترین fitness را دارد.
در جدول کناری هم لیستی از کروموزم های یک نسل با مقدار fitness آنها را نمایش می دهد که این کروموزم ها را بر اساس مقدار fitness مرتب می کند.
در این مسئله max_fitness را 28 در نظر گرفتیم و مقدار fitness برای هر کروموزم برابر است با :
Fitness = max_fitness – collision
که collision همان تعداد برخورد یا گارد کردن وزیر ها با هم است.
اگر مقدار fitness نهایی که نمایش داده می شود مثلا برابر با 26 باشد طبق راه حل اول مشخص می شود که مقدار برخورد دوتاست و این به این معنی است که در صفحه شطرنج دو برخورد وجود دارد.
در اینجا چند تابع مهم وجود دارد که به اختصار آنرا توضیح می دهم :
1) تابع تبادل :
این تابع با نام crossover است و تبادل را به این صورت انجام میدهد که می آید طبق مقدار نرخ تبادل این مقدار را به عنوان ورودی تابع crossover انتخاب می کندو بعد طبق تابع Assay بررسی می کند که آیا کروموزم های انتخاب شده دارای شانس تبادل هستند با نه که اگر شانس تبادل را داشتند دو کروموزم را از یک نسل انتخاب می کند که این دو کروموزم مقدار fitness خوبی ندارند .(مسلما اگر کروموزمی fitness خوبی نداشته باشد دارای تعداد زیادی اعداد یا ژن های برابر است.)
بعد یک لیستی از child می سازد که به تعداد 8 بار آن ژن هایی که در کروموزم اول و یا در دومی نیست را انتخاب کرده و آن ژن ها را به child اضافه کرده و آن child را به یک کروموزم تبدیل کرده و آن کروموزم را به لیست کروموزم ها اضافه می کند.
2) تابع جهش :
این تابع با نام mutate است و جهش را به این صورت انجام می دهد که می آید یک لیستی از کروموزم ها و مقدار نرخ جهش را به عنوان ورودی می گیرد و بعد به تعداد همه کروموزم های داخل لیست اگر این کروموزم ها طبق تابع Assay شاتس جهش را داشتند به صورت رندوم مکان ژن های آن کروموزم را جابه جا می کند.
3) تابع محاسبه fitness :
همانطور که از قبل گفتم اگر در بدترین حالت در نظر بگیریم که در یک کروموزم همه ژن هایش با هم برابر باشند و وقتی که هر ژن را به ترتیب ازژن اول تا ژن آخر با ژن های بعد ازخودش مقایسه شود تعداد کل برخوردها به این صورت محاسبه می شود : 7+6+5+4+3+2+1=28
حال اگر خواسته باشیم که fitness ما یک مقدار مثتبی باشد و fitness بیشتر به معنای کروموزم بهتر باشد یک max_fitness را تعریف کرده ام و مقدار ان را 28 گذاشته ام و fitness واقعی به صورت زیر محاسبه می شود:
Fitness = max_fitness – collision
که در این صورت هر چه تعداد برخورد ژن ها یا همان وزیرها کمتر باشد باعث می شود که مقدار fitness بیشتر شود.
تعداد برخورد ها هم در کروموزم به ازای هر مقایسه ای که ژن ها با هم انجام می دهند اگر مقدار ژن ها با هم برابر باشد به تعداد برخوردها یکی اضافه می شود.
امکانات اصلی پروژه :
1) داکیومنت گزارش کار بصورت فایل PDF
2) فایل کامل سورس پروژه
3) فایل EXE. پروژه
در صورت تمایل به ارسال نظر ، تنها در مورد پروژه فعلی نظر خود را ثبت کنید .
بزودی آموزش های تصویری مرتبط به هر موضوع تهیه و در سایت قرار داده خواهد شد.
پروژه های مرتبط :
برچسپ ها :
هشت وزیر ، مسئله 8 وزیر ، هشت وزیر با سی شارپ ، دانلود برنامه هشت وزیر، پروژه هشت وزیر