انت هنا الان : شبكة جامعة بابل > موقع الكلية > نظام التعليم الالكتروني > مشاهدة المحاضرة
الكلية كلية العلوم للبنات
القسم قسم الحاسبات
المرحلة 4
أستاذ المادة نور كاظم ايوب مهدي المهدي
17/12/2017 08:24:50
توليد مجتمع ابتدائي
بناء فرد في المجتمع : الفرد يعرّف برمجياً على انَّه قيد يتكوّن من الحقول الآتية : fitness chromosome
مصفوفة أحادية ناتج دالة الصلاحية
و تعرف دالة الصلاحية fitness function بانها دالة يتم بنائها في برنامج الخوارزمية الجينية لكي تمثّل المشكلة المطلوب حلها,فمثلاً لو كان لدينا المعادلة y=x2 يراد حلها باستخدام الخوارزمية الجينية ف?نَّ هذه المعادلة ستمثّل الهدف الذي من أجله سنبني البرنامج و ليست الخوارزمية الجينية ?لاّ وسيلة يتم بواسطتها حل هذه المعادلة و عليه سيتم بناء الدالّة الآتية في البرنامج
1- بناء مجتمع (pop) : بما أنَّ الفرد هو عبارة عن قيد,و المجتمع هو عبارة عن مجموعة أفراد,إذن المجتمع سيمثّل بمصفوفة قيود. مثال1 : استخدم الخوارزمية الجينية لتوليد وطباعة 10 حلول ابتدائية للمعادلة y= sin (x) حيث ان طول الكروموسوم =8 و التشفير المستخدم هو التشفير الثنائي. function ga clc pop=[]; pop_size=10; chl=8; for i=1:pop_size pop(i).chrom=randint(1,8); bin=bin2dec(pop(i).chrom); pop(i).fitness= sin( str2num (bin)); end disp(‘ ************ printing initial pop ************’); for i=1:pop_size disp(pop(i)); end س/لماذا تم تحويل الكروموسوم من صيغته الثنائية الى رقم صحيح من خلال الدالة bin2dec ؟ إذا كان طول الكروموسوم = 3 (على سبيل المثال) و بفرض أنَّ كروموسوم فرد ما في المجتمع أخذ القيم الآتية في التوليد
1 0 1
و هو يمثّل قيمة x مشفرة ,عند طبيق دالة الصلاحية مباشرة على العدد الثنائي سيكون بالشكل الاتي : sin (1 0 1) واضح انَّ التعامل مع العدد الثنائي صعبٌ جداً لذا نقوم بتحويل العدد الثنائي الى العدد الصحيح المكافئ له عن طريق الدالة bin2dec . x (chromosome ) bin2dec x (integer) س/ ما سبب استخدام الدالة str2num لان نوع المخرجات للدالة bin2dec يكون حرفي أي من النوع char ونحن بحاجة الى التعامل مع صيغة عددية للناتج هذه الدالة و هنا ياتي دور الدالة str2num التي تقوم بتحويل معاملها من الصيغة الحرفية الى الصيغة العددية كما يضح في الامثلة الاتية:
مثال2 : استخدم الخوارزمية الجينية لتوليد وطباعة مجتمع ابتدائي يتكون من n من الافراد حيث ان طول الكروموسوم =8 و التشفير المستخدم هو التشفير الصحيح علما ان صلاحية الفرد تحسب بجمع الجينات ذات القيم الزوجية
function ga clc pop=[]; n=input(‘ no. of individuals =’); chl=8; for i=1:n pop(i).chrom=randi (9, 1,8); pop(i).fitness= add(pop(i).chrom); end disp(‘ ************ printing initial pop ************’); for i=1:n disp(pop(i)); end end function s=add(chrom) s=0; for i=1:length(chrom) if mod(chrom(i),2)==0 s=s+ chrom(i); end end end
المادة المعروضة اعلاه هي مدخل الى المحاضرة المرفوعة بواسطة استاذ(ة) المادة . وقد تبدو لك غير متكاملة . حيث يضع استاذ المادة في بعض الاحيان فقط الجزء الاول من المحاضرة من اجل الاطلاع على ما ستقوم بتحميله لاحقا . في نظام التعليم الالكتروني نوفر هذه الخدمة لكي نبقيك على اطلاع حول محتوى الملف الذي ستقوم بتحميله .
الرجوع الى لوحة التحكم
|