โครงการไม่ได้อยู่ภายใต้การบำรุงรักษาอีกต่อไป กรุณาเยี่ยมชม LINQ ไปที่ A* สำหรับเวอร์ชันล่าสุด
Heuristic Suite เป็นการทดลองใช้อัลกอริธึมฮิวริสติกในการเขียนโปรแกรมทั่วไป โครงการมีวัตถุประสงค์เพื่อให้โครงสร้างพื้นฐานที่สามารถนำไปใช้กับปริศนาใด ๆ - ตราบใดที่ปริศนาสามารถแก้ไขได้ด้วยอัลกอริทึม
อัลกอริทึมที่ใช้งาน:
การใช้งานนั้นมุ่งเน้นวัตถุอย่างสมบูรณ์และใช้ประโยชน์จากกลไกการเปรียบเทียบเฟรมเวิร์กในตัวเช่น ICOMPARER (T) และ IEqualityComparer (T) เพื่อสร้างความเข้ากันได้ที่ยอดเยี่ยมกับ. NET มาตรฐานและระบบนิเวศ. NET ทั้งหมด ซอร์สโค้ดสามารถนำไปยังแพลตฟอร์มอื่น ๆ ได้อย่างง่ายดายเช่น Unity และ Xamarin
ในการใช้อัลกอริทึมกับปริศนาจำเป็นต้องมีการใช้งานต่อไปนี้:
คำจำกัดความขั้นตอน ประเภทที่กำหนดขั้นตอนของปริศนาจะต้องใช้อินเตอร์เฟส ISTEP (TKEY) คุณสมบัติ Key มีวัตถุประสงค์สองประการ:
ขั้นตอนการเปรียบเทียบ ขั้นตอนจะถูกนำไปเปรียบเทียบซึ่งกันและกันตามคุณสมบัติ Key เพื่อพิจารณาว่าคะแนนใดดีกว่า การเปรียบเทียบสามารถทำได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้:
Key ขั้นตอนที่มีอยู่จากขั้นตอนขั้นตอนปัจจุบัน ข้อมูลขั้นตอนถัดไปสามารถให้ได้โดยการใช้อินเทอร์เฟซ INextStepFactory(TKey, TStep) หรือจัดหาตัวแทน NextStepFactory
หลังจากนั้นอัลกอริทึมสามารถเรียกใช้ได้โดยการเรียกใช้วิธี FindSolution ด้วยขั้นตอน from และขั้นตอน goal เป็นพารามิเตอร์ หากมีการแก้ปัญหาแต่ละขั้นตอนสามารถทำได้โดยการเรียกวิธี Enumerate ขั้นตอนสามารถ Reverse ก่อนที่การแจงนับจะเริ่มขึ้น
โครงการจัดทำ HeuristicComparer และ DiscreteHeuristicComparer สำหรับสถานการณ์การเปรียบเทียบขั้นตอนที่แตกต่างกัน
Key สามารถเปรียบเทียบกันได้โดยตรงโดยไม่มีฟังก์ชั่น H (n) ที่ชัดเจนโดยค่าเริ่มต้น DiscreteHeuristicComparer จะถูกใช้สำหรับการเปรียบเทียบขั้นตอนที่เร็วขึ้นHeuristicComparer จะถูกใช้เพื่อดำเนินการประมาณการแบบดั้งเดิม F (N) = G (N) + H (N) การแจกแจง HeuristicFunctionPreference ช่วยให้ผู้ใช้สามารถเปลี่ยนยอดคงเหลือของการประมาณค่า f (n) = g (n) + h (n) เมื่อสองขั้นตอนได้รับการประเมินคะแนนเดียวกันการแจงนับจะตัดสินใจว่าฟังก์ชันใด G (n) หรือ H (n) จะได้รับการพิจารณาก่อน ความสมดุลที่เปลี่ยนแปลงสามารถส่งผลกระทบต่อพฤติกรรมของอัลกอริทึมฮิวริสติก
การค้นหาเส้นทาง (Algorithmforce.example.Pathfinding)
ตัวอย่างแสดงให้เห็นถึงปริศนาที่พบบ่อยที่สุดและแบบดั้งเดิมที่ใช้อัลกอริทึมฮิวริสติกเพื่อแก้ปัญหา
8-puzzle (Algorithmforce.example.eightPuzzle)
ตัวอย่างแสดงให้เห็นถึงวิธีการแก้ปัญหา 8-puzzle ด้วยอัลกอริทึมฮิวริสติก ขั้นตอนเริ่มต้นและเป้าหมายของปริศนาแสดงด้านล่าง:
Coins Flipping Puzzle (Algorithmforce.example.coinsflipping)
ตัวอย่างนี้แสดงให้เห็นว่าเกม AI แก้ปริศนาการพลิกของเหรียญได้อย่างไร ในปริศนามีเพียงคู่ของเหรียญที่อยู่ติดกันเท่านั้นที่ได้รับอนุญาตให้พลิกในเวลาเดียวกัน ทั้งสิบเหรียญที่เป็นหัวหน้าคือเป้าหมาย ปริศนาได้รับแรงบันดาลใจจาก brially.org
ตัวอย่างเพิ่มเติมจะถูกเพิ่มในอนาคต
ปัจจุบันโครงการกำหนดเป้าหมาย. NET Core และ. NET Framework 4.5 หรือสูงกว่า