انت هنا الان : شبكة جامعة بابل > موقع الكلية > نظام التعليم الالكتروني > مشاهدة المحاضرة

الخوارزمية الجينية - المجتمع الابتدائي

Share |
الكلية كلية العلوم للبنات     القسم قسم الحاسبات     المرحلة 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


المادة المعروضة اعلاه هي مدخل الى المحاضرة المرفوعة بواسطة استاذ(ة) المادة . وقد تبدو لك غير متكاملة . حيث يضع استاذ المادة في بعض الاحيان فقط الجزء الاول من المحاضرة من اجل الاطلاع على ما ستقوم بتحميله لاحقا . في نظام التعليم الالكتروني نوفر هذه الخدمة لكي نبقيك على اطلاع حول محتوى الملف الذي ستقوم بتحميله .
الرجوع الى لوحة التحكم