**برنامه‌نویسی بیان ژن** (به انگلیسی: Gene expression programming(GEP)) مجموعه‌ای از الگوریتم‌های فرگشتی است که به صورت خودکار برنامه‌ها و مدل‌های رایامه‌ای را تولید می‌کند. این برنامه‌ها و مدل‌ها می‌توانند به شکل‌های مختلفی باشند: مدل‌های ریاضی معمولی، شبکه‌های عصبی، درخت‌های تصمیم‌گیری، مدل‌های رگرسیون غیرخطی پیشرفته، مدل‌های رگرسیون لجستیک، دسته‌بندهای غیرخطی، ساختارهای چندجمله‌ای پچیده، مدارات و عبارات منطقی و .... این برنامه‌ها همانند یک ساختار درختی هستند که اندازه، شکل و ترکیب آن‌ها به واسطه‌ی یادگیری تغییر می‌کند. این برنامه‌ها همانند موجودات زنده در کروموزومی ساده و خطی و با درازای ثابت رمزگذاری می‌شوند.

فرایند
------

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

کدگذاری
-------

ژنوم برنامه‌نویسی بیان ژن شامل کروموزومی خطی، ساده با درازای ثابت است که از ترکیب یک یا چند ژن با اندازه‌ی برابر به وجود می‌آید. ژن‌ها با وجود درازای ثابتشان درخت‌هایی با اندازه‌ها و شکل‌های مختلفی را کدگذاری می‌کنند. مثالی از کروموزومی با دو ژن با اندازه‌ی ۹، رشته‌ی زیر است:

`012345678012345678`

`L+a-baccd\*\*cLabacd`
که در آن L تابع الگوریتم طبیعی را بازنمایی می‌کند و c ،b ،a و d متغیرها و ثابت‌های مورد استفاده در مسئله را مشخص می‌کنند.

درخت‌های بیان
-------------

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

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

برای مثال عبارت جبری زیر را در نظر بگیرید

{\displaystyle {\sqrt {(a-b)(c+d)}}\,}
که همچنین می‌تواند توسط تصویر زیر بازنمایی بشود:

|  |
| --- |
|  |

در تصویر، Q نماینده‌ی تابع رادیکال است. این مدل نمودار، رخ‌نمون ژن‌های برنامه‌نویسی بیان ژن است. نوع ژن به راحتی توسط نمودار به صورت زیر به دست می‌آید:

`01234567`

`Q\*+-abcd`
که خوانش مستقیم درخت بیان از چپ به راست و از بالا به پایین است. عبارت بالا یک چارچوب خوانش باز است که با Q (در جایگاه ۰) شروع می‌شود و با d (در جایگاه ۷) به پایان می‌رسد.

ژن‌های برنامه‌نویسی بیان ژن
---------------------------

ژن‌های برنامه‌نویسی بیان ژن از یک سر و یک دنباله تشکیل شده‌اند. سر شامل نمادهایی است که هر دوی توابع (اعضای یک مجموعه توابع F) و پایانه (اعضای یک مجموعه پایانه‌های T) را بازنمایی می‌کند. در حالی که که دنباله‌ها تنها شامل پایانه‌ها هستند. در نتیجه دو الفبای متفاوت در نواحی مختلف ژن وجود دارد. در هر مسئله، طول سر (h) انتخاب می‌گردد؛ در حالی که طول دنباله (t) تابعی از h و تعداد متغیرهای (n) تابعی با بیشتر تعداد متغیر است و به صورت زیر محاسبه می‌گردد.

{\displaystyle t=h(n-1)+1}

منابع
-----

1. ↑  مشارکت‌کنندگان ویکی‌پدیا. «Gene expression programming». در *دانشنامهٔ ویکی‌پدیای انگلیسی*.
2. ↑  "gene expression programming, The Newest Development of Evolutionary Computation".
3. ↑  Ferreira, Cândida (2001). "Gene Expression Programming: a New Adaptive Algorithm for Solving Problems". **13** (2): 3. arXiv:cs/0102027v3. `{{cite journal}}`: Cite journal requires `|journal=` (help)