نمايش پست تنها
قديمي ۰۱-۲۶-۱۳۹۰, ۰۵:۵۴ بعد از ظهر   #6 (لینک دائم)
HojjatJafary Male
عضو فوق فعال
 
آواتار HojjatJafary
 
تاريخ عضويت: فروردين ۱۳۹۰
محل سكونت: Teh
پست ها: 31
تشكرها: 1
29 تشكر در 14 پست
My Mood: Nafaskesh
پيش فرض

3210
7654
111098
15141312


فرض کنید خانه های جدول شما به صورت بالا شماره گذاری شده باشد. جدول شما از این به بعد یک کروموزوم نام دارد.شما مجموعه ای از این کروموزومها دارید که به آن جمعیت می گویند. مقدار آن دلبخواه است.(لیستی از جدولها)
ابتدا یک جمعیت را به صورت تصادفی تولید کنید.
برنامه شما باید یک حلقه کلی داشته باشد که به آن تولید نسل می گویند باید تعداد تکرار آن را محدود به یک عدد دلبخواه کنید که اگر پاسخ یافت نشده حلقه تمام شود. یک شرط اصلی هم در این حلقه وجود دارد و آن این است که تابع fitness شما به مقدار مطلوب رسید است و شما باید جواب را چاپ کنید.
درون این حلقه یک حلقه دیگر وجود دارد که جمعیت جدید را به روش زیر می سازد:
دو کروموزوم (یا شخص) را به صورت تصادفی انتخاب کنید و عمل CrossOver را روی آنها انجام دهید و سپس عمل mutate را انجام دهید. در پایان آنها را به لیست جدیدی اضافه کنید. وقتی جمعیت جدید شما هم اندازه جمعیت قدیم شد.
جمعیت قدیم را پاک کنید و مراحل را با جمعیت جدید تکرار کنید.
تابع fitness هما تابعی است که شما باید جدول خود را ارزیابی کنید که مثلا مجموع سطرها و ستون ها ۲۴ است یا خیر. مقدار بازگشتی این تابع باید با توجه به نزدیک بودن به جواب تعیین شود. مثلا هربار که مجموع سطری یا ستونی ۲۴ شد آن را یک امتیاز تلقی کنید که در این صورت پاسخ نهایی می شود ۸ امتیاز.

بیان جزيیات با این شیوه مشکل است. کمی جستجو کنید ، امیدوارم پاسخ مشکلاتان را پیدا کنید.
موفق باشید.

ويرايش شده توسط HojjatJafary; ۰۱-۲۶-۱۳۹۰ در ساعت ۰۵:۵۷ بعد از ظهر دليل: رفع ابهام
HojjatJafary آفلاين است   پاسخ با نقل قول
از HojjatJafary تشكر كرده اند:
Astaraki (۰۱-۲۶-۱۳۹۰), masood (۰۶-۲۱-۱۳۹۰), سبا (۰۱-۲۶-۱۳۹۰)