فهرست مطالب
|
عنوان
|
صفحه
|
چكيده
|
1
|
مقدمه
|
2
|
الگوريتم ژنتيك
|
5
|
تعريف خروجي(نمايش)
|
8
|
عملگرهاي مجموعه ژن
|
10
|
شئ جمعيت
|
13
|
توابع شئ و مقياس گذاري مناسب
|
14
|
نمايش الگوريتم ژنتيك درc++
|
15
|
توانايي عملگرها
|
17
|
چگونگي تعريف عملگرها
|
18
|
چگونگي تعريف كلاس مجموعه ژن
|
22
|
سلسله مراتب كلاس ها
|
23
|
1. سلسله مراتب كلاس GALib – گرافيكي
|
23
|
2. سلسله مراتب كلاس GALib – مراتب
|
24
|
رابط برنامه نويسي
|
25
|
نام پارامترها و گزينه هاي خط فرمان
|
26
|
رفع خطا
|
28
|
توابع اعداد تصادفي
|
29
|
GAGeneticAlgorithm
|
31
|
GADemeGA
|
42
|
GAIncrementalGA
|
44
|
GASimpleGA
|
47
|
GASteadyStateGA
|
50
|
Terminators
|
52
|
Replacement Schemes
|
54
|
GAGenome
|
55
|
GA1DArrayGenome<T>
|
62
|
GA1DArrayAlleleGenome<T>
|
65
|
GA2DArrayGenome<T>
|
67
|
GA2DArrayAlleleGenome<T>
|
70
|
GA3DArrayGenome<T>
|
72
|
GA3DArrayAlleleGenome<T>
|
76
|
GA1DBinaryStringGenome
|
78
|
GA2DBinaryStringGenome
|
81
|
GA3DBinaryStringGenome
|
85
|
GABin2DecGenome
|
88
|
GAListGenome<T>
|
91
|
GARealGenome
|
92
|
GAStringGenome
|
94
|
GATreeGenome<T>
|
96
|
GAEvalData
|
97
|
GABin2DecPhenotype
|
98
|
GAAlleleSet<T>
|
100
|
GAAlleleSetArray<T>
|
103
|
GAParameter and GAParameterList
|
104
|
GAStatistics
|
108
|
GAPopulation
|
113
|
GAScalingScheme
|
123
|
GASelectionScheme
|
127
|
GAArray<T>
|
130
|
GABinaryString
|
132
|
نتيجه
گيري
|
135
|
مراجع
|
136
|
چكيده
علم ژنتيك، علمي است كه به تازگي وارد
علوم كامپيوتر شده و با استفاده از اجزا مورد نياز ژنتيك و شبيه سازي آن در
كامپيوتر، انسان را قادر مي سازد تا بعضي از مسائل مختلف و پيچيده اي كه در اوايل
حل نشدني بودند، را حل كند.
اين مستند، يك كتابخانه از اشيا الگوريتم
ژنتيك به زبان c++
مي باشد. اين كتابخانه شامل ابزاريست كه براي بهبود هر برنامه اي به زبان c++ و هر خروجي و هر عملگر ژنتيكي،
استفاده مي شوند. در اينجا، با پياده سازي الگوريتم ژنتيك، رابط برنامه نويسي آن و
اشكالي براي راهنمايي، آشنا خواهيد شد.
مقدمه
اين مستند محتويات كتابخانه
الگوريتم ژنتيك را رمز بندي مي كند و بعضي
از فلسفه هاي طراحي را كه در پشت پياده سازي هستند، نمايش مي دهد. بعضي از مثال
هاي كد منبع در آخر صفحه مشخص شده تا ساختار اصلي برنامه، توانايي هاي عملگرها،
تطابق عملگرها با نياز كاربر و مشتقاتي از كلاس هاي جديد مجموعه ژن را نمايش
بدهند. وقتي كه شما از يك كتابخانه استفاده مي كنيد به صورت ابتدايي با دو نوع
كلاس كار مي كنيد الگوريتم مجموعه ژن و الگوريتم ژنتيك. هر نمونه اي از مجموعه ژن
يك راه حل براي مسئله شما نشان مي دهد. شي الگوريتم ژنتيك توضيح مي دهد كه چگونه
سير تكامل بايد طي شود. الگوريتم ژنتيك از يك تابع عضو شي اي كه توسط شما تعريف
شده است استفاده مي كند تا معين كند چگونه هر مجموعه ژن براي زنده ماندن مناسب
است؟
الگوريتم ژنتيك از عملگر هاي مجموعه
ژن ( كه در داخل مجموعه هستند) و استراتژي هاي انتخاب/ جايگزيني ( كه در داخل
الگوريتم ساخته مي شود ) براي توليد يك مجموعه ژن جديد مجزا ، استفاده مي كند.
سه چيز براي حل مسئله با استفاده از
الگوريتم ژنتيك وجود دارد :
1. تعريف خروجي هاي كه نشان داده ميشوند
2. تعريف عملگر هاي ژنتيكي
3. تعريف تابع عضو شي را
GALIB
(كتابخانه الگوريتمهاي ژنتيك ) به شما در دومورد اول به وسيله مهيا كردن مثال هاي
زياد وتكه برنامه هايي كه شما مي توانيد ، خروجي ها و عملگر هاي خود را بسازيد كمك
مي كند . در خيلي از موارد شما مي توانيد از ساختار خروجي ها و عملگر ها با كمي يا
هيچ اصلاحي استفاده كنيد . تابع عضو شي كاملا به شما مربوط مي شود .
در صورتي كه شما خروجي ها ، عملگرها و
موارد شي را داشته باشيد ، مي توانيد هر كدام از الگوريتم هاي ژنتيك را براي پيدا
كردن راه حل بهتر و مناسبتر براي مسئله تان به كار بگيريد. موقعي كه شما از
الگوريتم ژنتيك براي حل يك مشكل بهينه استفاده مي كنيد، بايد قادر باشيد كه يك راه
حل براي مسئله در يك ساختمان داده ارائه بدهيد . الگوريتم ژنتيك يك جمعيت از راه
حل هايي كه بر طبق نمونة ساختمان دادهايي كه به وجود آورده ايد، ايجاد مي كند .
بعد الگوريتم ژنتيك بر روي اين جمعيت عمل مي كند تا بهترين راه حل را ازآن استخراج
كند.در GALIB كتابخانه الگوريتم
ژنتيك به نمونة ساختمان داده GAGENOME گفته مي شود (بعضي ها به آن كروموزوم نيز مي
گويند ). اين كتابخانه شامل چهار نوع از اين مجموعه هاست GALISTGENOME ( ليست پيوندي مجموعه ژن)GATREEGAGENOME (درخت مجموعه ژن) GAARRYGENOME( آرايه مجموعه ژن)
GABINARYSTRINGGENOME(رشته
دودويي مجموعه ژن). اين كلاس ها از
كروموزوم يا كلاس GAGENOME
اصلي و يك كلاس ساختمان داده اي كه بوسيله نامشان مشخص شده اند، مشتق شده اند.
براي مثال ليست پيوندي مجموعه ژن از
كلاس GALIST و همچنين كلاس
مجموعه ژن GAGENOME
مشتق شده است. از ساختمان داد ه اي كه با
تعريفات مسئله شما همخواني دارد، استفاده كنيد. براي مثال ، اگر شما سعي مي كنيد
كه يك تابعي را بهينه سازي كنيد كه به پنج عدد حقيقي وابسته است ، پس به عنوان مجموعه
ژن خود از يك آرايه يك بعدي با پنج عنصر اعشاري استفاده كنيد.
الگوريتم هاي ژنتيك مختلف زيادي وجود
دارند. GALIB (كتابخانه
الگوريتم ژنتيك) شامل سه نوع اصلي مي باشد:
1. حالت ساده
2. حالت ساكن يا ثابت يا يكنواخت
3. حالت افزايش
اين الگوريتم ها در طريق هاي كه
مجموعه هاي جديد مجاز را ايجاد مي كند ومجموعه هاي قديمي را درزمان سيرتكامل
جايگزين مي كنند ، با يكديگر تفاوت دارند.
GALIB
دو مكانيسم اوليه براي گسترش قابليت هاي ساخت شي را مهيا مي كند اول از همه (و
مهمتر از همه از نظر برنامه نويسي C++
) شما مي توانيد كلاس هاي خودتان را درست كنيد و تابع هاي عضو جديدي را تعريف كنيد
. اگر شما احتياج داريد كه فقط تنظيمات كمي را بر روي رفتار كلاس GALIB اعمال كنيد ، در بيشتر موارد
مي توانيد يك تابع تعريف كنيد و به كلاس GALIB بگوييد كه از آن به عنوان پيش فرض استفاده كند .
الگوريتم هاي ژنتيك اگر به درستي
پياده سازي شوند، قابليت هر دو مورد پويش( پيدا كردن وسيع)و كاوش (پيداكردن محلي
)در فضاي SEARCH را، دارند. نوع رفتار يا عملكردي را كه شما مي
بينيد، بستگي به اين دارد كه چگونه عملگرها كار مي كنند و همچنين بستگي به شكل يا
فرم فضاي SEARCH شما دارد.