PDA

View Full Version : حرفه ای: حل فروشنده دوره گرد با الگوریتم ژنتیک



quantomquery
سه شنبه 30 آذر 1389, 19:32 عصر
برنامه ای برای حل فروشنده دوره گرد با الگوریتم ژنتیک
امکان انتخاب شهر با ماوس
تعیین
crossover
mutation
population
تعداد شهر ها

با زبان سی شارپ
شی گرا

quantomquery
دوشنبه 13 تیر 1390, 12:58 عصر
سلام. خوبين؟
ميشه يه كم درمورد اين برنامه الگوريتم ژنتيكي كه نوشتين توضيح بدين واسم. ممنون واقعا

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

اگه جای خاصی رو مشکل دارین بفرمایید تا توضیح بدم .

موفق باشید

oranoos_mt
دوشنبه 13 تیر 1390, 13:09 عصر
اين نرخ تبادل ، نرخ جهش ،‌جمعيت اوليه ،‌ تعداد نسل و شهرها كارشون چيه؟ يه توضيحي ميدي

quantomquery
دوشنبه 13 تیر 1390, 13:20 عصر
نمیدونم چقدر با ژنتیک آشنا هستید و این توضیح دادنم رو سخت می کنه ولی
نرخ تبادل یعنی تعداد کراس اور
نرخ جهش یعنی تعداد جهش
جمعیت اولیه یعنی تعداد کرومزوم(جواب هایی از مساله) که بار اول به صورت تصادفی ایجاد می شوند
تعداد نسل یعنی چند بار کراس و میوتیشن(جهش) انجام بشن تا برنامه کارش تموم بشه
کلاس شهر هم که معلومه نقاط ایکس و ایگرگ و توابعی برای نقاشی کردن داره
چون فروشنده دوره گرد باید ازتعدادی شهر با کمترین مسافت طی شده عبور کنه



مثلا
30 جمعیت اولیه
20 تبادل
10 جهش
200نسل
4 شهر

باشه :
اول 30 تا جواب تصادفی برای مثاله ساخته میشه که خیلی هاش یا همش نادرسته
بهد میاد به تعداد 200 بار اعمال زیر رو انجام می ده :
{
20 تا تبادل (کراس) - 10 تا میوتیشن(جهش) و محاسبه مسافت های تولید شده جدید
}

بعد از هر نسل (یعنی هر تیک از اون 200 بار) میاد 30 تا از بهترین جوابا رو میگیره تا دوباره روش اعمال بالا رو انجام بده یعنی
{
20 تا تبادل (کراس) - 10 تا میوتیشن(جهش) و محاسبه مسافت های تولید شده جدید
}

comet99
دوشنبه 18 دی 1391, 22:42 عصر
سلام.
من همین برنامه ای که "quantomquery" اینجا گذاشته رو برداشتم و با کلی تغییرات در الگوریتم ها و کدها و ظاهر برنامه اون رو به عنوان پروژه درس هوش مصنوعی خودم ارائه دادم.
برنامه خیلی خوبی از آب در اومده.
البته من اسم این برنامه رو گذاشتم " روبات دریل هوشمند بر مبنای مساله فروشنده دوره گرد با الگوریتم ژنتیک" چون به این روبات بیشتر شبیه هست تا به مسیرهای بین شهرها....


--------------------------
توضیحات فنی :
با visual Studio 2010 نوشتم و net framework 4
البته خود طراحی برنامه هیچ نیازی به net framework 4 نداشت ولی موقع طراحی یادم رفت که روی دات نت ورژن پایینتر تنظیم کنم.
درضمن من میخواستم که چارت بصورت خطی نمایش بدم .لی نتونستم(گزینه اش رو پیدا نکردم)
----------------------------------------
آپلود میکنم تا دیگران هم استفاده کنن.
خوشحال میشم نظرات دوستان رو هم بدونم.

این هم یه عکس از ظاهر برنامه :

http://uploadax.com/images/03135162100969148517.png

zahra.mf
چهارشنبه 18 بهمن 1391, 10:49 صبح
نمیدونم چقدر با ژنتیک آشنا هستید و این توضیح دادنم رو سخت می کنه ولی
نرخ تبادل یعنی تعداد کراس اور
نرخ جهش یعنی تعداد جهش
جمعیت اولیه یعنی تعداد کرومزوم(جواب هایی از مساله) که بار اول به صورت تصادفی ایجاد می شوند
تعداد نسل یعنی چند بار کراس و میوتیشن(جهش) انجام بشن تا برنامه کارش تموم بشه
کلاس شهر هم که معلومه نقاط ایکس و ایگرگ و توابعی برای نقاشی کردن داره
چون فروشنده دوره گرد باید ازتعدادی شهر با کمترین مسافت طی شده عبور کنه



مثلا
30 جمعیت اولیه
20 تبادل
10 جهش
200نسل
4 شهر

باشه :
اول 30 تا جواب تصادفی برای مثاله ساخته میشه که خیلی هاش یا همش نادرسته
بهد میاد به تعداد 200 بار اعمال زیر رو انجام می ده :
{
20 تا تبادل (کراس) - 10 تا میوتیشن(جهش) و محاسبه مسافت های تولید شده جدید
}

بعد از هر نسل (یعنی هر تیک از اون 200 بار) میاد 30 تا از بهترین جوابا رو میگیره تا دوباره روش اعمال بالا رو انجام بده یعنی
{
20 تا تبادل (کراس) - 10 تا میوتیشن(جهش) و محاسبه مسافت های تولید شده جدید
}

سلام اگه نرخ تبادل و خودمون وارد می کنیم پس چرا تو تابع cross سه تا نقطه هستش
اصلا اون سه تا نقطه چیه؟
میشه یه کم راجع به این تابع توضیح بدید؟

ممنون

quantomquery
یک شنبه 13 اسفند 1391, 15:08 عصر
سلام

3 نقطه ربطی به نرخ تبادل نداره
این کراس به صورت 3 نقطه ای عمل می کنه
ولی نرخ تبادل یعنی مثلا 30 بار این عمل کراس 3 نقطه ای انجام بشه
در اینجا عدد 30 نرخ تبادل هست

در باره تابع کراس هم مطلب زیاد هست و انواع مختلفی داره که اینجا 3 نقطه ای کار شده .

موفق باشید

starparham
سه شنبه 04 تیر 1392, 12:13 عصر
سلام.
من همین برنامه ای که "quantomquery" اینجا گذاشته رو برداشتم و با کلی تغییرات در الگوریتم ها و کدها و ظاهر برنامه اون رو به عنوان پروژه درس هوش مصنوعی خودم ارائه دادم.
برنامه خیلی خوبی از آب در اومده.
البته من اسم این برنامه رو گذاشتم " روبات دریل هوشمند بر مبنای مساله فروشنده دوره گرد با الگوریتم ژنتیک" چون به این روبات بیشتر شبیه هست تا به مسیرهای بین شهرها....


--------------------------
توضیحات فنی :
با visual Studio 2010 نوشتم و net framework 4
البته خود طراحی برنامه هیچ نیازی به net framework 4 نداشت ولی موقع طراحی یادم رفت که روی دات نت ورژن پایینتر تنظیم کنم.
درضمن من میخواستم که چارت بصورت خطی نمایش بدم .لی نتونستم(گزینه اش رو پیدا نکردم)
----------------------------------------
آپلود میکنم تا دیگران هم استفاده کنن.
خوشحال میشم نظرات دوستان رو هم بدونم.

این هم یه عکس از ظاهر برنامه :

http://uploadax.com/images/03135162100969148517.png
سلام
ممنون بابت پروژه ای ک گذاشتی
یه لطفی میکنی یکم راجع به
endoing & crossover & mutation & fitness توضیح بدی و قسمت جهش برنامت
ممـــــــــــــــــنون

الهه777
پنج شنبه 11 تیر 1394, 09:54 صبح
فایلی ضمیمه نیست .باید چه جوری دانلودش کنم.

iranmatlab.org
شنبه 16 آبان 1394, 15:47 عصر
بسته آموزشي كامل الگوريتم ژنتيك (http://iran-matlab.ir/?product=%D9%81%DB%8C%D9%84%D9%85-%D8%AC%D8%A7%D9%85%D8%B9-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%DA%98%D9%86%D8%AA%DB%8C%DA%A9-%D8%AF)

http://iran-matlab.ir/?product=%D9%81%DB%8C%D9%84%D9%85-%D8%AC%D8%A7%D9%85%D8%B9-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A7%D9%84%DA%AF%D9%88%D8%B1%DB%8C%D8%AA%D9%85-%DA%98%D9%86%D8%AA%DB%8C%DA%A9-%D8%AF