การเขียนโปรแกรมทางพันธุกรรมเป็นกระบวนการของการใช้โปรแกรมคอมพิวเตอร์หนึ่งในการเขียนโปรแกรมคอมพิวเตอร์อื่นโดยใช้วิธีการวิวัฒนาการขั้นตอนวิธี กระบวนการนี้มักจะถูกเปรียบเทียบกับการเขียนโปรแกรมเชิงเส้นซึ่งโปรแกรมเมอร์เขียนคำแนะนำเฉพาะสำหรับคอมพิวเตอร์ที่จะดำเนินการ LISP และ Scheme เป็นภาษาการเขียนโปรแกรมที่ใช้กันโดยทั่วไปสำหรับงานประเภทนี้เนื่องจากมีฟังก์ชั่นและความยืดหยุ่นในระดับสูง อันเป็นผลมาจากความคล้ายคลึงกันทางแนวคิดของวิวัฒนาการทางชีวภาพการเขียนโปรแกรมทางพันธุกรรมมักถูกอ้างถึงเป็นตัวอย่างของการคำนวณทางชีวภาพ
โปรแกรมทางพันธุกรรม (GPs) ทำงานโดยการสร้างและเรียกใช้โปรแกรมหลายพันโปรแกรมและเลือกใช้อย่างมีประสิทธิภาพสูงสุด ตัวอย่างเช่น GP อาจถูกใช้เพื่อสร้างโปรแกรมเพื่อวาดภาพร่างของภาพถ่าย สิ่งแรกที่ GP จะทำคือสร้างชุดของโปรแกรมที่ใช้ฟังก์ชั่นการวาดภาพคอมพิวเตอร์ต่าง ๆ ด้วยการรวมกันแบบสุ่ม จากนั้น GP จะเรียกใช้โปรแกรมเหล่านี้ตามลำดับส่งผลลัพธ์ของแต่ละไฟล์ไปยังรูปภาพ
ขั้นตอนต่อไปสำหรับ GP คือการเลือกโปรแกรมที่ดีที่สุดจากชุด กระบวนการนี้โดยทั่วไปเป็นส่วนที่ยากที่สุดของการโปรแกรมเชิงพันธุกรรม ในกรณีของโปรแกรมวาดรูป GP จะใช้ซอฟต์แวร์เปรียบเทียบภาพเพื่อกำหนดว่าภาพวาดแบบสุ่มใดที่คล้ายกับภาพที่ซอฟต์แวร์พยายามวาดมากที่สุด ในโปรแกรมที่สร้างแบบสุ่ม GP จะเลือกอันดับต้น ๆ และยกเลิกรายการที่เหลือ กระบวนการคัดเลือกเป็นที่รู้จักกันในชื่อการประเมินความเหมาะสมและโดยทั่วไปถือว่าเป็นส่วนที่ยากที่สุดของการเขียนโปรแกรมทางพันธุกรรม
เมื่อเลือกโปรแกรมไม่กี่อันดับแรก GP จะใช้โปรแกรมเหล่านี้เป็นพื้นฐานของชุดโปรแกรมใหม่ แต่ละชุดใหม่เรียกว่าการสร้าง สองวิธีในการสร้างคนรุ่นใหม่คือการกลายพันธุ์และครอสโอเวอร์ การกลายพันธุ์ทำงานโดยใช้หนึ่งในโปรแกรมที่มีอยู่และทำการเปลี่ยนแปลงแบบสุ่มหวังว่าจะดีขึ้น ครอสโอเวอร์เรียกอีกอย่างว่าการผสมพันธุ์ทำงานโดยรับสองโปรแกรมยอดนิยมและรวมองค์ประกอบของพวกเขาเพื่อสร้างโปรแกรมใหม่
หลังจากสร้างชุดโปรแกรมใหม่ GP จะทำซ้ำกระบวนการของการเรียกใช้และประเมินผลจากนั้นทำการทำซ้ำขั้นตอนการเลือกการกำจัดและกระบวนการสร้างซ้ำ จีพีเอสจะทำงานหลายร้อยชั่วอายุคนก่อนที่จะหาโปรแกรมเดียวที่มีผลลัพธ์ที่น่าพอใจ แม้จะมีข้อ จำกัด นี้การเขียนโปรแกรมทางพันธุกรรมเป็นวิธีการทั่วไปในการแก้ปัญหาการคำนวณที่ยากบางประเภทรวมถึงวิศวกรรมหุ่นยนต์และปัญหาปัญญาประดิษฐ์


