Skip to main content

การเขียนโปรแกรมทางพันธุกรรมคืออะไร?

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

โปรแกรมทางพันธุกรรม (GPS) ทำงานโดยการสร้างและเรียกใช้โปรแกรมหลายพันโปรแกรมและเลือกใช้งานที่มีประสิทธิภาพมากที่สุดตัวอย่างเช่น GP อาจถูกใช้เพื่อสร้างโปรแกรมเพื่อวาดภาพร่างของภาพถ่ายสิ่งแรกที่ GP จะทำคือสร้างชุดของโปรแกรมที่ใช้ฟังก์ชั่นการวาดภาพคอมพิวเตอร์ต่างๆในชุดค่าผสมแบบสุ่มจากนั้น GP จะเรียกใช้แต่ละโปรแกรมเหล่านี้ตามลำดับส่งผลลัพธ์ของแต่ละไฟล์ไปยังไฟล์ภาพ

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

เมื่อเลือกโปรแกรมสองสามอันดับแรก GP จะใช้เป็นพื้นฐานของชุดโปรแกรมใหม่แต่ละชุดใหม่เรียกว่ารุ่นสองวิธีในการสร้างคนรุ่นใหม่คือการกลายพันธุ์และครอสโอเวอร์การกลายพันธุ์ทำงานโดยใช้หนึ่งในโปรแกรมที่มีอยู่และทำการเปลี่ยนแปลงแบบสุ่มหวังว่าจะดีขึ้นครอสโอเวอร์เรียกอีกอย่างว่าการผสมพันธุ์ทำงานโดยการใช้สองโปรแกรมชั้นนำและการรวมองค์ประกอบของพวกเขาเพื่อสร้างโปรแกรมใหม่

หลังจากสร้างโปรแกรมชุดใหม่ GP ซ้ำกระบวนการวิ่งและประเมินผลแล้ว, การกำจัดและกระบวนการสร้างGPS มักจะเรียกใช้หลายร้อยรุ่นก่อนที่จะค้นหาโปรแกรมเดียวที่มีผลลัพธ์ที่น่าพอใจแม้จะมีข้อ จำกัด นี้การเขียนโปรแกรมทางพันธุกรรมเป็นวิธีทั่วไปในการแก้ปัญหาการคำนวณที่ยากลำบากบางประเภทรวมถึงวิศวกรรมหุ่นยนต์และปัญหาปัญญาประดิษฐ์