Artificial Intelligence - هوش مصنوعی  
انجمن را در گوگل محبوب کنيد :

بازگشت   Artificial Intelligence - هوش مصنوعی > محاسبات نرم > الگوریتم ژنتیک(Genetic Algorithm)


 
تبليغات سايت
Iranian Association for the Advancement of Artificial Intelligence
ارسال تاپيک جديد  پاسخ
 
LinkBack ابزارهاي تاپيک نحوه نمايش
قديمي ۰۴-۱۰-۱۳۸۷, ۰۲:۲۷ بعد از ظهر   #1 (لینک دائم)
عضو فوق فعال
 
آواتار A162
 
تاريخ عضويت: تير ۱۳۸۷
پست ها: 14
تشكرها: 16
4 تشكر در 4 پست
پيش فرض

ممنون از شما !
بسيار جالب بود
حالا چطور اون معادله اولي كه فرموديد رو ميشه به اين روش حل كرد؟
با تشكر دوباره
A162 آفلاين است   پاسخ با نقل قول

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online  
قديمي ۰۵-۲۲-۱۳۸۷, ۰۲:۰۶ قبل از ظهر   #2 (لینک دائم)
Administrator
 
آواتار Siavash
 
تاريخ عضويت: ارديبهشت ۱۳۸۷
محل سكونت: تهران
پست ها: 179
تشكرها: 27
439 تشكر در 108 پست
My Mood: Mehrabon
پيش فرض

سوال خیلی خوبیه!
فرض کنید می خوایم اون معادلرو حل بکنیم.
یک راه اینه که مثلا یک متغیر رو مقدارش رو صفر قرار بدیم و 0.1 0.1 به اون اضافه کنیم و هر بار جواب رو توی معادله قرار بدیم تا یک جواب نزدیک به دست بیاریم. این کار اولین روشی هست که شاید به ذهن هر کسی برسه. ولی مشکلات زیادی داره. اولا لزوما به جواب نمی رسه. چون ممکنه 0.1 خیلی مقدار بزرگی نسبت به جواب باشه یا مثلا جواب منفی باشه.

راه بعدی استفاده از روش های مختلف محاسبات عددی معمول هست. مثل تکرار ساده یا روش نیوتن یا ... این روش ها روش های خوبی هستند نسبت به روش قبل. اما خیلی وقت ها این روش ها همگرا نمیشن. یا توی یک اکسترمم نسبی میفتن!

روشی که می خوایم بگیم خیلی وقت ها از این دو روش بهتر هست همین الگوریتم ژنتیک هست! اما چطوری؟
خوب تو این روش اول یک تابع سلامت یا Fitness Function تعریف می شه. این تابع سلامت هر کروموزوم رو تعیین می کنه. بعد روش Cross over و Mutation رو باید انتخاب کنیم و جمعیت اولیرو تولید می کنیم.
در آموزش بالا من ساده ترین نوع و در واقع روش کلاسیک تولید جمعیت اولیه و Crossover و Mutation رو گفتم.
حالا می خوام نوع دیگه ای از اون رو معرفی کنم. این بار جای اینکه اعداد باینری رو به عنوان جمعیت اولیه در نظر بگیریم، کلی اعداد حقیقی تولید می کنیم به عنوان جمعیت اولیه. مثلا 100، -10.5، 57.2 و ...
خوب حالا سوال پیش میاد پس عملیات Crossover و Mutation چطور خواهند بود؟
باز هم روش های مختلفی هستند. ما ساده ترینش رو انتخاب می کنیم. یعنی به عنوان عملیات Crossover از دو کروموزوم پدر و مادر میانگین می گیریم و به عنوان عملیات Mutation بعضی اوقات عدد رو با یک درصد کمی از خودش جمع یا تفریق می کنیم.
كد:
X^2 + e^X + 3*sin(X) + int(-X^X) / X = 12
خوب حالا شروع می کنیم به بررسی فرآیند حل اون معادله. اول همونطوری که گفتم یک جمعیت اولیه داریم. مقدار هر کدوم از کروموزوم های جمعیت اولیرو به جای X در سمت چپ معادله قرار می دیم. این مقدار باید در نهایت 12 بشه (سمت راست معادله).
پس تابع سلامت رو این طور تعریف می کنیم: تفاضل جواب بدست اومده از قرار دادن کرومزوم های جمعیت اولیه در سمت چپ معادله منهای عدد 12.
پس یعنی اگر تابع سلامت 0 بشه ما دقیقا به جواب رسیدیم. برای تمام کروموزوم ها مقدار سلامتیشون رو بدست میاریم. از بین سالم ترین کرومزوم ها (یعنی کرومزوم هایی که مقدار تابع سلامتشون بیشتر به صفر نزدیکه)، تعدادی انتخاب می کنیم. این کرومزوم ها روشون عملیات Crossover و Mutation انجام میشه. یعنی با انتخاب دو به دو ی اون ها و میانگین گرفتن یک جمعیت جدید ایجاد میشه! به این روش انتخاب، انتخاب Elite ها یا بهترین ها در هر مرحله میگن. روش های دیگری هم برای قسمت انتخاب وجود داره.
حالا یک جمعیت کروموزوم های جدید داریم و مجددا عملیات تکرار می شه تا بالاخره یکی از کروموزوم ها مقدار تابع سلامتش تا حدی که ما می خوایم به 0 نزدیک بشه، مثلا 0.0001
شاید به نظر کمی عجیب بیاد که این روش واقعا بتونه معادلرو حل کنه. اما این روش که مثل اکثر روش های بهینه سازی دیگه بر مبنای آزمایش و خطا هست در بعضی مواقع بسیار زودتر ما رو به نتیجه ی مورد نظر می رسونه. کافیه امتحان کنید.
__________________
Siavash آفلاين است   پاسخ با نقل قول
از Siavash تشكر كرده اند:
A162 (۰۸-۴-۱۳۸۷), Di4mond_65 (۱۱-۶-۱۳۸۸), fantometkh (۱۱-۳-۱۳۸۸), Girl_CE (۱۱-۱۰-۱۳۸۷), jiji2663 (۰۱-۹-۱۳۹۰), nini2 (۰۷-۴-۱۳۹۰), rouzbeh_z (۰۲-۲۳-۱۳۹۲)
پاسخ



كاربران در حال ديدن تاپيک: 1 (0 عضو و 1 مهمان)
 

قوانين ارسال
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is فعال
شکلکها فعال است
كد [IMG] فعال است
كدهاي HTML غير فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال




زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۳:۲۷ بعد از ظهر ميباشد.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

Teach and Learn at Hexib | Sponsored by www.Syavash.com and Product In Review

استفاده از مطالب انجمن در سایر سایت ها، تنها با ذکر انجمن هوش مصنوعي به عنوان منبع و لینک مستقیم به خود مطلب مجاز است

Inactive Reminders By Icora Web Design