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

برنامه‌نویسی ژنتیک خطی (به انگلیسی: Linear Genetic Programming) نوعی از برنامه‌نویسی ژنتیک است که در آن شیوه نمایش برنامه‌ها به صورت خطی و به صورت فهرستی از دستورها است. این دستورها اعمال ریاضی(یا منطقی) را روی مجموعه‌ای از خانه‌های حافظه اجرا می‌کنند و داده‌ها را از رجیسترهای فقط خواندنی یا به دیگر کلام خانه‌های حافظه می‌خوانند. این دستور‌ها می‌توانند از یک زبان برنامه‌نویسی یا کد بومی ماشین باشند. عمل‌گرهای ازدواج و جهش در برنامه‌نویسی ژنتیک خطی مشابه همتاهایشان در الگوریتم ژنتیک هستند.[۱]

دلیل نام‌گزاری این نوع از برنامه‌نویسی ژنتیک، خطی بودن اجرای برنامه‌ها در آن است. توجه کنید که برنامه‌نویسی ژنتیک خطی با درخت خطی در برنامه‌نویسی ژنتیک درختی متفاوت است. و می‌تواند برای حل هم مسائل خطی و هم غیر خطی به کار برود.

کاربرد‌ها

برنامه‌نویسی ژنتیک خطی با موفقیت قابل توجه در بسیاری از حوزه‌ها از جمله مدل‌سازی سامانه و کنترل سامانه استفاده شده است.[۲][۳]

ویژگی‌های منحصر به فرد

خروجی

در برنامه‌نویسی ژنتیک خطی، برعکس برنامه‌نویسی ژنتیک درختی، هر برنامه می‌توانید بیش‌تر از یک خروجی داشته باشد. زمانی که محاسبات انجام می‌شود، برنامه داده‌ها را در خانه‌های حافظهٔ خواندنی/نوشتنی باقی می‌گذارد. و می‌توان هر تعداد از این خانه‌های حافظه یا رجیستر‌ها را به عنوان خروجی برنامه استفاده کرد.

اینترون‌ها

اینترون‌ها(به انگلیسی: intron) دستور‌هایی از یک برنامه هستند که بر روی خروجی برنامه تاثیر ندارند. در برنامه‌نویسی ژنتیک خطی طی فرآیند تکامل این اینترون‌ها ایجاد می‌شوند. دو نوع اینترون معنایی(به انگلیسی: semantic introns) و ساختاری(به انگلیسی: structural introns) وجود دارند. حذف اینترون‌های ساختاری از برنامه ساده‌تر است. یک مثال از اینترون ساختاری محاسبه روی رجیستری جز رجیستر خروجی برنامه در خاتمهٔ برنامه است.

اینترون‌های معنایی، دستور‌هایی هستند که یک محاسبهٔ همانی انجام می‌دهند. برای مثال ضرب با ۱ یا جمع با ۰ دو نمونه از اینترون‌های ساختاری هستند.

در نمایش درختی اینترون‌های معنایی ممکن هستند. اما اینترون‌های ساختاری ممکن نیستند. چرا که تمام گره‌ها فرزند یک گروه دیگر و نهایتا از نواده‌های ریشهٔ درخت هستند.

به عقیدهٔ بعضی پژوهش‌گر‌ها، اینترون‌های ساختاری در نمایش خطی و نمایش دکارتی(یک نوع نمایش دیگر که در آن اینترون‌های ساختاری وجود دارند) به مشابه حافظهٔ تکاملی عمل می‌کنند.

حالت‌های خاص

برنامه‌نوسی ژنتیک پشته‌ای نوع خاصی از برنامه‌نویسی ژنتیک است که دستور‌ها و داده‌ها همه روی یک پشته ذخیره شده و یک به یک از روی پشته pop شده و اجرا می‌شوند.

منابع

  1. Brameier, Markus; Banzhaf, Wolfgang (2007). Linear Genetic Programming [برنامه‌نویسی ژنتیک خطی] (به انگلیسی) (1 ed.). New York: Springer.
  2. Brameier, Markus; Banzhaf, Wolfgang (2001). "A Comparison of Linear Genetic Programming and Neural Networks in Medical Data Mining" [مقایسه‌ٔ برنامه‌نویسی ژنتیک خطی و شبکه‌های عصبی در استخراج داده‌های پزشکی]. IEEE Transactions on Evolutionary Computation (به انگلیسی) (۵): 17–26.
  3. Guven, A. (2009). "Linear genetic programming for time-series modelling of daily flow rate" [برنامه‌نویسی ژنتیک خطی برای مدل‌سازی سری‌زمانی نرخ جریان روزانه]. Earth Systems Science (به انگلیسی) (118): 137–146.