กลับไปหน้าบทความ

อ่าน 10 นาที

อัลกอริทึม Fly

อั ลกอริทึม Fly เป็นวิธี การสร้างภาพสามมิติ ที่ใช้กลุ่มจุด ("แมลงวัน") ที่สอดคล้องกับวัตถุต่างๆ ที่อยู่ใกล้เคียงกัน โดยใช้ หลักการ ของอัลกอริทึมทางพันธุกรรม และ...

อัลกอริทึม Fly

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

ประวัติศาสตร์

อัลกอริทึม Fly เป็นรูปแบบหนึ่งของวิวัฒนาการร่วมแบบร่วมมือกันโดยอิงตามแนวทางของปารีส[ 1 ]อัลกอริทึม Fly ได้รับการพัฒนาขึ้นครั้งแรกในปี 1999 ในขอบเขตของการประยุกต์ใช้อัลกอริ ทึมวิวัฒนาการ กับ การมองเห็นสามมิติ ด้วยคอมพิวเตอร์[ 2 ] [ 3 ]แตกต่างจากวิธีการแบบคลาสสิกที่ใช้ภาพในการมองเห็นสามมิติ ซึ่งดึงองค์ประกอบภาพออกมาแล้วจับคู่กันเพื่อให้ได้ข้อมูลสามมิติ อัลกอริทึม Fly นั้นอิงตามการสำรวจพื้นที่สามมิติของฉากโดยตรง Fly ถูกกำหนดให้เป็นจุดสามมิติที่อธิบายด้วยพิกัด ( x , y , z ) เมื่อสร้างประชากร Fly แบบสุ่มในพื้นที่ค้นหาที่สอดคล้องกับขอบเขตการมองเห็นของกล้องแล้ว วิวัฒนาการของมัน (โดยอิงตามกระบวนทัศน์กลยุทธ์วิวัฒนาการ) จะใช้ฟังก์ชันความเหมาะสมที่ประเมินว่า Fly มีแนวโน้มที่จะอยู่บนพื้นผิวที่มองเห็นได้ของวัตถุมากน้อยเพียงใด โดยพิจารณาจากความสอดคล้องของการฉายภาพ เพื่อจุดประสงค์นี้ ฟังก์ชันการวัดความเหมาะสมจะใช้ระดับสีเทา สี และ/หรือพื้นผิวของการฉายภาพแมลงวันตามการคำนวณ

สาขาการประยุกต์ใช้แรกของอัลกอริทึม Fly คือการมองเห็นแบบ สามมิติ [ 2 ] [ 3 ] [ 4 ] [ 5 ]ในขณะที่วิธีการ "ลำดับความสำคัญของภาพ" แบบคลาสสิกใช้คุณสมบัติที่ตรงกันจากภาพสามมิติเพื่อสร้างแบบจำลองสามมิติ อัลกอริทึม Fly จะสำรวจพื้นที่สามมิติโดยตรงและใช้ข้อมูลภาพเพื่อประเมินความถูกต้องของสมมติฐานสามมิติ รูปแบบหนึ่งที่เรียกว่า "Dynamic Flies" กำหนดให้แมลงวันเป็น 6-uple ( x , y , z , x' , y' , z' ) ซึ่งเกี่ยวข้องกับความเร็วของแมลงวัน[ 6 ] [ 7 ]ส่วนประกอบของความเร็วไม่ได้ถูกนำมาพิจารณาอย่างชัดเจนในการคำนวณความเหมาะสม แต่ถูกนำมาใช้ในการอัปเดตตำแหน่งของแมลงวันและอยู่ภายใต้ตัวดำเนินการทางพันธุกรรมที่คล้ายกัน (การกลายพันธุ์ การผสมข้าม)

การประยุกต์ใช้ Flies เพื่อหลีกเลี่ยงสิ่งกีดขวางในยานพาหนะ[ 8 ]ใช้ประโยชน์จากข้อเท็จจริงที่ว่าประชากรของแมลงวันเป็นตัวแทนของฉากที่สอดคล้องกับเวลาและมีการวิวัฒนาการอย่างต่อเนื่อง เพื่อสร้างสัญญาณควบคุมยานพาหนะจากแมลงวันโดยตรง การใช้อัลกอริทึม Fly ไม่ได้จำกัดเฉพาะภาพสเตอริโอเท่านั้น เนื่องจากสามารถเพิ่มเซ็นเซอร์อื่นๆ (เช่น เซ็นเซอร์ความใกล้เคียงทางเสียง ฯลฯ) เป็นเงื่อนไขเพิ่มเติมในฟังก์ชันความเหมาะสมที่กำลังปรับให้เหมาะสม ข้อมูล Odometry ยังสามารถใช้เพื่อเร่งการอัปเดตตำแหน่งของแมลงวัน และในทางกลับกัน ตำแหน่งของแมลงวันสามารถใช้เพื่อระบุตำแหน่งและข้อมูลการทำแผนที่ได้[ 9 ]

อีกหนึ่งสาขาการประยุกต์ใช้ของอัลกอริทึม Fly คือการสร้างภาพใหม่สำหรับการถ่ายภาพเอกซเรย์คอมพิวเตอร์แบบปล่อยรังสีในเวชศาสตร์นิวเคลียร์อัลกอริทึม Fly ได้ถูกนำไปใช้สำเร็จในการถ่าย ภาพเอกซเรย์คอมพิวเตอร์แบบปล่อยโฟ ตอนเดี่ยว[ 10 ]และการถ่ายภาพเอกซเรย์คอมพิวเตอร์แบบปล่อยโพซิตรอน[ 11 ] [ 12 ]ในที่นี้ แมลงวันแต่ละตัวถือเป็นตัวปล่อยโฟตอน และความเหมาะสมของมันขึ้นอยู่กับความสอดคล้องของการส่องสว่างจำลองของเซ็นเซอร์กับรูปแบบจริงที่สังเกตได้บนเซ็นเซอร์ ภายในแอปพลิเคชันนี้ ฟังก์ชันความเหมาะสมได้รับการกำหนดใหม่เพื่อใช้แนวคิดใหม่ของ 'การประเมินแบบมาร์จินัล' ในที่นี้ ความเหมาะสมของแต่ละบุคคลจะถูกคำนวณจากส่วนร่วม (บวกหรือลบ) ต่อคุณภาพของประชากรโดยรวม โดยอิงตามหลักการตรวจสอบแบบไขว้แบบตัดออกหนึ่งตัวฟังก์ชันความเหมาะสมโดยรวมจะประเมินคุณภาพของประชากรทั้งหมด จากนั้นจึงคำนวณความเหมาะสมของแต่ละบุคคล (แมลงวัน) เป็นความแตกต่างระหว่างค่าความเหมาะสมโดยรวมของประชากรที่มีและไม่มีแมลงวันตัวนั้น ซึ่งฟังก์ชันความเหมาะสมของแต่ละบุคคล จะต้องได้รับการประเมิน[ 13 ] [ 14 ]ใน[ 15 ]ความเหมาะสมของแมลงวันแต่ละตัวถือเป็น 'ระดับความเชื่อมั่น' ซึ่งใช้ในระหว่างกระบวนการสร้างโวเซลเพื่อปรับแต่งรอยเท้าของแมลงวันแต่ละตัวโดยใช้การสร้างแบบจำลองโดยปริยาย (เช่นเมตาบอล ) ซึ่งทำให้ได้ผลลัพธ์ที่ราบรื่นและแม่นยำยิ่งขึ้น

เมื่อไม่นานมานี้ ได้มีการนำไปใช้ในงานศิลปะดิจิทัลเพื่อสร้างภาพคล้ายโมเสกหรือพ่นสี[ 16 ]ตัวอย่างภาพสามารถพบได้บนYouTube

วิวัฒนาการของปารีส

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

  • ฟังก์ชันความเหมาะสมเฉพาะที่เพื่อประเมินประสิทธิภาพของแต่ละบุคคล (โดยปกติจะใช้ในระหว่างกระบวนการคัดเลือก)
  • ฟังก์ชันความเหมาะสมโดยรวมเพื่อประเมินประสิทธิภาพของประชากรทั้งหมด เป้าหมายของประชากรคือการเพิ่มค่าความเหมาะสมโดยรวมนี้ให้สูงสุด (หรือต่ำสุด ขึ้นอยู่กับปัญหาที่พิจารณา)

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

ตัวอย่างการประยุกต์ใช้ Parisian Evolution ได้แก่:

  • อัลกอริทึม Fly
  • การวิเคราะห์ข้อความ
  • การจดจำท่าทางมือ
  • การสร้างแบบจำลองปฏิสัมพันธ์ที่ซับซ้อนในกระบวนการผลิตอาหารเกษตรอุตสาหกรรม
  • การสร้างภาพใหม่จากการตรวจเอกซเรย์คอมพิวเตอร์แบบปล่อยโพซิตรอน (PET reconstruction )

การขจัดความกำกวม

แนวทางแบบปารีสเทียบกับการวิวัฒนาการร่วมแบบร่วมมือกัน

การวิวัฒนาการร่วมแบบร่วมมือ (Cooperative coevolution)เป็นกลุ่มกว้างๆ ของอัลกอริทึมวิวัฒนาการที่แก้ปัญหาที่ซับซ้อนโดยการแบ่งปัญหาออกเป็นส่วนประกอบย่อยๆ ที่ได้รับการแก้ไขอย่างอิสระ แนวทางของปารีสมีความคล้ายคลึงกับอัลกอริทึมการวิวัฒนาการร่วมแบบร่วมมือ หลายประการ แนวทางของปารีสใช้ประชากรเดียว ในขณะที่อาจใช้หลายสายพันธุ์ในอัลกอริทึม การวิวัฒนาการ ร่วมแบบร่วมมือกลไกวิวัฒนาการภายในที่คล้ายกันนี้ได้รับการพิจารณาในอัลกอริทึมวิวัฒนาการ แบบคลาสสิก อั ลกอริทึมการวิวัฒนาการร่วมแบบร่วมมือ และวิวัฒนาการแบบปารีส ความแตกต่างระหว่างอัลกอริทึมการวิวัฒนาการร่วมแบบร่วมมือและวิวัฒนาการแบบปารีสอยู่ที่ความหมายของประชากร อัลกอริทึมการวิวัฒนาการ ร่วมแบบร่วมมือแบ่งปัญหาใหญ่ๆ ออกเป็นปัญหาย่อยๆ (กลุ่มของแต่ละบุคคล) และแก้ปัญหาเหล่านั้นแยกกันไปสู่ปัญหาใหญ่[ 17 ]ไม่มีการปฏิสัมพันธ์/การผสมพันธุ์ระหว่างบุคคลในประชากรย่อยที่แตกต่างกัน มีเพียงกับบุคคลในประชากรย่อยเดียวกันเท่านั้น อย่างไรก็ตามอัลกอริทึมวิวัฒนาการ แบบปารีส แก้ปัญหาทั้งหมดเป็นส่วนประกอบใหญ่ ประชากรทุกภาคส่วนร่วมมือกันเพื่อผลักดันประชากรทั้งหมดไปสู่พื้นที่ที่น่าสนใจในพื้นที่การค้นหา

อัลกอริทึม Fly เทียบกับการเพิ่มประสิทธิภาพฝูงอนุภาค

การวิวัฒนาการร่วมมือและการเพิ่มประสิทธิภาพฝูงอนุภาค (PSO)มีความคล้ายคลึงกันหลายประการPSOได้รับแรงบันดาลใจจากพฤติกรรมทางสังคมของฝูงนกหรือฝูงปลา[ 18 ] [ 19 ] ในตอนแรกมันถูกนำเสนอเป็นเครื่องมือสำหรับการสร้างภาพเคลื่อนไหวที่สมจริงในกราฟิกคอมพิวเตอร์ มันใช้บุคคลที่ซับซ้อนซึ่งโต้ตอบกันเพื่อสร้างพฤติกรรมรวมที่สมจริงทางสายตาโดยการปรับกฎพฤติกรรมของบุคคล (ซึ่งอาจใช้ตัวสร้างแบบสุ่ม) ในการเพิ่มประสิทธิภาพทางคณิตศาสตร์ อนุภาคแต่ละตัวในฝูงจะปฏิบัติตามเส้นทางสุ่มของตัวเองโดยมีแนวโน้มไปทางอนุภาคที่ดีที่สุดในฝูง ในอัลกอริทึมแมลงวัน แมลงวันมีเป้าหมายในการสร้างการแสดงภาพเชิงพื้นที่ของฉากจากข้อมูลเซ็นเซอร์จริง แมลงวันไม่ได้สื่อสารหรือร่วมมือกันอย่างชัดเจน และไม่ได้ใช้แบบจำลองพฤติกรรมใดๆ

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

การประยุกต์ใช้อัลกอริธึม Fly

ตัวอย่าง: การสร้างภาพตัดขวางขึ้นใหม่

ไซโนแกรมของซึ่งเป็นที่ทราบกันดี
ตัวอย่างการสร้างภาพจำลองรถฮอตโรดโดยใช้อัลกอริธึม Fly

การสร้างภาพตัดขวางแบบสามมิติ (Tomography reconstruction) เป็นปัญหาผกผันที่มักไม่สามารถแก้ไขได้เนื่องจากข้อมูลขาดหายและ/หรือมีสัญญาณรบกวน คำตอบของปัญหาผกผันนั้นไม่เป็นเอกลักษณ์ และในกรณีที่มีสัญญาณรบกวนสูงมาก อาจไม่มีคำตอบเลยด้วยซ้ำ ข้อมูลป้อนเข้าของอัลกอริทึมการสร้างภาพอาจอยู่ในรูปของการแปลงเรดอน (Radon transform ) หรือไซโนแกรม (sinogram) ของข้อมูลที่จะสร้างใหม่ ค่า หนึ่ง ไม่ทราบค่า อีกค่าหนึ่งทราบค่า การได้มาซึ่งข้อมูลในการสร้างภาพตัดขวางแบบสามมิติสามารถจำลองได้ดังนี้ :

โดยที่เป็นเมทริกซ์ระบบหรือตัวดำเนินการฉายภาพ และสอดคล้องกับสัญญาณรบกวนปัวซง บางอย่าง ในกรณีนี้ การสร้างใหม่จะสอดคล้องกับการผกผันของการแปลงเรดอน :

โปรดทราบว่าสามารถคำนึงถึงสัญญาณรบกวน รูปทรงเรขาคณิตของการได้มาซึ่งภาพ ฯลฯ อัลกอริทึม Fly เป็นตัวอย่างของการสร้างภาพซ้ำแบบวนซ้ำวิธีการวนซ้ำในการสร้างภาพโทโมกราฟิกนั้นค่อนข้างง่ายต่อการสร้างแบบจำลอง:

โดยที่เป็นค่าประมาณของที่ทำให้ค่าเมตริกความคลาดเคลื่อน (ในที่นี้คือℓ²-นอร์มแต่สามารถใช้เมตริกความคลาดเคลื่อนอื่นๆ ได้) ระหว่างและ มีค่าน้อย ที่สุด โปรดทราบว่า สามารถเพิ่ม เทอมการปรับค่าเพื่อป้องกันการโอเวอร์ฟิตติ้งและเพื่อลดสัญญาณรบกวนในขณะที่ยังคงรักษาขอบไว้ วิธีการวนซ้ำสามารถนำไปใช้ได้ดังนี้:

การแก้ไขแบบวนซ้ำในการสร้างภาพตัดขวาง
 (i) การสร้างภาพขึ้นใหม่เริ่มต้นโดยใช้ค่าประมาณเบื้องต้นของภาพ (โดยทั่วไปคือภาพคงที่) (ii) ข้อมูลการฉายภาพคำนวณจากภาพนี้ (iii) เปรียบเทียบการคาดการณ์ที่ประเมินไว้กับการคาดการณ์ที่วัดได้ (iv) มีการแก้ไขเพื่อปรับภาพที่คาดการณ์ไว้ให้ถูกต้อง และ (v) อัลกอริทึมจะวนซ้ำจนกว่าชุดการฉายภาพที่ประมาณและวัดได้จะบรรจบกัน 

รหัสเทียมด้านล่างนี้เป็นคำอธิบายทีละขั้นตอนของอัลกอริทึม Fly สำหรับการสร้างภาพโทโมกราฟิก อัลกอริทึมนี้เป็นไปตามแบบแผนสภาวะคงที่ เพื่อจุดประสงค์ในการแสดงตัวอย่าง ตัวดำเนินการทางพันธุกรรมขั้นสูง เช่น ไมโทซิส การกลายพันธุ์คู่ ฯลฯ[ 22 ] [ 23 ]จะถูกละเว้น การใช้งาน JavaScriptสามารถพบได้ใน Fly4PET

อัลกอริทึม fly-algorithm รับอินพุตเป็นจำนวนแมลงวัน ( N ) ข้อมูลการฉายภาพอินพุต ( อ้างอิง p )ผลลัพธ์:จำนวนประชากรแมลงวัน ( F ) การคาดการณ์ที่ประเมินจากF ( p ที่ประเมิน ) ปริมาตร 3 มิติที่สอดคล้องกับการแบ่งส่วนแบบว็อกเซลของF ( V F ) เงื่อนไขหลังการทดลอง:ความแตกต่างระหว่างค่า p ที่ประมาณการได้และ ค่า p อ้างอิงมีค่าน้อยที่สุด เริ่ม 1. // การเริ่มต้น 2. // กำหนดตำแหน่งของ แมลงวัน N ตัว กล่าวคือ สร้างการคาดเดาเริ่มต้น 3. สำหรับแมลงวัน แต่ละตัว i ในประชากรแมลงวันF ให้ทำ 4. F ( i ) x ← random(0, 1) 5. F ( i ) y ← random(0, 1) 6. F ( i ) z ← random(0, 1) 7. เพิ่มการฉายภาพของF ( i ) ใน p ที่ประมาณไว้ 8. 9. // คำนวณประสิทธิภาพของประชากร (เช่น ความเหมาะสมโดยรวม) 10. G fitness ( F ) ← ตัวชี้วัดข้อผิดพลาด ( p อ้างอิง , p ที่ประมาณการ ) 11. 12. f kill ← เลือกแมลงวันF แบบสุ่มหนึ่งตัว 13. 14. ลบ ส่วนที่ f killมีส่วนร่วมออกจากค่า p ที่ประมาณไว้ 15. 16. // คำนวณประสิทธิภาพของประชากรโดยไม่ใช้ f kill 17. G fitness ( F -{ f kill }) ← ตัวชี้วัดข้อผิดพลาด ( p อ้างอิง , p ประมาณการ ) 18. 19. // เปรียบเทียบประสิทธิภาพ เช่น คำนวณค่าความเหมาะสมเฉพาะที่ของแมลงวัน 20. L fitness ( f kill ) ← G fitness ( F -{ f kill }) - G fitness ( F ) 21. 22. ถ้าค่าความเหมาะสมในพื้นที่มากกว่า 0 // การคัดเลือกโดยใช้เกณฑ์เพื่อกำจัดแมลงวันตัวที่ไม่ดี 23. จากนั้นไปที่ขั้นตอนที่ 26 // f killเป็นแมลงวันดี (ประสิทธิภาพของประชากรดีขึ้นเมื่อมี f killอยู่ด้วย): เราไม่ควรฆ่ามัน 24. มิฉะนั้นไปที่ขั้นตอนที่ 28 // f killเป็นแมลงวันไม่ดี (ประสิทธิภาพของประชากรแย่ลงเมื่อมี f killอยู่ด้วย): เราสามารถกำจัดมันได้ 25. 26. คืนค่าการมีส่วนร่วมของแมลงวัน จากนั้นไปที่ขั้นตอนที่ 12 27. 28. เลือกตัวดำเนินการทางพันธุกรรม 29. 30. ถ้าตัวดำเนินการทางพันธุกรรมคือการกลายพันธุ์ 31. จากนั้นไปที่ขั้นตอนที่ 34 32. มิเช่นนั้นให้ไปที่ขั้นตอนที่ 50 33. 34. f สืบพันธุ์ ← เลือกแมลงวันF แบบสุ่มหนึ่งตัว 35. 14. ลบส่วนร่วมของf ที่ได้จากการทำซ้ำออก จาก ค่า p ที่ประมาณไว้ 37. 38. // คำนวณประสิทธิภาพของประชากรโดยไม่ใช้ f reproduce 39. G fitness ( F -{ f reproduce }) ← ตัวชี้วัดข้อผิดพลาด ( p อ้างอิง , p ประมาณการ ) 40. 41. // เปรียบเทียบประสิทธิภาพ เช่น คำนวณค่าความเหมาะสมเฉพาะที่ของแมลงวัน 42. L fitness ( f reproduce ) ← G fitness ( F -{ f reproduce }) - G fitness ( F ) 43. 44. ฟื้นฟูคุณูปการของแมลงวัน 45. 46. ​​หากค่าความเหมาะสมในพื้นที่ต่ำกว่าหรือเท่ากับ 0 // การคัดเลือกแมลงวันตัวที่ดีที่สามารถสืบพันธุ์ได้โดยใช้เกณฑ์ 47. มิเช่นนั้นให้ไปที่ขั้นตอนที่ 34 // ถ้าreproduceเป็นแมลงวันที่ไม่ดี: เราไม่ควรอนุญาตให้มันแพร่พันธุ์ 48. จากนั้นให้ไปที่ขั้นตอนที่ 53 // ถ้าreproduceเป็นแมลงวันที่ดี: เราสามารถอนุญาตให้มันแพร่พันธุ์ได้ 49. 50. // เลือดใหม่ / การอพยพ 51. แทนที่f killด้วยแมลงวันตัวใหม่ที่มีตำแหน่งแบบสุ่ม ไปที่ขั้นตอนที่ 57 52. 53. // การกลายพันธุ์ 54. คัดลอกf reproduceไปยังf kill 55. เปลี่ยนแปลง ตำแหน่งของf kill เล็กน้อยและแบบสุ่ม 56. 57. เพิ่มจำนวนแมลงวันตัวใหม่เข้าไปในประชากร 58. 59. หากหยุดการบูรณะ 60. จากนั้นไปที่ขั้นตอนที่ 63 61. มิเช่นนั้นให้ไปที่ขั้นตอนที่ 10 62. 63. // สกัดสารละลาย 64. V F ← การแปลงF เป็นโวเซล 65. 66. ส่งคืนV Fจบ

ตัวอย่าง: ศิลปะดิจิทัล

การค้นหาเชิงวิวัฒนาการ
ภาพได้รับการสร้างขึ้นใหม่หลังจากปรับให้เหมาะสมโดยใช้ชุดลายเส้นเป็นรูปแบบสำหรับแต่ละช่องภาพ

ในตัวอย่างนี้ ภาพอินพุตจะถูกประมาณค่าด้วยชุดของชิ้นส่วน (เช่นเดียวกับโมเสก โบราณ ) ชิ้นส่วนแต่ละชิ้นมีทิศทาง (มุม θ) ส่วนประกอบสีสามสี (แดง เขียว น้ำเงิน) ขนาด (กว้าง สูง) และตำแหน่ง (x, y, z) ถ้ามี ชิ้นส่วน Nชิ้น จะมี ตัวเลขทศนิยมที่ไม่ทราบค่า 9N ตัวให้เดา กล่าวอีกนัยหนึ่ง สำหรับชิ้นส่วน 5,000 ชิ้น จะมีตัวเลข 45,000 ตัวให้ค้นหา การใช้อัลกอริธึมวิวัฒนาการแบบคลาสสิก ซึ่งคำตอบของปัญหาการปรับให้เหมาะสมคือบุคคลที่ดีที่สุด จีโนมของแต่ละบุคคลจะประกอบด้วยยีน 45,000 ยีน วิธีการนี้จะมีค่าใช้จ่ายสูงมากในแง่ของความซับซ้อนและเวลาในการคำนวณ เช่นเดียวกับอัลกอริธึมการปรับให้เหมาะสมแบบคลาสสิกอื่นๆ การใช้อัลกอริธึม Fly แต่ละบุคคลจะเลียนแบบชิ้นส่วน และสามารถประเมินได้ทีละคนโดยใช้ค่าความเหมาะสมเฉพาะที่เพื่อประเมินการมีส่วนร่วมต่อประสิทธิภาพของประชากร (ค่าความเหมาะสมโดยรวม) ในที่นี้ แต่ละบุคคลมี 9 ยีนแทนที่จะเป็น 9N และมี บุคคล Nคน สามารถแก้ไขได้โดยใช้วิธีการสร้างแบบจำลองใหม่ดังนี้:

โดยที่คือภาพอินพุตและคือพิกเซลพิกัดตามแกนแนวนอนและแนวตั้งตามลำดับและคือความกว้างและความสูงของภาพในหน่วยพิกเซลตามลำดับคือประชากรแมลงวัน และคือตัวดำเนินการฉายภาพที่สร้างภาพจากแมลงวัน ตัวดำเนินการฉายภาพนี้สามารถมีได้หลายรูปแบบ ในงานของเธอ Z. Ali Aboodd [ 16 ]ใช้OpenGLเพื่อสร้างเอฟเฟกต์ต่างๆ (เช่น โมเสก หรือสีสเปรย์) เพื่อเร่งความเร็วในการประเมินฟังก์ชันความเหมาะสม จึง ใช้ OpenCLด้วยเช่นกัน อัลกอริทึมเริ่มต้นด้วยประชากรที่สร้างขึ้นแบบสุ่ม (ดูบรรทัดที่ 3 ในอัลกอริทึมข้างต้น) จากนั้น จะถูกประเมินโดยใช้ความเหมาะสมโดยรวมเพื่อคำนวณ(ดูบรรทัดที่ 10) คือฟังก์ชันวัตถุประสงค์ที่ต้องลดให้เหลือน้อยที่สุด

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Fly_algorithm&oldid=1349670275 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อัลกอริทึม Fly

อั ลกอริทึม Fly เป็นวิธี การสร้างภาพสามมิติ ที่ใช้กลุ่มจุด ("แมลงวัน") ที่สอดคล้องกับวัตถุต่างๆ ที่อยู่ใกล้เคียงกัน โดยใช้ หลักการ ของอัลกอริทึมทางพันธุกรรม และ...

ประวัติศาสตร์

อัลกอริทึม Fly เป็นรูปแบบหนึ่งของ วิวัฒนาการร่วมแบบร่วมมือกัน โดยอิงตามแนวทางของปารีส [ 1 ] อัลกอริทึม Fly ได้รับการพัฒนาขึ้นครั้งแรกในปี 1999 ในขอบเขตของการประยุกต์ใช้ อัลกอริ ทึมวิวัฒนาการ กับ การมองเห็นสามมิติ ด้วย คอมพิวเตอร์ [ 2 ] [ 3 ]...

วิวัฒนาการของปารีส

ในที่นี้ ประชากรของแต่ละบุคคลถูกมองว่าเป็น สังคม ที่แต่ละบุคคลร่วมมือกันเพื่อบรรลุเป้าหมายร่วมกัน วิธีการนี้ใช้ขั้นตอนวิธีเชิงวิวัฒนาการซึ่งรวมถึง ตัวดำเนินการทางพันธุกรรม ทั่วไปทั้งหมด (เช่น การกลายพันธุ์ การผสมข้าม การคัดเลือก)...

แนวทางแบบปารีส เทียบกับ การวิวัฒนาการร่วมแบบร่วมมือกัน

การวิวัฒนาการร่วมแบบร่วมมือ (Cooperative coevolution) เป็นกลุ่มกว้างๆ ของ อัลกอริทึมวิวัฒนาการ ที่แก้ปัญหาที่ซับซ้อนโดยการแบ่งปัญหาออกเป็นส่วนประกอบย่อยๆ ที่ได้รับการแก้ไขอย่างอิสระ แนวทางของปารีสมีความคล้ายคลึงกับ อัลกอริทึมการวิวัฒนาการร่วมแบบร่วมมือ...