سلام. اونطوری که من فهمیدم هدف یافتن مقادیر 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 به راحتی حل می شود. اگه مشکلی بود در خدمتم.
|