อ่าน 2 นาที
การเขียนโปรแกรมแบบหลายนิพจน์
การเขียนโปรแกรมแบบหลายนิพจน์ (MEP) เป็นอัลกอริทึมเชิงวิวัฒนาการสำหรับการสร้างฟังก์ชันทางคณิตศาสตร์ที่อธิบายชุดข้อมูลที่กำหนด MEP เป็น รูปแบบหนึ่ง ของการเขียนโปรแกรมเชิงพันธุกรรม...
การเขียนโปรแกรมแบบหลายนิพจน์
| ส่วนหนึ่งของชุดบทความเกี่ยวกับ |
| อัลกอริทึมวิวัฒนาการ |
|---|
| อัลกอริทึมทางพันธุกรรม (GA) |
| การเขียนโปรแกรมเชิงพันธุกรรม (GP) |
| วิวัฒนาการเชิงอนุพันธ์ |
| กลยุทธ์วิวัฒนาการ |
| การเขียนโปรแกรมเชิงวิวัฒนาการ |
| หัวข้อที่เกี่ยวข้อง |
การเขียนโปรแกรมแบบหลายนิพจน์ (MEP) เป็นอัลกอริทึมเชิงวิวัฒนาการสำหรับการสร้างฟังก์ชันทางคณิตศาสตร์ที่อธิบายชุดข้อมูลที่กำหนด MEP เป็น รูปแบบหนึ่ง ของการเขียนโปรแกรมเชิงพันธุกรรมที่เข้ารหัสโซลูชันหลายรายการในโครโมโซมเดียวกัน การแสดงผลของ MEP ไม่เฉพาะเจาะจง (มีการทดสอบการแสดงผลหลายแบบ) ในรูปแบบที่ง่ายที่สุด โครโมโซมของ MEP เป็นสตริงเชิงเส้นของคำสั่ง การแสดงผลนี้ได้รับแรงบันดาลใจจากรหัสสามแอดเดรสจุดแข็งของ MEP อยู่ที่ความสามารถในการเข้ารหัสโซลูชันหลายรายการของปัญหาในโครโมโซมเดียวกัน ด้วยวิธีนี้ เราสามารถสำรวจพื้นที่การค้นหาที่กว้างขึ้นได้ สำหรับปัญหาส่วนใหญ่ ข้อได้เปรียบนี้ไม่ได้มาพร้อมกับโทษของเวลาการทำงานเมื่อเทียบกับ รูปแบบ การเขียนโปรแกรมเชิงพันธุกรรมที่เข้ารหัสโซลูชันเดียวในโครโมโซม[ 1 ] [ 2 ] [ 3 ]
การเป็นตัวแทน
โครโมโซม MEP คืออาร์เรย์ของคำสั่งที่แสดงในรูป แบบรหัสสามแอดเดรส
แต่ละคำสั่งประกอบด้วยตัวแปร ค่าคงที่ หรือฟังก์ชัน หากคำสั่งนั้นเป็นฟังก์ชัน ก็จะมีอาร์กิวเมนต์ (ระบุเป็นที่อยู่ของคำสั่ง) อยู่ด้วย
ตัวอย่างโปรแกรม MEP
นี่คือโครโมโซม MEP อย่างง่าย (ป้ายกำกับทางด้านซ้ายไม่ใช่ส่วนหนึ่งของโครโมโซม):
1: ก 2: ข 3: + 1, 2 4: c 5: ง 6: + 4, 5 7: * 3, 5
การคำนวณความเหมาะสม
เมื่อมีการประเมินโครโมโซมแล้ว จะไม่ชัดเจนว่าคำสั่งใดจะให้ผลลัพธ์ของโปรแกรม ในหลายกรณี จะได้ชุดโปรแกรมหลายโปรแกรม ซึ่งบางโปรแกรมอาจไม่เกี่ยวข้องกันเลย (ไม่มีคำสั่งร่วมกัน)
สำหรับโครโมโซมข้างต้น ต่อไปนี้คือรายการโปรแกรมที่เป็นไปได้ซึ่งได้จากการถอดรหัส:
E1 = a, E2 = b, E4 = c, E5 = d, E3 = a + b. E6 = c + d. E7 = (a + b) * d.
คำสั่งแต่ละคำสั่งจะถูกประเมินว่าเป็นผลลัพธ์ที่เป็นไปได้ของโปรแกรม
ค่าความเหมาะสม (หรือค่าความคลาดเคลื่อน) จะถูกคำนวณในลักษณะมาตรฐาน ตัวอย่างเช่น ในกรณีของการถดถอยเชิงสัญลักษณ์ค่าความเหมาะสมคือผลรวมของความแตกต่าง (ในค่าสัมบูรณ์) ระหว่างผลลัพธ์ที่คาดหวัง (เรียกว่าเป้าหมาย) และผลลัพธ์จริง
กระบวนการมอบหมายงานด้านฟิตเนส
นิพจน์ใดจะใช้แทนโครโมโซม? นิพจน์ใดจะแสดงถึงความเหมาะสมของโครโมโซม?
ใน MEP โครโมโซมที่ดีที่สุด (ซึ่งมีข้อผิดพลาดน้อยที่สุด) จะถูกนำมาใช้แทนโครโมโซม ซึ่งแตกต่างจากเทคนิค GP อื่นๆ: ในการเขียนโปรแกรมเชิงพันธุกรรมแบบเชิงเส้นคำสั่งสุดท้ายจะให้ผลลัพธ์ ในขณะที่ในการเขียนโปรแกรมเชิงพันธุกรรมแบบคาร์ทีเซียนยีนที่ให้ผลลัพธ์จะถูกพัฒนาไปพร้อมกับยีนอื่นๆ
โปรดทราบว่า สำหรับปัญหาหลายๆ ข้อ การประเมินนี้มีความซับซ้อนเท่ากับการเข้ารหัสวิธีแก้ปัญหาเพียงวิธีเดียวในแต่ละโครโมโซม ดังนั้นจึงไม่มีผลเสียต่อเวลาในการทำงานเมื่อเทียบกับเทคนิคอื่นๆ
ซอฟต์แวร์
เมพีเอ็กซ์
MEPX เป็นซอฟต์แวร์ฟรีที่ใช้งานได้บนหลายแพลตฟอร์ม (Windows, macOS และ Linux Ubuntu) สำหรับการสร้างโปรแกรมคอมพิวเตอร์โดยอัตโนมัติ สามารถใช้ในการวิเคราะห์ข้อมูล โดยเฉพาะอย่างยิ่งสำหรับการแก้ ปัญหา การถดถอยเชิงสัญลักษณ์การจำแนกประเภททางสถิติและปัญหา อนุกรมเวลา
ลิบเมป
Libmepเป็นไลบรารีโอเพนซอร์สฟรีที่ใช้เทคนิคการเขียนโปรแกรมแบบหลายนิพจน์ (Multi Expression Programming) โดยเขียนด้วยภาษา C++
เอชเอ็มอีพี
hmepเป็นไลบรารีโอเพนซอร์สใหม่ที่ใช้เทคนิคการเขียนโปรแกรมแบบหลายนิพจน์ (Multi Expression Programming) ในภาษาโปรแกรม Haskell
ดูเพิ่มเติม
- การถดถอยเชิงสัญลักษณ์
- ปัญญาประดิษฐ์
- การโปรแกรมทางพันธุกรรม
- การเขียนโปรแกรมทางพันธุกรรมแบบคาร์ทีเซียน
- การกำหนดโปรแกรมการแสดงออกของยีน
- วิวัฒนาการทางไวยากรณ์
- การเขียนโปรแกรมทางพันธุกรรมเชิงเส้น
หมายเหตุ
- ↑ออลเตียน ม.; Dumitrescu D.: " Multi Expression Programming ", รายงานทางเทคนิค, Univ. บาบส์-โบลาย, คลูจ-นาโปกา, 2002
- ^ Oltean M.; Grosan C.: "การพัฒนาอัลกอริทึมเชิงวิวัฒนาการโดยใช้การเขียนโปรแกรมแบบหลายนิพจน์ " การประชุมวิชาการด้านปัญญาประดิษฐ์แห่งยุโรปครั้งที่ 7 วันที่ 14-17 กันยายน 2546 เมืองดอร์ทมุนด์ บรรณาธิการโดย W. Banzhaf (และคณะ) LNAI 2801 หน้า 651-658 สำนักพิมพ์ Springer-Verlag กรุงเบอร์ลิน ปี 2546
- ^ Oltean M.; Grosan C.: "การพัฒนาวงจรดิจิทัลโดยใช้การเขียนโปรแกรมแบบหลายนิพจน์ " การประชุม NASA/DoD ว่าด้วยฮาร์ดแวร์ที่พัฒนาได้ 24–26 มิถุนายน ซีแอตเทิล บรรณาธิการโดย R. Zebulum (และคณะ) หน้า 87-90 สำนักพิมพ์ IEEE Press รัฐนิวเจอร์ซีย์ ปี 2004
ลิงก์ภายนอก
- เว็บไซต์การเขียนโปรแกรมแบบหลายนิพจน์
- ซอร์สโค้ดการเขียนโปรแกรมแบบหลายนิพจน์

