نمايش پست تنها
قديمي ۰۹-۱۴-۱۳۹۱, ۰۵:۵۴ بعد از ظهر   #3 (لینک دائم)
mahdiii
Active users
 
آواتار mahdiii
 
تاريخ عضويت: اسفند ۱۳۸۸
محل سكونت: مشهد
پست ها: 355
تشكرها: 27
167 تشكر در 131 پست
My Mood: Khoshhal
پيش فرض

این معادله را می توان با روشهایی مانند نیوتن و روشهای عددی دیگر حل کرد. ریشه های آن 1-،2- و 20 است.
اگر بخواهید توسط ژنتیک حل کنید، کافیست یک کروموزوم برای x و با تعدادی مثلا 5 ژن تعریف کنید. چون x شما بین 0 تا 31 است بنابراین به 5 بیت نیاز دارید. ابتدا یک تعداد جمعیت اولیه مثلا 50 کروموزوم که هر کدام دارای 5 بیت هستند، ایجاد می کنید با مقادیر تصادفی صفرو یک. و سپس با توجه به مقدار این کروموزومها و گذاشتن آن در تابع مقدار آن را به دست می آورید. مثلا فرض کنید که یک کروموزوم شما به شکل 10001 باشد. این مقدار برابر 17 است آن را در معادله می گذارید می بینید مقدار آن 1026- می شود. بر اساس این مقادیر تابع ارزیابی و درصد انتخاب کروموزومها مشخص می شوند (selection)تا در گامهای بعدی کروموزومهای بهتر با درصد بیشتری بتوانند انتخاب شوند. عمل جهش و تقاطع نیز با احتمالاتی بر روی این کروموزومها انجام می شود. و در نهایت جمعیت جدید ایجاد می شود و این کار تا رسیدن به جواب ادامه پیدا می کند. مشاهده می کنید که اگر یک کروموزوم دارای مقدار 10100 باشد یعنی 20 مقدار معادله صفر خواهد بود که مدنظر ماست بنابراین باید تابع ارزیابی طوری انتخاب شود که اگر معادله دارای مقدار صفر شد بیشترین و در مکانهای دیگر مقدار کمی بگیرد. تا در صورت مواجه شدن با این کروموزوم(20) بیشترین احتمال برای انتخاب آن را داشته باشد. همچنین این روش تنها مقادیر صحیح بین 0 تا 31 را درنظر گرفته است. برای دقت بیشتر می توان با اضافه کردن بیتهای بیشتر، مقادیر اعشاری را نیز درنظر گرفت که در این مساله با توجه به اینکه جوابها خود صحیح هستند لازم نمی باشد.
mahdiii آفلاين است   پاسخ با نقل قول