برای دیدن دوره های ما کلیک کنید...

Genetic programming

معماری و هوش مصنوعی

Genetic programming یا برنامه نویسی ژنتیک

Genetic programming یا برنامه نویسی ژنتیک، الگوریتمی بر پایه مفهوم تکامل است در این الگوریتم ما از کروموزوم های مصنوعی استفاده می کنیم. برنامه نویسی  ژنتیک یکی از کاربردهای این الگوریتم است. برنامه نویسی ژنتیک همانند الگوریتم ژنتیک یکی از روش های هوش مصنوعی است که در آن برنامه های رایانه ای به صورت مجموعه ای از ژن ها کد گذاری می شوند. بعد از کد گذاری ژن ها  آن ها  با استفاده از  الگوریتم ژنتیک تغییر داده می شوند.

ژن در الگوریتم تکاملی

البته می توان برای تغییر ژن ها از الگوریتم تکاملی دیگری نیز استفاده نمود. اما معمولا الگوریتم ژنتیک به کار گرفته می شود. در این فرایند فضای پاسخ شامل برنامه های رایانه ای است و در این جا برنامه هایی به عنوان پاسخ مساله انتخاب می شوند که بتوانند وظیفه خود را که از پیش تعیین شده به خوبی به جا آورند .در نهایت ما در این فرایند برنامه ها را به کروموزوم تبدیل می کنیم و سپس آن ها را با مقایسه با وظیفه شان مورد برازش قرار می دهیم .البته روش های به کار رفته برای تبدیل این برنامه ها به کروموزوم مصنوعی و همچنین برازش آن ها مورد پژوهش قرارگرفته اند.

ساختاری درختی

Genetic programming یابرنامه نویسی ژنتیک برنامه های رایانه ای که به صورت سنتی با ساختاری درختی تعریف شده اند را تکامل می بخشد.البته ساختار های بدون درختی نیز در این برنامه نویسی ها با موفقیت به اجرا در می آیند. اما برنامه نویسی ژنتیک به برنامه هایی علاقه دارد که به صورت طبیعی دارای ساختار درختی باشد. یک ساختار درختی ،درختی است که نشان دهنده ساختار دستوری یک رشته است که معمولا این نمایش با توجه به دستور زبان های رسمی است.

برنامه نویسی ژنتیک خطی و دکارتی

در برنامه نویسی برنامه هایی با ساختار درختی، درختان را می توان به سادگی مورد ارزیابی قرار دهیم در هر درخت هر گره یک تابع عملگر وجود دارد و هر گره ترمینال شامل یک عملوند است. در نهایت می توان عبارت ریاضی موجود را به سادگی تکامل دهیم. برنامه نویسی ژنتیک خطی و دکارتی از دیگر روش های است که مورد  استفاده قرار می گیرد به عنوان نمونه از الگوریتم ژنیتیک خطی برای برنامه های دستوری سنتی استفاده می شود.

برنامه نویسی ژنتیک و ابزار یادگیری ماشین

برنامه نویسی ژنتیک به  عنوان برنامه نویسی خودکار و ابزار یادگیری ماشین و موتور حل مساله خودکار به کار رفته ودر این حوزه ها به خوبی عمل می کند این روش به ویژه در دامنه هایی که شکل دقیق پاسخ شناخته شده نیست قابل استفاده است همان طور که گفته شد، برنامه نویسی ژنتیک همانند الگوریتم ژنتیک که یک الگوریتم تکاملی است از مفهوم تکامل و انتخاب و..تبعیت می کند در فرایند انتخاب ما والدینی که برتری بیشتری نسبت به بقیه والدین دارند را برای فرزند آوری انتخاب می کنیم

در این برنامه نویسی در هر ژن علاوه بر اعداد می توان انواع عملگر های ریاضی همچون جمع و تفریق و تقسیم وضرب و توابع مختلف همانند توابع الگوریتمی نیز در نظر گرفت .در برنامه نویسی ژنتیک  برخلاف الگوریتم ژنتیک که با ساختار کروموزوم سروکار داریم در این جا  با ساختاری درختی از کروموزوم ها مواجه هستیم. با توجه به این توضیحات می توان متوجه شد که این برنامه نویسی  به مراتب از پیچیدگی بیشتری نسبت به رقبای خود همانند شبکه های عصبی و ماشین های بردار پشتیبان برخورد دار است به همین دلیل نرم افزار ها و کدهای به مراتب کمتری در ارتباط با این ابزار توسعه داده شده است اما از مهم ترین تفاوت آن با دیگر رقبا می توان گفت که در برنامه نویسی ژنیتک خروجی ما یک فرمول و رابطه کاملا شهودی است در واقع برنامه نویسی ژنتیک قادر به استخراج روابط بسیار متنوع و پیچیده  از پایگاه داده ها و ارائه آن در قالب فرمول های شهودی است

اولین پیشنهاد ثبت شده برای تکامل برنامه ها توسط الن تورینگ در دهه 1950 بود در ادامه 30 سال طول کشید تا ریچارد فورسیت تکامل برنامه های کوچک با ساختار درختی را با موفقیت نشان دهد. ایده برنامه های تکاملی در زبان لیسپ توسط دانشجویان جان هالند پیگیری شد و نایکل کرامر برنامه های تکاملی خود را در دو زبان منتشر کرد و در سال1988 جان کوزا طرح خود را برای اختراع الگوریتم ژنتیک در برنامه نویسی تکاملی به ثبت رساند در ادامه کوزا مطالعات خود را ادامه داد و برنامه نویسی ژنتیک را بنیان نهاد.

ارسال دیدگاه

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *