البرمجة الجينية الخطية
- "البرمجة الجينية الخطية" لا علاقة لها بـ " البرمجة الخطية ".
البرمجة الجينية الخطية (LGP) [ 1 ] هي طريقة خاصة من طرق البرمجة الجينية ، حيث تُمثَّل برامج الحاسوب في مجموعة من الخلايا كسلسلة من التعليمات القائمة على السجلات، باستخدام لغة برمجة إجرائية أو لغة الآلة . وتستمد صفة "الخطية" من كون كل برنامج LGP عبارة عن سلسلة من التعليمات، والتي تُنفَّذ عادةً بالتسلسل. وكما هو الحال في البرامج الأخرى، يمكن نمذجة تدفق البيانات في LGP كرسم بياني يُصوِّر إمكانية الاستخدام المتعدد لمحتويات السجلات ، ووجود التعليمات البرمجية غير الفعالة بنيويًا ( الإنترونات )، وهما فرقان رئيسيان بين هذا التمثيل الجيني والبرمجة الجينية الشجرية (TGP) الأكثر شيوعًا. [ 2 ] [ 3 ] [ 4 ]
على غرار طرق البرمجة الجينية الأخرى، تتطلب البرمجة الجينية الخطية إدخال بيانات لتشغيل مجموعة البرنامج عليها. بعد ذلك، يُقاس ناتج البرنامج (سلوكه) بناءً على سلوك مستهدف باستخدام دالة لياقة. مع ذلك، تُعدّ البرمجة الجينية الخطية أكثر كفاءة من البرمجة الجينية الشجرية نظرًا لاختلافين رئيسيين ذُكرا سابقًا: إمكانية إعادة استخدام النتائج الوسيطة (المخزنة في سجلات)، ووجود خوارزمية بسيطة لإزالة الإنترونات [ 1 ] يمكن تنفيذها لإزالة جميع التعليمات البرمجية غير الفعالة قبل تشغيل البرامج على البيانات المقصودة. غالبًا ما يُسفر هذان الاختلافان عن حلول مُدمجة وتوفير كبير في العمليات الحسابية مقارنةً بتدفق البيانات المقيد بشدة في الأشجار والطريقة الشائعة لتنفيذ جميع عُقد الشجرة في البرمجة الجينية الشجرية. علاوة على ذلك، تتميز البرمجة الجينية الخطية بوجود مُخرجات متعددة بشكل طبيعي من خلال تعريف سجلات مُخرجات متعددة، وتتكامل بسهولة مع عمليات التحكم في التدفق .
تم تطبيق البرمجة الجينية الخطية في العديد من المجالات، بما في ذلك نمذجة الأنظمة والتحكم فيها، وحققت نجاحًا كبيرًا. [ 5 ] [ 6 ] [ 7 ] [ 8 ]
لا ينبغي الخلط بين البرمجة الجينية الخطية وبرامج الأشجار الخطية ، إذ تتكون برامج الأشجار من عدد متغير من الدوال الأحادية وطرفية واحدة . تجدر الإشارة إلى أن البرمجة الجينية الخطية للأشجار تختلف عن خوارزميات السلاسل الثنائية الجينية ، حيث قد تحتوي المجموعة على برامج بأطوال مختلفة، وقد يكون هناك أكثر من نوعين من الدوال أو أكثر من نوعين من الأطراف. [ 9 ]
أمثلة على برامج LGP
نظرًا لأن برامج البرمجة الخطية العامة (LGP) تُمثَّل أساسًا بتسلسل خطي من التعليمات، فإنها أسهل في القراءة والمعالجة من نظيراتها القائمة على بنية الشجرة. على سبيل المثال، يمكن كتابة برنامج بسيط لحل مسألة دالة منطقية بثلاثة مدخلات (في R1 وR2 وR3) ومخرج واحد (في R0)، على النحو التالي:
R4 = R2 AND R3 R0 = R1 OR R4 R0 = R3 AND R0 R4 = R2 AND R4 هذه تعليمات غير فعالة R0 = R0 OR R2 يجب تعريف R1 وR2 وR3 كمسجلات إدخال (للقراءة فقط)، بينما يُعرّف R0 وR4 كمسجلات حساب (للقراءة والكتابة). هذا البرنامج بسيط للغاية، إذ يحتوي على 5 تعليمات فقط. ولكن يمكن استخدام عوامل الطفرة والتهجين لزيادة طول البرنامج، وكذلك محتوى كل تعليمة من تعليماته.
لاحظ أن إحدى التعليمات غير فعّالة أو تُعتبر إنترونًا (مُعلّمة)، لأنها لا تؤثر على سجل الإخراج R0. يُعدّ التعرّف على هذه التعليمات أساس خوارزمية إزالة الإنترونات المستخدمة لتحليل الكود قبل تنفيذه. تقنيًا، يتم ذلك بنسخ عنصر ثم تشغيل عملية إزالة الإنترونات مرة واحدة. بعد ذلك، تُنفّذ النسخة المُزالة منها الإنترونات عددًا من المرات يتناسب مع عدد حالات التدريب. والجدير بالذكر أن العنصر الأصلي يبقى سليمًا، ليواصل المشاركة في عملية التطور. النسخة المُنفّذة فقط هي التي تُضغط بإزالة هذه الإنترونات "الهيكلية".
برنامج بسيط آخر، مكتوب بلغة LGP، يبدو برنامج Slash/A كسلسلة من التعليمات مفصولة بشرطة مائلة:
input/ # يستقبل مُدخلًا من المستخدم ويحفظه في المُسجل F 0 / # يُعيّن المُسجل I = 0 save/ # يحفظ مُحتوى F في مُتجه البيانات D[I] (أي D[0] := F) input/ # يستقبل مُدخلًا آخر، ويحفظه في F add/ # يُضيف إلى F البيانات الحالية التي يُشير إليها I (أي F := F + D[0]) output/. # يُخرج النتيجة من Fمن خلال تمثيل هذا الكود بتنسيق بايت كود ، أي كمصفوفة من البايتات يمثل كل منها تعليمات مختلفة، يمكن للمرء إجراء عمليات التغيير ببساطة عن طريق تغيير عنصر من هذه المصفوفة.
انظر أيضاً
ملحوظات
- 1 2 م. برامير، و. بانزهاف، " البرمجة الجينية الخطية "، سبرينغر، نيويورك، 2007
- ↑ برامير، م.: " حول البرمجة الجينية الخطية " مؤرشف في 29-06-2007 على موقع Wayback Machine ، دورتموند، 2003
- ↑ دبليو. بانزهاف، بي. نوردين، آر. كيلر، إف. فرانكون، البرمجة الجينية - مقدمة ، مورغان كوفمان، هايدلبرغ/سان فرانسيسكو، 1998
- ↑ بولي، ر.؛ لانغدون، دبليو بي؛ ماكفي، إن إف (2008). دليل ميداني للبرمجة الجينية . Lulu.com، متاح مجانًا على الإنترنت. ISBN 978-1-4092-0073-4.
- ↑ م. برامير، و. بانزهاف، " مقارنة بين البرمجة الجينية الخطية والشبكات العصبية في استخراج البيانات الطبية "، معاملات IEEE في الحوسبة التطورية ، 5 (2001) 17-26
- ↑ أ. جوفين، البرمجة الجينية الخطية لنمذجة السلاسل الزمنية لمعدل التدفق اليومي ، مجلة علوم أنظمة الأرض ، 118 (2009) 137-146
- ↑ ر. لي، ب. ر. نواك، ل. كوردييه، ج. بوري، ف. هارامبات، تقليل مقاومة نموذج سيارة باستخدام التحكم بالبرمجة الجينية الخطية ، تجارب في الموائع ، 58 (2017) 103
- ↑ ب.-ي. باساجيا، أ. كوانساه، ن. مازيلييه، ج.ي. كورنيخو ماسيدا، أ. كورتا، التحكم في التوقف عن الحركة في الوقت الحقيقي لجناح طائرة عند أرقام رينولدز الكبيرة باستخدام البرمجة الجينية الخطية ، فيزياء الموائع ، 34 (2022) 045108
- ↑ أسس البرمجة الجينية .
روابط خارجية
- لغة برمجة ومكتبة C++ من Slash/A مصممة خصيصًا للبرمجة العامة الخطية
- DigitalBiology.NET محرك بحث متخصص لموارد GA/GP
- برنامج البرمجة الجينية ديسيبلس
- برنامج البرمجة الجينية MicroGP (مفتوح المصدر)
- مشروع مفتوح المصدر للبرمجة الجينية الخطية يعتمد على نظام بحث الحوسبة التطورية القائم على لغة جافا (ECJ).
- البرمجة الجينية
