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

سلام. اونطوری که من فهمیدم هدف یافتن مقادیر x,y,z هست به طوریکه کمترین خطا در تقریب وجود داشته باشد. باید توجه داشته باشید که تا آنجایی که من می دانم باید حدود x,y,z را هم داشته باشید به اضافه دقت هر کدام. بنابراین با دانستن بازه اعداد مثلا از a تا b و با دقت c (مثلا 0.01). اولین کاری که باید بکنی این است که بازه اعدادو به 0 تا b-a بیاری و پس از آن این اعدادو بر c تقسیم کنی. مثلا فرض کن اعدادت(x,y,z) بین 5 تا 15 باشند. اول این اعدادو به بازه 0 تا 10 میاری و اگه دقتت 0.01 باشه، این اعداد به 0 تا 1000 تبدیل میشن. برای نمایش این اعداد به 10 بیت نیاز داری. بنابراین با این 10 بیت که برای هر کدام از x,y,z نیاز داری در کل میشه 30 بیت. عملیات جهش و تقاطع رو میزنی و برای ارزیابی برای عمل انتخاب(تعیین درصدها برای انتخاب هر جمعیت)، می تونین با مشخص بودن مقادیر x,y,z که درمرحله اول به طور تصادفی تعیین میشه، آنها را در معادلات گفته شده قرار دهید و اختلاف آن را با مقدار result به دست بیاری. این کارو برای تک تک معادلاتت انجام بده(1000 تا) و مقادیر اختلاف رو با هم جمع کن. تابع برازشت میشه مجموع این اختلافها که اختلافها رو می تونی قبل از جمع زدن به توان 2 برسونی یا قدرمطلقشو بگیری تا علامتش حذف بشه و بعد با هم جمع بزنی. ما مایلیم این مقدار کمینه شود پس برای بیشینه کردن تابع برازش می تونی یا این مقدار معکوس کنی یا منهای اونو درنظر بگیری و این مقدار به عنوان تابع برازش بیشینه کنی. بقیش مثل الگوریتم ژنتیک هستش. فقط من نمی دونم چرا می خواین این مساله رو با ژنتیک حل کنین. ژنتیک در مواردی کاربرد دارد که مساله ما، مساله پیچیده ای باشد یعنی نتوان به راحتی بهینه سراسری اونو محاسبه کرد که در این مساله به راحتی قابل محاسبه است زیرا تابع خطای ما که می خواهیم کمینه شود، یک تابع محدب بوده و با روش های رگرسیون مانند LMS به راحتی حل می شود. اگه مشکلی بود در خدمتم.
mahdiii آفلاين است   پاسخ با نقل قول
از mahdiii تشكر كرده است:
jojepanbeyi (۱۰-۱-۱۳۹۰)