برنامه ای برای حل فروشنده دوره گرد با الگوریتم ژنتیک
امکان انتخاب شهر با ماوس
تعیین
crossover
mutation
population
تعداد شهر ها
با زبان سی شارپ
شی گرا
برنامه ای برای حل فروشنده دوره گرد با الگوریتم ژنتیک
امکان انتخاب شهر با ماوس
تعیین
crossover
mutation
population
تعداد شهر ها
با زبان سی شارپ
شی گرا
آخرین ویرایش به وسیله quantomquery : چهارشنبه 01 دی 1389 در 16:58 عصر
تو برنامه یه کلاس شهر هستنوشته شده توسط oranoos_mt
یه کرومزوم که از شهر ها تشکیل شده(لیست)
خود فرم اصلی هم تعدادی کرومزوم رو میگیره و روشون کراس و میوتیشن انجام میده و بعد با محاسبه مسافت نقاط فیتنس رو پیدا می کنه
اگه جای خاصی رو مشکل دارین بفرمایید تا توضیح بدم .
موفق باشید
اين نرخ تبادل ، نرخ جهش ،جمعيت اوليه ، تعداد نسل و شهرها كارشون چيه؟ يه توضيحي ميدي
نمیدونم چقدر با ژنتیک آشنا هستید و این توضیح دادنم رو سخت می کنه ولی
نرخ تبادل یعنی تعداد کراس اور
نرخ جهش یعنی تعداد جهش
جمعیت اولیه یعنی تعداد کرومزوم(جواب هایی از مساله) که بار اول به صورت تصادفی ایجاد می شوند
تعداد نسل یعنی چند بار کراس و میوتیشن(جهش) انجام بشن تا برنامه کارش تموم بشه
کلاس شهر هم که معلومه نقاط ایکس و ایگرگ و توابعی برای نقاشی کردن داره
چون فروشنده دوره گرد باید ازتعدادی شهر با کمترین مسافت طی شده عبور کنه
مثلا
30 جمعیت اولیه
20 تبادل
10 جهش
200نسل
4 شهر
باشه :
اول 30 تا جواب تصادفی برای مثاله ساخته میشه که خیلی هاش یا همش نادرسته
بهد میاد به تعداد 200 بار اعمال زیر رو انجام می ده :
{
20 تا تبادل (کراس) - 10 تا میوتیشن(جهش) و محاسبه مسافت های تولید شده جدید
}
بعد از هر نسل (یعنی هر تیک از اون 200 بار) میاد 30 تا از بهترین جوابا رو میگیره تا دوباره روش اعمال بالا رو انجام بده یعنی
{
20 تا تبادل (کراس) - 10 تا میوتیشن(جهش) و محاسبه مسافت های تولید شده جدید
}
سلام.
من همین برنامه ای که "quantomquery" اینجا گذاشته رو برداشتم و با کلی تغییرات در الگوریتم ها و کدها و ظاهر برنامه اون رو به عنوان پروژه درس هوش مصنوعی خودم ارائه دادم.
برنامه خیلی خوبی از آب در اومده.
البته من اسم این برنامه رو گذاشتم " روبات دریل هوشمند بر مبنای مساله فروشنده دوره گرد با الگوریتم ژنتیک" چون به این روبات بیشتر شبیه هست تا به مسیرهای بین شهرها....
--------------------------
توضیحات فنی :
با visual Studio 2010 نوشتم و net framework 4
البته خود طراحی برنامه هیچ نیازی به net framework 4 نداشت ولی موقع طراحی یادم رفت که روی دات نت ورژن پایینتر تنظیم کنم.
درضمن من میخواستم که چارت بصورت خطی نمایش بدم .لی نتونستم(گزینه اش رو پیدا نکردم)
----------------------------------------
آپلود میکنم تا دیگران هم استفاده کنن.
خوشحال میشم نظرات دوستان رو هم بدونم.
این هم یه عکس از ظاهر برنامه :
آخرین ویرایش به وسیله comet99 : دوشنبه 18 دی 1391 در 22:52 عصر
سلام
3 نقطه ربطی به نرخ تبادل نداره
این کراس به صورت 3 نقطه ای عمل می کنه
ولی نرخ تبادل یعنی مثلا 30 بار این عمل کراس 3 نقطه ای انجام بشه
در اینجا عدد 30 نرخ تبادل هست
در باره تابع کراس هم مطلب زیاد هست و انواع مختلفی داره که اینجا 3 نقطه ای کار شده .
موفق باشید
فایلی ضمیمه نیست .باید چه جوری دانلودش کنم.