نمايش پست تنها
قديمي ۰۲-۱۳-۱۳۹۰, ۰۲:۳۱ بعد از ظهر   #10 (لینک دائم)
aminkop Male
Active users
 
آواتار aminkop
 
تاريخ عضويت: آبان ۱۳۸۸
پست ها: 45
تشكرها: 7
123 تشكر در 35 پست
پيش فرض

سلام

چند نکته را براتون جمع بندی می کنم.

در مورد کدگذاری یا بازنمائی استفاده از باینری برای این مساله اشتباه است چرا که هر شهر باید به اندازه 1Logn کد شود که هر کروموزومnLogn اندازه دارد و جهش هم رشته های غیر موجه تولید می کند و مسائل دیگر اصلاح و ...

پس بازنمائی می شود عدد صحیح و بصورت جایگشت به خاطر نوع مساله که از هر شهر فقط یک بار می گذریم
و تابع شایستگی می شود طول مسیر شهر ها به یکدیگر.
و عملگرهای ژنتیکی برای جایگشت می شود: بازترکیبی (order1; pmx; cycle; edge; modified edge ) و جهش (درج - تعویض - عکس - scramble)

مراحل کامل الگوریتم برای پیاده سازی:
1) تعيين روش بازنمايي

2) ايجاد جمعيت اوليه

3) تكرار تا برقراري شرط خاتمه()
3-1) ارزيابي جمعيت
3-2) انتخاب والدين
3-3) اعمال عملگرهاي ژنتيكي و توليد فرزندان
3-4) انتخاب بازماندگان

خوب جمعیت اولیه را تصادفی تولید می کنید که یک رشته می شود به اندازه 30 عدد تصادفی از 1تا 30 که مثلا 50 نسل اولیه تولید می کنید.(یعنی 50 رشته 30 تایی)
ارزیابی جمعیت هم مسافت شهرها را که به هم دارید با هم جمع می کنید.
انتخاب والدین یکی از الگوریتمهای (مبتنی بر شایستگی- مبتنی بر رتبه - تورنمنت) را استفاده می کنید.
بعد عملگرها را با یک درصدی اعمال می کنید(این مقدار معمولا برای بازترکیبی زیاد و برای جهش پایین است و بین 0 تا 1)
و انتخاب بازماندگان که همان الگوریتمهای انتخاب والدین است
و این کار را تا یک نسلی مثلا 500 بار ادامه می دهید

یک نکته را برای همه دوستان تاکید کنم که این دیگر یک الگوریتم ژنتیک نیست چون مثلا روش باینری برای بازنمائی استفاده نکردیم و یک الگوریتم تکاملی کلی است (البته یک تعبیری بین جامعه مهندسین وجود دارد که به همه این الگوریتمها ژنتیک می گویند ولی دانشمندان هوش به همه این الگوریتمها بطور کلی تکاملی می گویند و فقط آن چهار الگوریتم ga ; gp ; es ; ep ) دارای نام خاص هستند که ساختار خاصشان حفظ شود.

ويرايش شده توسط aminkop; ۰۲-۱۳-۱۳۹۰ در ساعت ۰۲:۴۵ بعد از ظهر
aminkop آفلاين است   پاسخ با نقل قول
از aminkop تشكر كرده است:
kian_abdollahi (۰۳-۲۸-۱۳۹۰)