Saba College of Higher Education

انجمن علمی آموزش عالی صبا (ارومیه)

Saba College of Higher Education

انجمن علمی آموزش عالی صبا (ارومیه)

با سلام و عرض ادب، وب‌سایت بانیفا یک وب‌سایت تازه تاسیس که در زمینه‌های مدیریت، فناوری و سبک زندگی فعالیت کرده و مقالات جدیدی منتشر می‌کند. از شما دعوت می‌کنیم از بانیفا دیدن فرمایید. www.Banifa.com | بانیفا دات کام

در این وبلاگ مطالب علمی، جزوات و اخبار مرتبط با آموزش عالی صبا منتشر خواهد شد.
وبسایت رسمی آموزش عالی صبا (ارومیه):
http://saba.ac.ir

حل مسئله n وزیر با استفاده از الگوریتم ژنتیک

نویسنده مجازی | پنجشنبه, ۲۶ ارديبهشت ۱۳۹۲، ۱۰:۵۰ ب.ظ

همانطور که می دانیم معمای n وزیر معمای چیدن n وزیر به صورتی است که هیچکدام از وزیر ها نتوانند به دیگری حمله کنند، یافتن راه حل این مسئله به صورت دستی بسیار سخت می باشد، به همین دلیل از الگوریتم ژنتیک برای حل این مسئله استفاده می شود، در حقیقت با تولید مقادیر اولیه شروع کرده و با وراثت و ... کروموزوم های جدید (حالات جدید) تولید کرده و به همین ترتیب ادامه می دهیم تا به جواب مسئله برسیم.

* منظور از مقادیر اولیه همان حالت اولیه است.

البته تعداد کروموزوم ها هر چه قدر بیشتر باشد، مسلما سریعتر به جواب خواهیم رسید، در عوض به حافظه بیشتری نیاز خواهیم داشت. این مسئله را با استفاده از کدهای نرم افزار ریاضی متلب (Matlab) پیاده سازی کرده ام که البته هنوز بهینه نمی باشد، برای مسئله 8 وزیر پاسخ می دهد اما برای مسئله 9 وزیر تنها یک پاسخ دریافت کردم، البته نسخه اولیه این الگوریتم برای مسئله 8 وزیر تنها یک پاسخ داده بود که بعدا مسئله بهینه و پاسخ های بیشتری داد.

بعدا نسخه های بهینه تری نیز در وبلاگ قرار داده خواهد شد، دوستان و همکلاسی های محترم هم در صورتی که الگوریتم بهینه تری نوشته اند، لطفا اطلاع دهند تا در وبلاگ قرار داده شده و از تجربه و علم آنها نیز استفاده کنیم.


برای دانلود سورس کد حل مسئله n وزیر با استفاده از الگوریتم ژنتیک و نرم افزار متلب کلیک نمایید.  (نسخه جدید در پایین قابل دانلود می باشد)


ویرایش:

همانطور که می دانیم الگوریتم ژنتیک کاملا تصادفی می باشد، از طرفی بدلیل اینکه مجموعه ای از نظریه تکامل هست و از وراثت و والد و ... تبعیت می کند، در نتیجه بعد از گذشت زمان به جواب مسئله نزدیک تر خواهیم شد، در پایین نمودار الگوریتم ژنتیک برای حل مسئله n وزیر را ترسیم کرده ایم. همانطور که مشاهده می کنید، در اوایل از جواب مسئله بسیار دور هستیم اما بعد از گذشت مدت زمانی به پاسخ مسئله که همان صفر هست رسیده ایم.

در حالت کلی نمودار به صورت نزولی می باشد، هر چند بدلیل اینکه الگوریتم ژنتیک تصادفی است، در برخی از x ها، y افزایش یافته و یا ثابت مانده است.


سورس کد الگوریتم ژنتیک برای حل مسئله n وزیر نسبت به کد قبلی که در اسلاید قابل مشاهده هست بهینه تر شده است، در پایین فایل مربوطه را جهت دانلود قرار داده ایم.

دانلود اسلابد حل مسئله n وزیر با استفاده از الگوریتم ژنتیک

دانلود سورس کد الگوریتم ژنتیک برای حل مسئله n وزیر


سعید محمدی اقدم

نظرات  (۶)

 از زحماتتان ممنونم
پاسخ:
متشکرم آشنا! امیدوارم مفید واقع شده باشد، در صورتی که پیشنهادی در این رابطه دارید خوشحال می شویم که ما را بی بهره نگذارید ..
سلام 
سورس کد رو تو matlab اجرا می کنم این  error   رو میده ;([population=randi(n,[k,n+2 میگه n تعریف نشده؟؟ لطف می کنید راهنمایی کنید. خیلی ممنون.
ممنون
سلام اگه امکانش هست مسئله 8وزیر با استفاده از الگوریتم ژنتیک که با سی پلاس پلاس پیاده سازی شده با توضیح کامل رو بذارید یا اگه میشه ایمیل کنید برام : marziehmohammadi34@gmail.com
اگه تو سایت تون گذاشتید بهم خبر بدید از طریق ایمیلم
یک دنیا ممنون. شدید نیاز دارم
باسلام
از زحماتتان خیلی ممنونم ولی من از این کد چیزی نفهمیدم در صورت امکان توضیحات مربوطه وهمچنین روش کار را بنویسید
y donya tashakor

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی