450 likes | 739 Views
الگوریتم های ژنتیک. مدرس: علی فروتن راد گروه مهندسی کامپیوتر دانشگاه آزاد اسلامی زنجان & Mitchell Ch. 9. با تشکر از دکتر سعید شیری و دکتر فریبز محمودی گروه مهندسی کامپیوتر و فناوری اطلاعات دانشگاه صنعتی امیرکبیر و دانشگاه آزاد قزوین. الگوریتم ژنتیک.
E N D
الگوریتمهای ژنتیک مدرس: علی فروتن راد گروه مهندسی کامپیوتر دانشگاه آزاد اسلامی زنجان & Mitchell Ch. 9 با تشکر از دکتر سعید شیری و دکتر فریبز محمودی گروه مهندسی کامپیوتر و فناوری اطلاعات دانشگاه صنعتی امیرکبیر و دانشگاه آزاد قزوین
الگوریتمژنتیک الگوریتم ژنتیک روشیادگیریبرپایه تکاملبیولوژیکاست. اینروشدرسال 1970 توسط John Holland معرفیگردید. اینروشهابانامEvolutionaryAlgorithmsنیزخواندهمیشوند.
ایدهکلی یک GA برایحلیکمسئلهمجموعهبسیاربزرگیازراهحلهایممکنراتولیدمیکند. هریکازاینراهحلهابااستفادهازیک“تابعشایستگی”موردارزیابیقرارمیگیرد. آنگاه تعدادی ازبهترینراهحلهاباعثتولیدراهحلهایجدیدیمیشوند. کهاینکارباعثتکاملراهحلهامیگردد. بدینترتیبفضایجستجودرجهتیتکاملپیدامیکندکهبهراهحلمطلوببرسد. درصورتانتخابصحیحپارامترها،اینروشمیتواندبسیارموثرعملنماید.
فضایفرضیه الگوریتم ژنتیکبه جای جستجویفرضیههای general-to specific ویا simple to complex فرضیههایجدیدراباتغییروترکیب متوالیاجزابهترینفرضیههایموجودبدستمیآورد. درهر مرحله مجموعهایازفرضیههاکه جمعیت (population) نامیدهمیشوندازطریقجایگزینیبخشیازجمعیتفعلیبافرزندانیکهازبهترینفرضیههایموجودحاصلشدهاندبدستمیآید.
ویژگیها الگوریتمهایژنتیکدرمسائلیکهفضایجستجویبزرگیداشتهباشندمیتواندبکارگرفتهشود. همچنیندرمسایلی بافضایفرضیهپیچیده کهتاثیراجزاآندرفرضیهکلیناشناختهباشندمیتواناز GA برایجستجواستفادهنمود. برای بهینهسازی مسائل گسسته (DiscreteOptimization)بسیارمورداستفادهقرارمیگیرد. الگوریتمهایژنتیکرامیتوانبه راحتیبه صورت موازیاجرانمودازاین رومیتوانکامپیوترهایارزانقیمتتری رابه صورت موازیمورداستفادهقرارداد. امکانبهتلهافتادناینالگوریتمدرمینیمممحلیکمترازسایرروشهاست. ازلحاظمحاسباتیپرهزینههستند. تضمینیبرایرسیدنبهجواببهینهوجودندارد.
Parallelization of Genetic Programming درسال 1999 شرکت Genetic Programming Inc. یککامپیوترموازیبا 1000 گره هریکشاملکامپیوترهای P2, 350 MHZ برایپیادهسازی روشهایژنتیکرامورداستفادهقرارداد.
کاربردها کاربردالگوریتمهایژنتیکبسیارزیادمیباشد: Optimization, Automatic Programming, Machine Learning, Economics, Operations Research, Ecology, Studies Of Evolution And Learning, And Social Systems
زیرشاخههای EA روشهای EA بهدونوعمرتبطبههمولیمجزادستهبندی میشوند: Genetic Algorithms (GAs) دراینروش راهحلیکمسئلهبه صورت یکBitStringنشاندادهمیشود. Genetic Programming (GP) اینروشبهتولیدExpressionTreesکهدرزبانهایبرنامهنویسیمثل Lisp مورداستفادههستندمیپردازدبدینترتیبمیتوانبرنامههائیساختکهقابلاجراباشند.
الگوریتمهایژنتیک روشمتداولپیادهسازی الگوریتمژنتیکبدینترتیباست: مجموعه ایازفرضیههاکهPopulationنامیدهمیشودتولیدوبه طور متناوببافرضیههایجدیدیجایگزینمیگردد. درهربارتکرارتمامیفرضیههابااستفادهازیکتابعشایستگییاFitness Functionموردارزیابیقراردادهمیشوند.آنگاهتعدادیازبهترینفرضیههابااستفادهازیکتابعاحتمالانتخابشدهوجمعیتجدیدراتشکیلمیدهند. تعدادیازاینفرضیههایانتخابشدهبههمانصورتمورداستفادهواقعشدهومابقیبااستفادهازاپراتورهایژنتیکینظیرCrossoverوMutation برایتولیدفرزندانبکارمیروند.
پارامترهای GA یکالگوریتمGAدارایپارامترهایزیراست: GA(Fitness,Fitness_threshold,p,r,m) :Fitness تابعیبرایارزیابییکفرضیه کهمقداریعددیبههرفرضیهنسبتمیدهد. :Fitness_threshold مقدارآستانه کهشرطپایانرامعینمیکند. :pتعدادفرضیههائیکهبایددرجمعیتدرنظرگرفتهشوند. :rدرصدیازجمعیتکهدرهرمرحلهتوسطالگوریتمCrossoverجایگزینمیشوند. :mنرخMutation
الگورتیم :Initialize جمعیتراباتعدادpفرضیهبه طور تصادفیمقداردهیاولیهکنید. :Evaluate برایهرفرضیهhدرpمقدارتابعFitness(h) رامحاسبهنمائید. تازمانیکه[maxhFitness(h)] <Fitness_threshold یکجمعیتجدیدایجاد کنید. فرضیهایکهدارایبیشترینمقدارFitnessاسترابرگردانید.
نحوهایجادجمعیتجدید مراحلایجادیکجمعیتجدیدبه صورت زیراست: • :select تعداد(1-r)p فرضیهازمیانP انتخابوبهPs اضافهکنید. احتمالانتخابیکفرضیهhi ازمیانPعبارتاستاز: P(hi) = Fitness (hi) / Σj Fitness (hj) • :Crossoverبااستفادهازاحتمال بدستآمدهتوسطرابطهفوق،تعداد(rp)/2زوجفرضیهازمیانPانتخابوبااستفادهازاپراتورCrossoverدوفرزندازآنانایجادکنید. فرزندانرابهPsاضافهکنید. • :Mutate تعدادmدرصدازاعضا Ps رابااحتمالیکنواختانتخابویکبیتازهریک آنهارابه صورت تصادفیمعکوسکنید • PPs:Update • برایهرفرضیهhدرPمقدارتابعFitnessرامحاسبهکنید هرچهتناسبفرضیهایبیشترباشداحتمالانتخابآنبیشتراست.ایناحتمالهمچنینبامقدارتناسبفرضیههایدیگرنسبتعکسدارد.
Phenotype space Genotype space = {0,1}L Encoding (representation) 10010001 10010010 010001001 011101001 Decoding (inverse representation) نمایشفرضیهها • درالگوریتمژنتیکمعمولافرضیههابه صورت رشتهایازبیتهانشاندادهمیشوندتااعمالاپراتورهایژنتیکیبررویآنهاسادهترباشد. • :Phenotype بهمقادیریاراهحلهایواقعیگفتهمیشود. • :Genotype بهمقادیررمز شدهیاکروموزمهاگفتهمیشودکهمورداستفادهGAقرارمیگیرند. • بایدراهیبرایتبدیلایندونحوهنمایشبهیکدیگربدستآوردهشود.
مثال: نمایشقوانین If-then rules • براینمایشمقادیریکویژگینظیر Outlook کهدارایسهمقدار Sunny, Overcast, Rain استمیتوانازرشتهایباطول 3 بیتاستفادهنمود: 100 -> Outlook = Sunny 011-> Outlook = Overcast Rain براینمایشترکیبویژگیها رشتهبیتهایهریکراپشتسرهم قرارمیدهیم: بههمینترتیبکلیکقانون if- then رامیتوانباپشتسرهمقراردادنبیتهایقسمتهایشرطونتیجهایجادنمود: Outlook Wind 011 10 IF Wind = Strong THEN PlayTennis = No Outlook Wind PlayTennis 111 10 0 bit string: 111100
نمایشفرضیهها: ملاحظات • ممکناستترکیببعضیازبیتها منجربهفرضیههایبیمعنیگردد.برایپرهیزازچنینوضعیتی: • میتوانازروشرمزگذاری دیگریاستفادهنمود. • میتواناپراتورهایژنتیکیراطوریتعییننمودکهچنینحالتهائیراحذفنمایند. • میتوانبهاینفرضیههامقدارfitnessخیلیکمینسبتداد.
مثال: مساله 8-وزیر • Fitness function: number of non-attacking pairs of queens • (min = 0, max = 8 × 7/2 = 28) • 24/(24+23+20+11) = 31% • 23/(24+23+20+11) = 29% etc
اپراتورهایژنتیکی Crossover : • اپراتورCrossoverبااستفادهازدورشتهوالددورشتهفرزندبوجودمیآورد. • برایاین کارقسمتیازبیتهایوالدیندربیتهایفرزندانکپیمیشود. • انتخاببیتهائیکهبایدازهریکازوالدینکپیشوندبهروشهایمختلفانجاممیشود: • single-point crossover • Two-point crossover • Uniform crossover • برایتعیینمحلبیتهایکپیشوندهازیکرشتهبهنامCrossoverMask استفادهمیشود.
Single-point crossover یکنقطهتصادفی درطولرشتهانتخابمیشود. والدیندرایننقطهبهدوقسمت شکستهمیشوند. هرفرزندباانتخابتکهاولازیکیازوالدینوتکهدومازوالددیگربوجودمیآید. Children Parents Crossover Mask: 11111000000
روشهایدیگر Crossover • Two-point crossover • Uniform crossover Crossover Mask: 00111110000 Children Parents Parents Crossover Mask: 10011010011 Children بیتهابه صورت یکنواختازوالدینانتخابمیشوند
اپراتورهایژنتیکی Mutation : اپراتورmutationبرایبوجودآوردنفرزندفقطازیکوالداستفادهمیکند.این کارباانجامتغییراتکوچکیدررشتهاولیه به وقوعمیپیوندد. بااستفادهازیکتوزیعیکنواختیکبیتبه صورت تصادفیانتخابومقدارآنتغییرپیدامیکند. معمولا mutationبعدازانجامcrossoverاعمالمیشود. Child Parent
Crossover OR mutation? • اینسوالهاسالهامطرحبودهاست: کدامیکبهتراست؟کدامیکلازماست؟کدامیکاصلیاست؟ • پاسخیکهتاکنونبیشترازبقیهپاسخهاموردقبولبوده: • بستگیبهصورتمسئلهدارد. • درحالتکلیبهتراستازهردواستفادهشود. • هرکدامنقشمخصوصخودرادارد. • میتوانالگوریتمیداشتکهفقطازmutationاستفادهکندولیالگوریتمیکهفقطازcrossover استفادهکندکارنخواهدکرد.
Crossover OR Mutation? Crossover خاصیتجستجوگرانهویاexplorativeدارد.میتواند باانجامپرشهایبزرگبهمحلهائیدر بینوالدینرفتهونواحیجدیدیراکشفنماید. Mutation خاصیتگسترشیویاexploitiveدارد.میتواندباانجامتغییراتکوچکتصادفیبهنواحیکشفشدهوسعتببخشد. Crossoverاطلاعاتوالدینراترکیبمیکنددر حالیکهmutationمیتوانداطلاعاتجدیدیاضافهنماید. برایرسیدنبهیکپاسخبهینهیکخوششانسیدرMutationلازماست.
تابعتناسب تابعfitnessمعیاریبرایرتبهبندیفرضیههاستکهکمکمیکندتافرضیههایبرتربراینسلبعدیجمعیتانتخابشوند.نحوهانتخاباینتابعبستهبهکاربردموردنظردارد: :Classification درایننوعمسایلتابعتناسبمعمولابرابراستبادقتقانوندردستهبندی مثالهایآموزشی.
1/6 = 17% B fitness(A) = 3 A C fitness(B) = 1 2/6 = 33% 3/6 = 50% fitness(C) = 2 انتخابفرضیهها • Roulette Wheel selectionدرروشمعرفیشدهدرالگوریتمسادهGAاحتمالانتخابیکفرضیهبرایاستفادهدرجمعیتبعدیبستگیبهنسبتfitnessآنبهfitnessبقیهاعضادارد.اینروشRouletteWheelselectionنامیدهمیشود. P(hi) = Fitness (hi) / Σj Fitness (hj) • روشهایدیگر: • Tournamentselection • Rankselection
نحوهجستجودرفضایفرضیه روشجستجویGAباروشهایدیگرمثلشبکههایعصبیتفاوتدارد: درشبکهعصبیروشGradientdescentبه صورت هموارازفرضیهایبهفرضیه مشابهدیگریحرکتمیکند،درحالیکهGAممکناستبه صورت ناگهانیفرضیهوالدرابافرزندیجایگزیننمایدکهتفاوتاساسیباوالدآنداشتهباشد. ازاین رواحتمالگیرافتادنGAدرمینیمممحلیکاهشمییابد. بااینوجودGAبامشکلدیگریروبروستکهCrowdingنامیدهمیشود.
Crowding Crowding پدیدهای استکهدرآن عضویکهسازگاریبسیار بیشتریازبقیهافرادجمعیتداردبه طور مرتبتولیدنسلکردهوباتولیداعضایمشابهدرصدعمدهایازجمعیترااشغالمیکند. این کارباعثکاهشپراکندگیجمعیتشدهوسرعتGAراکممیکند. F(X) X
راهحلرفعمشکل Crowding استفادهازRankingبرایانتخابنمونهها: بااختصاصرتبهبهفرضیهها از مقدار مطلق تابع تناسب صرف نظر میشود، که این باعث میشود نسبت به رولت ویل سهم فرضیههای با تطابق بالاتر کاهش یابد. :FitnesssharingمقدارFitnessیکعضو درصورتیکهاعضامشابهیدرجمعیتوجودداشتهباشند،کاهشمییابد. محدودکردناعضائیکهمیتوانندباهمترکیبشوند: برایمثالاعضابه صورت مکانیتوزیعشدهوفقطبهاعضاشبیهبههمامکانتولیدنسلدادهمیشود. این کاربهمنجر به حفظ تنوع زیرگروههائیازاعضامشابهدرداخلجمعیتخواهدشد.
تفاوت GA باسایرروشهایجستجو GAبه جای کدکردنپارامترهامجموعهآنهاراکدمیکند. GAبه جای جستجوبراییکنقطهبدنبالجمعیتیازنقاطمیگردد. GAبه جای استفادهازمشتقویاسایراطلاعاتکمکیمستقیماازاطلاعاتموجوددرنتیجهبهرهمیگیرد. GAبه جای قوانینقطعیازقوانیناحتمالبرایتغییراستفادهمیکند.
مثال : کاربرد GA درروباتیک EA درکاربردهایروباتیکزیادیاستفادهشدهتاروباتراقادرسازدیادبگیردتاچگونهبامحدودیتهایشکناربیاید. RoboCup تیمروبوکاپDarwinUnitedدرمسابقاتشبیهسازیفوتبالبااستفادهازGPتوانسته استبهنتایجبرترینسبتبهتیمهایدیگربرسد.
Genetic Programming GP تکنیکیاستکهکامپیوترهاراقادرمیسازدتابهحلمسائلبپردازندبدونآنکهبه طور صریحبرایآنبرنامهریزی شده باشند. GP روشیازالگوریتمهایتکاملیاستکهدرآنهر عضوجمعیتیکبرنامهکامپیوتریاست. برنامههااغلبتوسطیکدرختنمایشدادهشدهواجرایبرنامهبرابراستباparse کردندرخت. + F = sin(x) + sqrt( x^2 + y) Sin sqrt x + ^ y x 2
نمایشبرنامهها • برایاستفادهازGPدریکزمینهخاص، • میبایستتوابعپایهایکهدرآنزمینهموردنیازهستندنظیرsin, cos, sqrt, +, -, etcتوسطکاربرتعریفشوند. • همچنینترمینالهانظیرمتغیرهاوثوابتنیزبایدمشخصشوند. • آنگاهالگوریتمGPدرفضایبسیاربزرگبرنامههائیکهتوسطاینمقادیراولیهقابلبیانهستند،یکعملجستجویتکاملیراانجامخوهدداد.
+ + + + Sin ^ Sin ^ Sin sqrt Sin sqrt 2 2 x + x y x ^ x y x + ^ y x 2 x + + y x 2 اپراتور crossoverبرای GP اپراتور :crossoverشاخههائیازیکدرخت پدرباشاخههائیازدرختپدردیگربه طور تصادفیعوضمیشوند. فرزندان والدین Crossover
مثال درکتابمثالیازKozaمطرحشدهکهدرآنالگوریتمییاد گرفتهمیشودکهبتواندبلوکهارادریکستونرویهمبچیند. هدفمسئلهایناستکهبلوکهاطوریرویهمچیدهشوندکهکلمهuniversalرابسازند. N E S R V U L A I
مثال • محدودیت: درهرمرحلهفقطمیتوانیکبلوکراجابجانمود. درنتیجهتنهاحرکتهایممکنعبارتنداز: • بلوکآخرستونرامیتوانرویمیزقراردادویااینکه • یکبلوکراازمیزبهانتهایستونمنتقلنمود. • توابعاولیه: • :CS (current stack) نامبلوکموجوددرانتهایستونرابرمیگرداندF ) برایحالتیکهبلوکیوجودندارد( • :TP (top correct block) نامآخرینبلوکیراکههمراهبابلوکهایزیرینشترتیبصحیحموردنظررادارند،برمیگرداند. • :NN (nextnecessary)نامبلوکیکهبایددربالایTPقرارگیردتاترتیبuniversal درستدر بیاید.
مثال • سایرتوابعاولیه: • (MS x) move block x to stackاگربلوکxرویمیز باشدایناپراتورآنرابهبالایستونمنتقلمیکند.در غیراین صورتمقدارFرابرمیگرداند. • (MT x) move block x totableاگربلوکxجائیرویستونباشدایناپراتوربلوکبالایستونرابهمیزمنتقلمیکند.درغیراین صورتمقدارF رابرمیگرداند. • EQ(x y) returns true if x = y. • (NOT x) returns the complement of x. • DU(x y) do x until expression y is true
مثال مقدارتابعfitness • دراینآزمایشتعداد166مثالکههریکدربرگیرندهآرایشاولیهمتفاوتیبرایبلوکهابودندتدارکدیدهشدهبود. • تابعfitnessیکبرنامهبرابراستباتعدادمثالهائیکه برنامهقادربهحلآناست. • برنامهباجمعیتاولیهایبرابربا300 برنامهتصادفیشروعبکارنمودهوپسازتولید10نسلقادرمیشودتابرنامهایپیدانمایدکهتمامی166مثالراحلنماید: (EQ (DU (MT CS)(NOT CS)) (DU (MS NN)(NOT NN)) )
مثال : طراحیفیلتر صورتمسئله: برنامهایکهیکمدارسادهاولیهرا بهمدارپیچیدهموردنیازتبدیلنماید. • توابعاولیه: • تابعیبرایاضافهکردن قطعاتوسیمبندیهایمدار. • تابعیبرایحذفکردن قطعاتوسیمبندیهایمدار. • تابعfitnessشبیهسازیمداربدستآمدهتوسط نرمافزارSPICEبرایمشخصنمودنمیزانتطبیقآنباطرحموردنظر.خطایمدار برای101فرکانسمختلفموردبررسیقرارمیگرفت. • جمعیتاولیه:640000 • نرخ 89:crossoverدرصد. • نرخ1:mutationدرصد.
مثال :طراحیفیلتر سیستمبر روییککامپیوترموازیبا64گرهموردآزمایشقرارگرفت. براینسلاولیهایکهبه صورت تصادفیایجادشدنددر98%مواقعحتیامکانشبیهسازیوجودنداشت. ایننرخبه تدریجکاهشیافتهوپسازتولید137نسلمداریحاصلشدکهبامشخصاتموردنظرصدقمیکرد. دراغلبمواردکارائی الگوریتمGPبستگیبهنحوهنمایشوهمچنینتابعfitnessدارد.
مدلهایتکامل • درسیستمهایطبیعیهرموجودزندهدرطولزندگیخودیادمیگیردکهباشرائطسازگارینماید.بههمینترتیبنسلهایمختلفیکنمونه درطولزمان سازگاریهایمختلفیراکسبمیکنند: • سوال: رابطهبینیادگیرییکموجوددرطولزندگیشخصیویادگیرینسلهاییکنمونهدرطولزمانچیست؟
Lamarckian evolution Lamarck دانشمندقرننوزدهم فرضیهایارائهکردهکهطبقآنتجربیاتیکموجودزنده درترکیبژنتیکیفرزندانآنتاثیرمیگذارد. برایمثالموجودیکهیادگرفتهازغذایسمیپرهیزکنداینویژگیرابه صورت ژنتیکیبهفرزندانخودمنتقلمینمایدتاآنهادیگرمجبوربهیادگیریاینپدیدهنباشند. اماشواهدتجربیایننظرراتائیدنمیکنند: یعنیتجربیاتفردیهیچتاثیریدرترکیبژنتیکیفرزندانندارد.
Baldwin Effect نظریهدیگریوجودداردکهتاثیریادگیریرابرتکاملتوضیحمیدهد.ایننظریهکهاثرBaldwinنامیدهمیشودبرمبنایمشاهداتزیراستواراست: اگرموجودی ازطرفمحیطمتغیریتحتفشارقرارگرفتهباشد،افرادیکهتوانائییادگیرینحوهبرخوردباشرایطراداشتهباشندشانسبیشتریبرایبقادارند. موجوداتیکهتحتشرایطجدیدباقیمیمانندجمعیتیباتوانائییادگیریراتشکیلمیدهندکهفرایندهایتکاملیدرآنهاسریعتررخمیدهدوباعثمیشودتانسلیبوجودبیایدکهنیازیبهیادگیریمواجههباشرایطجدیدرانداشتهباشند.
اجرایموازیالگوریتمهایژنتیک الگوریتمهایژنتیکازقابلیتخوبیبرایپیادهسازی به صورت موازی برخوردارهستند. دریکروشپیادهسازی موازی،جمعیتبهگروههایکوچکتریبانامdemeتقسیمشدهوهرکدامدریکگرهمحاسباتیموردپردازشقرارمیگیرند. درهرگرهیکالگوریتماستانداردGAبررویdemeاجرامیشود. انتقالبینگرههاازطریقپدیدهmigrationصورتمیپذیرد.
Evolving Neural Networks ازGAبرایتکاملجنبههایمختلفNNاستفادهزیادیبعملآمدهاست .ازجمله: وزنها،ساختار وتابعیادگیری. استفادهازGAبراییادگیریوزنهاییکشبکهعصبیمیتواندبسیارسریعترازروشاستانداردbackpropagation عملنماید. استفادهازGAبراییادگیریساختارشبکهعصبیمشکلترمیباشد.برایشبکههایکوچک بااستفادهازیکماتریسمشخصمیشودکهچهنرونیبهچهنرونهایدیگریمتصلاست. آنگاهاینماتریسبهژنهایالگوریتمژنتیکتبدیلوترکیباتمختلفآنبررسیمیگردد. برایبدستآوردنتابعیادگیری یکشبکهعصبیراهحلهائینظیراستفادهازGP مورداستفادهقرارگرفتهاماعمومااینروشهابسیارکندعملکردهاند.