برنامهريزي ژنتيک چیست؟
برنامهريزي ژنتيک (Genetic Programming)، که به اختصار GP نامیده می شود، از الگوريتمهاي ژنتيک براي نوشتن برنامههاي کامپيوتري استفاده ميکند. در اين حالت متغيرها، ساختارهاي برنامهريزي هستند و خروجي نيز ميزان توانايي برنامه در رسيدن به اهدافش است. تغييرات کوچکي در عملگرهاي الگوريتم ژنتيک همانند جهش، بازتوليد و ارزيابي تابع هزينه براي استفاده از آنها در GP، مورد نياز هستند. در حقيقت GP برنامهي کامپيوترياي است که برنامههاي کامپيوتري ديگر را مينويسد. هر کروموزوم در جمعيت اوليه GP، از تعدادي تابع تصادفي و ترمينالها تشکيل يافته است. مثالهايي از اين توابع تصادفي، عمليات جمع، تفريق، تقسيم، ضرب و توابع مثلثاتي هستند. ترمينالها نيز شامل متغيرها و ثابتهاي برنامه هستند. شکل زیر جمعيت کوچک توابع چندجملهاي را نشان ميدهد.
شكل: جمعيت کوچک توابع چندجملهاي در برنامهريزي ژنتيک
هر برنامه در جمعيت، اجرا شده و هزينهي آن به دست ميآيد. هزينه، نشان دهندهي ميزان توانايي برنامه در حل مسئله مورد نظر است. پژوهشگران زيادي، GP را براي حل مسائل مختلفي شامل تحليل خودکار کنترلکنندهها، مدارها و آنتنها استفاده کردهاند. اما در کنار استفاده فراوان آن، هنوز در مورد قوام (Robustness) نتايج بدست آمده از GP، اطمينان کافي وجود ندارد.
معادل برنامه ریزی ژنتیک را می توان در مورد الگوریتم رقابت استعماری نیز اعمال کرده و به "برنامه ریزی استعماری" یا به عبارت دیگر Imperialist Programming رسید. یعنی الگوریتمی که از الگوریتم رقابت استعماری برای نوشتن برنامه های دیگر و نیز اهداف تقریب تابعی استفاده می کند.