بسم الله الرحمن الرحيم. اليوم، إن شاء الله، نحن
نبدأ موضوعًا جديدًا، تقنية أخرى من التقنيات التي ممكن
تستخدم في الذكاء الاصطناعي. هذه التقنية معروفة
بالاسم العلمي Evolutionary computing أو
Evolutionary computation، وأشهر مثال عليها، أشهر
تقنية تحت هذا الإطار، وهو الـ Genetic Algorithm
أو algorithms. تمام. في هذا الموضوع، سيُمتد معنا إلى
two slides، ملفين يعني. في الجزء الأول، نأخذ ما هو
هو الفكرة الأساسية عن آلية عمل هذه التقنية، الـ
Genetic Algorithm، ونشوف عليها example. وفي الجزء
التالي، بنشوف استخدامات أخرى لهذه التقنية، بس في
الأول، نحن نأخذ فكرة عن الـ Basic Mechanism،
الآلية أو الخطوات الأساسية لـ Genetic Algorithm.
فبداية، الاسم Evolutionary Computation من Evolution،
Evolution يعني التطور، تذكر نظرية التطور وداروين،
والكلام هذا؟ جاي يعني الـ Genetic Algorithm جاي
على هذا المبدأ. مبدأ إيه؟ في الـ computing، إذا كان
عندي مثل، وهذه الأمثلة صعب أن أحط لها solution
بخوارزمية محددة الخطوات، نحن ممكن نتبع الـ Genetic
Algorithm، الخوارزمية الجينية. فكرتها تقوم على
أساس أن نحن نضع solutions عديدة، كلها عشوائية،
ونترك الـ algorithm تعمل نوعًا من الانتخاب الطبيعي
بين هذه الـ solutions، iteration
ورا iteration، تبدأ الـ algorithm تتحسن في الـ solutions،
وصولاً إلى الـ solution المطلوب. بمعنى أنه أنا
لا أضع steps محددة لحل المسألة، بل آتي وأقول okay،
إذا كانت عندي المسألة هكذا، معنى هذا أنني أضع
solutions عشوائية، وبعدين أقيم هذه الـ solutions،
آخذ أفضل مجموعة، وأروح أعمل عليها نوعًا من الـ
reproduction، وهو التكاثر أو التزاوج، أطلق عليها
solutions جديدة. هذه الـ solutions الجديدة، على فرض
أنها جاءت من parents، خليني أقول من
آباء يعني، أو من generation، فستطلع أبناؤهم جيدين،
الأبناء، جيل في الـ generation التالي، سأقول أحفاد
أفضل، وصولاً إلى… وصولاً إلى… نشوف مثالاً على هذا الكلام،
مثال بسيط
على هذا الكلام. فأنا سأتجاوز الـ introduction، وأدخل
على طول على الـ Genetic Algorithm، ولماذا تم عمله، هذا
الكلام في المقدمة، وهو التأصيل النظري، من أين
جاء هذا الموضوع، الـ Evolutionary computing.
آخذ مثالًا بسيطًا على هذا الكلام، هذه
معادلة بسيطة. لو… لو أردنا أن نسأل السؤال: متى
تكون قيمة هذه المعادلة أعلى ما يمكن؟ يعني f of x،
متى تكون أعلى؟ لو أنا جئت أخذت الـ values لـ x،
من، مثلًا، واحد إلى عشرين، إلى مئة، ورسمت الـ
curve. فماذا لدينا هنا؟ المعادلة مرة ثانية؟
خليني أكتبها على اللوحة: 15x - x²، لما
تكون x بساوي صفر، صحيح؟
f of 1 بيساوي، صحيح؟
F of 2، F
of
6
خمسة في خمسة عشر، ستين، صحيح؟ ناقص 25، يطلع 50
four، تقريبًا. 54 هنا، 60، أقل من
60 شوي. كم في سبعة؟ جدش؟ سبعة في… زيد على
هذا، خمسة عشر، مئة وخمسة ناقص 49، 6 و
خمسين… إيش؟ 56… لا، 66… 66… 6
و60، صحيح؟ حسابها يطلع لسة okay، فبقف في 8،
69، 69، 69… 6 أو 6 أو 6 أو
6 أو 6 أو 6 أو 6 أو 56 أو 56 أو 56 أو 56 أو 56 أو
56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56
أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو
56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56
أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو
56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56 أو 56
أو 56 أو 56
أو 56
مفروض يعني خلاص معي… معي أكثر من هنا، مفروض
تنزل هكذا، تصبح؟
خمسين، خمسين، آه، بدأت تنزل، عشر، نعم.
مش هكذا؟ خمسين؟ أربعة؟ 54، إلى هنا خلاص.
واضح أنه بدأ ينزل، وواضح أن المنحنى ينزل. نحن
الآن نستخدم
هذا كمثال في الـ Genetic Algorithm، يعني
نحن عمليًا نقدر نطلع القيمة التي عندها بالضبط، كم
الـ F of X تكون maximum، تكون أعلى ما يمكن، تمام.
التي هي النقطة الـ peak التي هنا، نقدر نحسبها عادي
بطريقة سهلة، أو نحسب الـ derivative، ونرى أن الـ
derivative تساوي صفر، المشتقة تساوي صفر، وعند
المشتقة التي تساوي صفر، الـ X هي التي تكون أعلى، صحيح؟ لأنه
الـ slope هذا سيكون يساوي صفر عند الـ maximum،
عند الـ maximum. مفهوم؟ فنحسب أين المشتقة تكون صفر، و
نطلع الـ X. بس نحن نستخدم الـ Genetic Algorithm
لتوضيح فكرة الـ Genetic Algorithm. فماذا نحن
سنفعل؟ يقول: ماذا نبحث عنه؟
قيمة X التي عندها F of X تساوي maximum.
فنحن لا نعرف قيمة X، فنذهب لنضع قيمًا عشوائية،
قيمًا عشوائية لـ X، ونبقى نأخذها في عملية evolutionary،
عملية انتخاب طبيعي، أو evolutionary fitness. فهنا
ماذا لدينا؟ لدينا الـ X1، X2، X3، X4، X5، X6،
نأخذ ستة random solutions. هذه الـ solutions
random، كل واحد منها له قيمة عشرية، نعبر عنها بـ
binary. نحن الآن، هذا الـ binary string، نسميه
chromosome، على نفس التسمية في الـ biology،
chromosome. نحن نبحث… نبحث… نبحث… نبحث…
نبحث… نبحث… نبحث… نبحث… نبحث… نبحث…
نبحث… نبحث… نبحث… نبحث… نبحث… لأننا وضعنا
أرقامًا عشوائية، وقيمًا عشوائية. هذه القيم، ربما لا يوجد
فيها واحد هو الـ solution، لكن عندما نجربها، ونأخذ
أفضل مجموعة منها، ونعمل تزاوجًا من هذه أفضل مجموعة،
نتقدم خطوة للأمام، وتدريجيًا، نصل إلى best
solution. الخطوة الأولى: أن نضع… نضع random solutions،
نمثلها على شكل binary، على شكل string of
binary values، التي هي الـ ones والـ zeros. لماذا؟
لأننا سنقوم بتقييمها، لنرى أيها أفضل،
ما هو الأفضل؟ الذي يعطيني قيمة الـ f of x،
هذا الاثنا عشر،
ماذا يعطيني؟ عندما أضع f of 12، لاحظوا أنني توقفت هنا
عند التسعة، ولكن هناك قيم أخرى كثيرة لم نجربها،
لذلك، هذا الاثنا عشر واحد من التي لم نجربها، ماذا هو f
of 12؟ تمام، كم يطلع؟ 6 و30، okay.
هذه الآن هي القيم لـ f of x، لو أننا أدخلنا
كل واحد من هذه x، صحيح؟ الآن، أيها أفضل؟ الأعلى، صحيح؟
لأننا سنأخذ… مثلًا، هذه المدينة… أعلى… فهذه أفضل،
هذه أفضل شيء. نحن الآن، في الخطوة الثانية في الـ
Genetic Algorithm، نأخذ الأفضل، نأخذ الأفضل، ونعمل
منهم new generation. هذا هو first generation، الجيل
الأول. نطلع منه جيلًا جديدًا، ستة أخرى. كيف ممكن نطلع
جيلًا جديدًا من الجيل الأول؟ تزاوج، يعني، مثلًا لو
جئت اخترت أفضل ثلاثة من هؤلاء، من هذا وهذا،
وهذا، صحيح؟ هؤلاء أفضل ثلاثة، لو أخرجت
منهم ثلاثة أخرى، لو جئت عملت تزاوجًا بين كل اثنين
مع بعض، أخذت هذا وهذا، مع هذا وهذا، أخذت الثلاثة
هؤلاء، وعملت… هؤلاء، صحيح؟ أنا الآن أتعامل فقط مع
الـ binary representation، وعملت تزاوجًا بشكل أو آخر.
قلت مثلًا، هذا أريد أن آخذه مع هذا، وأخرج منهما a
child جديدًا، بعدين هذا مع هذا، أخرج كمان child، اصلاً
two children. بعدين هذا مع هذا، أخرج child ثالث،
تعرفون أن الثلاثة الأولين، الذين هم الأفضل، وثلاثة
children خرجوا منهم، هؤلاء، أنا لا أعرف، ممكن
يكونوا أفضل من آبائهم، وممكن يكونوا أسوأ. أدخلهم الآن
على الـ generation الجديد، وأقيمهم، وأعيد الكرة، وكل
مرة أعمل ماذا؟ أعمل reproduction، عادة تكاثر يعني، و
أعمل تقييمًا، ودائمًا ما ننتخب حتى متى؟ حتى
حتى نصل إلى… حتى نصل إلى… أن لا يوجد تحسن، يعني الذي… الذي…
الذي… الذي… الذي يطلع معي، الـ fitness تبعه،
لا يوجد. يعني، آخذ الفرق بين الـ fitness لهذا
الجيل، والـ fitness للجيل الذي قبله، ضئيل، المعنى
هذا، كأننا وصلنا إلى أفضل ما يمكن، صحيح؟ لا داعي أن أستمر
أكثر من هذا، في عملية الـ reproduction، وآخذ أفضل
واحد من الذي طلع معي في هذا الجيل، كزوج، بيصير
على values distinct. يعني، مثلًا، لو الـ value طلعت 56،
كررت عندي مرتين، هل آخذ أربعة values؟ آه، مفترض… لا…
بس آخذ قيمة… بس آخذ قيمة… بس آخذ
قيمة… بس آخذ قيمة… بس آخذ قيمة… بس آخذ
قيمة… بس آخذ قيمة… لكن كانوا من المجموعة
الأفضل، آخدهم… آخدهم، آه، لأنه ليس مهم أن يكونوا
متساويين في الـ fitness، المهم أن يكونوا two different
two different solutions، صحيح؟ نحن الآن، إذا…
يعني، لكي نبلور هذه الفكرة بشكل أفضل، نحن نريد
أن نأتي نتبع المثال. أول شيء، أن هناك نقطة مهمة
أقولها، أريد أن أحسبها، أنني لا أريد أن أنظر إلى الـ
fitness هذا كما هو، أريد أن أحسب شيء اسمه الـ fitness
ratio، الـ fitness ratio. لو أنني جئت جمعت إجمالي الـ
fitness كلها، أجمعها، يطلع على ما أعتقد، كم؟ 100
و28، أظن، 128. أنا
باختصار، أريد أن آخذ 224.
224. أنا آخذ كل واحدة منها، قسمة، كل واحدة على
هذا الـ total، يعني الـ 16.5 هذه هي عبارة عن قسمة 36
على المجموع، 44 على المجموع، وبعدين 20، فأنا آخذ الـ
ratio، على أنه هو مع
فرصة عالية.. هتقولك شغل بس.. احنا في الطريقة هذه
على الرغم من أنه في عندنا randomization في الأمر
إلا أنه في فرصة أكبر لمن؟ للـ solutions اللي more
fit يعني هذا الـ X، كلما كان الـ fitness له عالي، فرصته
هيحصله من الـ.. ليش؟ من الـ wheel، فرصته أكبر حتى
على الرغم من وجود randomization، بس فرصته أكبر في
أنه يطلع على الـ generation اللي اللاحقة، صح؟ أنا
كان ممكن أعمل، و أنا بأعمل، آخذ الأفضل دائماً، آخذ
الأفضل، بس بدنا نحط عنصر الـ randomization، لأنه هذا
واقع الأمر في الطبيعة، أن حتى اللي مش أفضل ممكن يصمد
ويترحل للـ generation اللي بعده، ممكن ما تبانش
viable، بس لما يكون عندك معادلات فيها ثلاث.. ثلاث
مجاهيل، و بدك تحل مشكلة زي.. زي simplex method
مثلاً.. تتذكر.. تتذكر.. إذا.. إذا تتذكر، و احنا
بنحكي في الـ السياسي، لما كنا بنحكي في اللي هو الـ.. الـ
hill climbing، و قلنا أنه ممكن تقع في الـ local
minima، ما تصلش لـ global minima، ايش المخرج؟ أنه أنا
أعمل randomization، عشان أخرج من الـ local minima، أن
أختار أي واحد من الـ possible solutions اللي حواليه
حتى وإن كان سيء، و أخش فيه، علشان ربما يدخلني على
مسار يطلعني لـ solution أحسن من الـ local اللي أنا
كنت واجده، فاحنا هنا الـ randomization عشان نحط هامش
ولو لِ solutions اللي رديئة، نعطيها فرصة، لربما
ييجي من وراها offspring، يعني ذرية صالحة، ذرية هي في
حد ذاتها سيئة، رديئة، لكن لربما يطلع منها، لما أنتَ
عملت تزاوج مع.. واضح؟ واضحة الفكرة؟
الآن ما بنحكي في التزاوج، الآن هدول اللي بنختارهم
عشان نأسس عليهم الـ generation اللاحق، اخترناهم على
أساس مش بس الـ fitness لحاله، أو الـ fitness ratio
لحاله، لأ، اللي على أيضاً فرصته في الـ roulette wheel
في الـ roulette wheel، اه تمام، الآن الآن
هدول الـ six solutions، و هذا We have an initial
population of 6 chromosomes، الآن ده أعمل new
generation، برضه بتكون فيه 6 chromosomes، فبدي أجيب
.. بدي أختار pairs اللي أعمل منها تزاوج، عشان أطلع
.. okay، 6 تانيين، لما أنا بعمل تزاوج في هيدا، هات
اسمها crossover، crossover، بجيب two parents، هات two
parents، two chromosomes، P1 و P2
طبعاً الـ generation هو عبارة عن binary strings، خلّي
المعادلة، يهمني هنا طبعاً
نفس القول، احنا أربعة bits ولا لأ، بس نفترض إنهم
أكثر من ذلك، أتر أتر أتر أتر أتر أتر أتر أتر أتر
أتر أتر أتر أتر أتر أتر أتر أتر أتر أتر أتر أتر
أتر أتر أتر أتر أتر أتر أتر أتر أتر، نقطة انقسام
بروحي ببدّل، بطلّع يعني من هدول بطلّع two children
two children، يعني الزوج بيطلّعلي زوج، مش بيطلّعلي
واحد، الـ two parents بيطلّعولي ايش؟ two children
okay، اللي هو بيكون هذا الجزء، يعني أقول مثلاً أنا
عندي 00100100
لازم يكون جزء آخر بالصحيح، لازم طبعاً لازم الـ.. لأ
الجزء، الواحد، اللي يقسم من أي مكان بالصحيح، اه
بس إن أنا عند نفس النقطة، أنا بقسم عند الثالثة
لازم هنا أقسم عند الثالثة، صح؟ فهذا الآن الـ try
addition بيكون zero one one، وبعدين الثالثة
الثانية اللي بجيبها، بتصير ايش؟ one one zero، أيوة، ايش؟
zero one one zero، تمام، شق من الـ pyramid الأول، الشق
الأول من الـ parent الأول، و الشق الثاني من الـ parent
الثاني، و العكس عند الـ child الآخر، هذا بنزله زي ما هو
و بأخذ الشق الثاني من مين؟ أنا
هيك عملت crossover، عملت generation لـ two new
children، من الـ two parents الأصليين، باستخدام
Microsoft Word، عملية random، صح؟ مالهاش أي معنى
سواءً إنه نأمل إن بعض الخصائص الجيدة الموجودة في
هذا الـ parent، تجعل
معها خصائص جيدة من الـ parent الآخر، تمام؟ هو هذا
أصلاً اللي بيصير في الـ metabolism، أظن أنه يسميه، و
لا، ايش الـ chromosomes، أنا الناس الكلام هذا في الـ
biology، مش بيصير انقسام الـ chromosomes، وبعدين
تلتحم تاني، فعشان بهذه الطريقة تختلط الجينات من
الذكر و من الأنثى، مظبوط، تمام، فبنقول احنا الآن هذا
الـ generation الجديد، الستة الجداد اللي هنولدهم
بهذه الطريقة
مورفزم مورفزم مورفزم
مورفزم مورفزم مورفزم مورفزم مورفزم مورفزم
مش مشكلة، تمام، أنا الآن بهذه الطريقة، أنا أخذت two
parents، ثم another two parents، و كذلك أنا اتنين
تانيين، و عملت منهم a new set of children، بنفس العدد
اللي هو ايش؟ ستة كانوا في الأصل، صاروا ستة، هذا الجيل
التاني، هدول كانوا تابعين لـ generation one، لأن
هدول خلصوا في يوم، بدي أعمل evaluation عليهم، أو
يعني أحسب الـ fitness تبعهم، عشان أشوف مين الأفضل
في هالـ generation، عشان أُعيد الكرة من جديد، و بضلني
أعيد، بقول مرة ورا مرة، إلى أن أُشاهد، إلى أن ألاقي أن
الـ errors أو الـ
fitness تبع هدول ما يختلف كتير عن الـ fitness تبع
اللي جابهم، يمكن ما في تحسن و خلاص، بوقف، ما في داعي
أن أنا أستمر، إلى ما أهدف، في شغلة أخرى برضه، اللي
رح أحكيها، أنه كنا نقول الـ crossover هي الطريقة
الأساسية لتوليد الـ children، في شغلة أخرى غير الـ
crossover، ليه؟ الـ mutation، mutation، يعني طفرة
بالعربي، يعني إن واحد من الجينات هذا، الـ chromosome
بتسميه، كل واحد من هذول جين، واحد من الجينات، إنه
بشكل عشوائي يتغير، يعني الواحد يصير zero، الـ zero
يصير واحد، تمام؟ برضه هذا randomized، يعني بيجي على
الواحد، بيجي على هدول الست، بعد ما عملناهم بالـ
crossover، بنقول: هذا نعمل عليه mutation ولا لأ، بروح
و بنحط random number، إذا random number جاء أعلى من
أو أقل من الـ probability تبع الـ mutation، بنفس
ما نعملوش، بنسيبه، يعني بنعمل selection لواحد من هدول
أو لمجموعة من هدول، نعملهم ايش؟ إذا وقع الاختيار
على أي واحد منهم، بنروح برضه randomly، بناخد واحدة من
الـ genes، و بنقلبها، ففي عندنا احنا، في عندنا ايش؟ أنا
تذكرت، قلنا الـ probability تبع الـ mutation ايش؟
عندنا probability، يعني أنا بحط احتمال مثلاً
بعمل generational number، إذا الرقم هذا وقع أقل، إذا
أنا واقف الآن هنا، و عملت random generation، و طلع
الرقم أقل من هذا أو يساوي، يبقى الاختيار وقع، إذا
طلع number أكبر من ذلك، يبقى ما وقع الاختيار على
هذا الرقم، هذا الرقم، كل ما قل، كل ما زاد، كل ما قلت
احتمالية حدوث الاشياء، يعني لو أنا عملته خمسين في
المئة، Probability of mutation، إذا كانت خمسين، وجيت
هنا، و عملت random number، ايش احتمالية أن الـ random
number يطلع أقل من الخمسين؟ احتمالية 50%، يعني فرصة
هذا أن يعمله mutation، fifty fifty، كل واحد منهم
فرصته fifty fifty، كل ما صغر الرقم، كل ما صغرت الرقم
الكلمة، قلت فرصة الوقوع، و أنا أصلاً فعلاً هذا اللي
بدي إياه، أنا ما بديش أعمل mutation عليهم كلهم، أنا بدي
الـ mutation هذا، لأنها طفرة أصلاً، ايش يعني طفرة؟ يعني
حاجة بتحصل مرة في الـ.. rarely، very rarely، مظبوط
نادراً جداً، بيبقى الـ probability of mutation منخفضة
عشان ما.. ما نعملش mutation كثير، كذلك الحاجة برضه
الـ crossover، الـ crossover، بنقول probability ايش؟
احنا قلنا، اتفقنا، قلنا إنه اختيار، أنا عند الـ
generation الأولاني، بدي أختار منه مجموعة عشان أُولّد
منهم الجيل، تمام، هدول المجموعة اللي اخترتهم، الـ 6
P1، P2، الـ parents، يعني P3، P4، P5، P6، تمام
أنا الآن بدي أعمل crossover، بحتاج two parents، بدي
أختار من هدول الـ two parents، اتنين، أعمل لهم
crossover، لما أعمل crossover، هيطلع معي two
children، C1 و C2، صح؟ مين اللي أختارهم، أعمل بينهم
أعمل لهم crossover؟ هل آجي على كل اتنين، الأول
و الثاني، و الثاني و الثالث، و الرابع و الخامس،
و السادس؟ لا، ما بنعملش هيك، بهذه الطريقة، ليش؟ بنقول أنا
الآن بدي.. أنا عندي هنا صندوق لـ crossover، بسميه
أنا صندوق لـ crossover، الـ box هذا بتحط فيه اتنين
و بيطلع منه ايش؟ two children، صح؟ مين اللي بنخشّه في
الصندوق؟ بدي أختار برضه من هدول بشكل عشوائي، في
حاجة اسمها probability of crossover، برضه كمان ايش؟
بتبقى عالية، يعني، أو بتبقى أعلى من الـ mutation، ايش
معنى هذه probability؟ أنه هل، هل نختارهم ولا ما نختارهمش؟
طبعاً، إذا بنعمل random number generation، إذا وقع على
الاختيار، بنحطه، الآن بدنا تاني، بنكمل، إذا وقع على
الاختيار، بنحطه، خلاص، نعمل crossover، الآن هذول
بنشيلم، و نختار مرة أخرى، بمعنى آخر، أن ممكن الـ parent
الواحد يدخل مرتين في عملية الـ crossover، حسب كمان
.. حسب، و وقع عليه الـ random.. الاختيار الـ random
ولا لأ، ف أنا في عندي اللي هو الـ cross
over، نعم، نطبق نفس الـ procedure اللي فاتت، بعدها في
نوع من الـ procedure، أنا الآن بأطور في الـ procedure شوي
شوي، يعني بقول لك حاجة، وبعدين بروح بأعدل عليها، ايش
الخلاصة الآن، الخلاصة مرة أخرى، أن أنا أولاً بأعمل
random generation للـ first، أو للـ initial
generation، مظبوط، بعد كده أول شيء بسويه عليهم، بسوي
fitness، بحسب جودتهم، بدخلهم على الـ fitness، هذه
المعادلة هي اللي على أساسها أنا بدي أقرر من
المناسبين، اللي ده بطلّع الـ fitness، الـ fitness
value هذا، بطلّعه من الـ fitness ratio، صح؟ الـ fitness
ratio هذا عامل من عوامل اختياره للتأهيل للـ
generation القادم، بعمل الـ roulette wheel، علشان
أختار الـ generation الجديد، بختار اتنين، و بحطهم في
الخطوة، صح؟ بختارهم، و بدخل معي، في، أختار المبدأ
الآن هدول، بدي أطلع منهم الـ generation الجديد، فبدي
أول شيء أطبق الـ crossover operation، crossover
operation، بدي أطبقها مرة ورا مرة، إلى أن يكتمل
عندي ستة، اه، يكتمل عندي الـ generation، بدي أطبقها
يعني بدي أختار اتنين، الاتنين اللي بتختارهم في
بختار زوجين أو زوج، يعني two parents، الـ two parents
اللي بجلبهم أو بعمل crossover بيطلع معايا الـ new
children، الآن الـ children اللي طلعوا بروح بقرر مين
منهم أعمله mutation بناءً برضه على ليش الـ
probability تبع الـ mutation، PM بيطلع معايا هذا
مثلاً أوقع عليه الاختيار أنه يعمل mutation فبتتبدل
الـ gene .. الـ .. الـ .. واحد من الـ genes تبعه، تمام؟
الآن هذا خلاص هو نهاية، ليش نهاية عملية الـ mutation
بتدخل معايا كـ GT plus one plus one، يعني الـ
generation القادمة هذا، أو generation two generation
two، هذا بعمله تقييم وبعيده، مرة ومرة ومرة
إلى أن زي ما قلنا ما يصيرش فيه اللي هو difference
ده نهاية الـ example، محاضرة جايه إن شاء الله بنشوف
exam الآخر فيه تعديل بسيط، يعني معادلة أخرى، وبعد
كده بنشوف مثال عملي أكثر على استخدام الـ genetic
algorithm، ماشي، أعطيكم يا عزيزي