برنامه نویسی ژنتیک یک حوزه از علوم کامپیوتر است که از مفاهیم و الگوریتم های مربوط به ژنتیک و تکامل برای حل مسائل مختلف استفاده می کند.ترکیبی از علوم کامپیوتر و الگوریتم نویسی و علم باستانی ژنتیک در کنار هم موجب ایجاد برنامه هایی شده که از ایده ها و مکانیسم های زیستی در طبیعت الهام گرفته می شوند.
برنامه نویسی ژنتیک اولین بار در اوایل دهه 90 میلادی و توسط آقای john koza مطرح شد.برنامه نویسی ژنتیک یکی از شاخه های پردازش تکاملی است که در آن بجای استفاده از کد یا دستور برای اجرای برنامه از مفاهیمی مانند درخت های تجزیه استفاده می شود تا کامپیوتر بتواند با استفاده از یکسری موضوعات کلی ، به منظور حل مسائل گوناگون ،برنامه را نوشته اجرا و در نهایت خروجی را به ما نمایش می دهد.همانطور که می دانید استفاده از کامپیوتر بدون اینکه به آن بگویید چه کاری انجام دهد غیر ممکن است و تمامی زبان های برنامه نویسی از این موضوع تبعیت میکنند . اما با این وجود، این قابلیت توسط برنامه نویسی ژنتیک امکان پذیر شده است ، یعنی در حالت کلی ، هدف ما ایجاد ساختاری منظم برای طراحی الگو های اتوماتیک می باشد که به آن : Automatic Programming یا Program Synthesis و یا Program Induction نیز می گویند.
اینکه کامپیوتر ها بتوانند فکر کنند و دیگر نیازی به ایجاد کد های پیچیده نداشته باشند هدف برنامه نویسی ژنتیک است که با استفاده از ایجاد یک جمعیت از برنامه های کامپیوتری که از نظریه های بدوی و تئوری چارلز داروین(اولین نظریه های تکامل زیستی و نحوه تکامل برای آقای چارلز داروین بوده و یکی از پایه گذاران علم تکامل و ژنتیک محسوب می شوند) پرورش داده می شود صورت می پذیرد .یعنی بطور خلاصه پایه های برنامه نویسی ژنتیک شامل همان انتخاب تصادفی،تولید مثل بیولوژیکی ،جهش و بازترکیبی می شود.
برای ایجاد برنامه نویسی ژنتیک چه کار هایی انجام می دهند؟
تعیین یک مجموعه از terminal ها:برای اینکه بتوان یک مجموعه کامپیوتری را به فرم ها کروموزومی برای درک ژنتیکی تبدیل کرد،نیاز است که عناصر برگ گراف برنامه را مشخص نمود که همان terminal ها هستند.
تعیین توابع اولیه که برنامه باید بر اساس آنها ایجاد شوند
معیار شایستگی:همانطور که از اسمش پیداست به منظور تشخیص عملکرد های مناسب مطرح می شود
تعیین پارامتر هایی برای کنترل اجرای الگوریتم ژنتیک (مانند نوع انتخاب والدین و فرزندان، نرخ جهش و بازترکیبی و ...)
مشخص نمودن نحوه پایان(نتیجه و خروجی)
کاربرد برنامه نویسی ژنتیک: برنامه نویسی ژنتیک کاربرد های بسیار گسترده ای دارد و فقط به یک بخش خاص خلاصه نمی شود.از حل خودکار معدلات دیفرانسیل تا پردازش داده های آماری و یا پیشبینی ، برخی از کار هایی هستند که می توان انجام داد.برنامه نویسی ژنتیک یک زبان نیست که برای آن عملکرد و شاخه تعریف شود . برنامه نویسی ژنتیک یک مجموعه از برنامه های کامپیوتری می باشد که بصورت خودکار و بدون طرحی از پیش تعیین شده عملکرد های متفاوتی را ارائه می دهد.