โปรเจ็กต์นี้เป็นตัวอย่างการใช้แถบไลบรารีการวางแผนอัตโนมัติปัญญาประดิษฐ์ใน node.js
ลองออนไลน์ได้ที่ https://stripsfiddle.meteorapp.com
npm install strips
หากคุณยังใหม่กับการวางแผนอัตโนมัติ STRIPS นี่คือบทช่วยสอนที่ดีในการเริ่มต้นใช้งาน
ตัวอย่างต่อไปนี้แสดงวิธีแก้ปัญหาการวางแผนโดยการระบุชุดการดำเนินการที่เหมาะสมที่สุดเพื่อให้บรรลุเป้าหมาย ตัวอย่างเช่น การซ้อนบล็อก หอคอยแห่งฮานอย และแม้กระทั่งสตาร์คราฟต์ ก็สามารถแก้ไขได้โดย AI (ดูด้านล่าง ซึ่งค่อนข้างเรียบร้อยมาก!)
ตัวอย่างหลายรายการจากโดเมน Blocks World รวมอยู่ในโปรเจ็กต์นี้ ซึ่ง AI สามารถวางแผนชุดขั้นตอนในการย้ายและซ้อนบล็อกบนชุดตารางได้สำเร็จ
การวางแผน AI ทำงานโดยการประมวลผลโดเมนแบบง่ายโดยใช้แผ่นไวยากรณ์ PEG.js และดำเนินการผลลัพธ์โดยใช้ปัญหา STRIPS แบบง่าย
โดเมนและไฟล์ PDDL ปัญหาจะถูกแยกวิเคราะห์ผ่าน PEG.js ซึ่งสร้างออบเจ็กต์ JSON สำหรับโดเมนที่กำหนด จากนั้น JSON จะได้รับการประมวลผลเพื่อระบุการดำเนินการที่เกี่ยวข้องภายในสถานะของปัญหาที่กำหนด จากนั้นการดำเนินการจะถูกนำไปใช้กับสถานะปัจจุบัน ทำให้เกิดชุดสถานะใหม่ กระบวนการนี้ซ้ำแล้วซ้ำอีก โดยระบุการดำเนินการที่เกี่ยวข้องสำหรับสถานะใหม่ นำไปใช้ และสถานะใหม่ที่เกิดขึ้นเพิ่มเติม แผนผังผลลัพธ์ของสถานะและการดำเนินการที่เป็นไปได้อาจถูกสำรวจโดยใช้อัลกอริธึม A* เพื่อค้นหาชุดขั้นตอนที่เหมาะสมที่สุดเพื่อให้บรรลุสถานะเป้าหมาย ตามที่ระบุไว้ในปัญหา
โดเมน | ปัญหา ย้ายบล็อก a, b จากตาราง x ไปยังตาราง y อนุญาตให้ใช้หลายบล็อกบนโต๊ะ การดำเนินการเดียวที่ใช้ได้คือ "ย้าย"
โดเมน | ปัญหา ย้ายบล็อก a, b จากตาราง x ไปยังสแต็ก ab บนตาราง y อนุญาตให้ใช้หลายบล็อกบนโต๊ะ การดำเนินการที่ใช้ได้ ได้แก่ "move", "stack" และ "unstack"
โดเมน | ปัญหา Unstacks บล็อก ba จากตาราง x ไปยังสแต็ก ab บนตาราง y อนุญาตให้ใช้หลายบล็อกบนโต๊ะ การดำเนินการที่ใช้ได้ ได้แก่ "move", "stack" และ "unstack"
โดเมน | ปัญหา เรื่องสนุก! คลายสแต็กบล็อก ba จากตารางที่ 1 ไปยังสแต็ก ab บนตารางที่ 3 อนุญาตให้มีเพียงหนึ่งบล็อกหรือสแต็กบนโต๊ะ AI จำเป็นต้องวางแผนสำหรับการย้ายบล็อกชั่วคราวไปที่ตาราง 2 ในขณะที่กำลังตั้งค่าลำดับที่ถูกต้องสำหรับการซ้อนบนตารางที่ 3 การดำเนินการที่ใช้ได้ ได้แก่ "ย้าย" "สแต็ก" และ "แยกสแต็ก"
บล็อกจะซ้อนกัน ab บนตารางที่ 1 เป้าหมายคือการซ้อน ab บนตารางที่ 2 อนุญาตให้บล็อกหรือสแต็กได้เพียงหนึ่งบล็อกต่อตาราง นี่คือแนวทางแก้ไข
*** Solution found in 6 steps!
1. unstack a b t1 t2
2. move b t1 t3
3. move a t2 t1
4. move b t3 t2
5. move a t1 t3
6. stack a t3 b t2
*** Solution found in 5 steps!
1. unstack a b t1 t2
2. move b t1 t3
3. move a t2 t1
4. move b t3 t2
5. stack a t1 b t2
*** Solution found in 5 steps!
1. unstack a b t1 t2
2. move a t2 t3
3. move b t1 t2
4. move a t3 t1
5. stack a t1 b t2
*** Solution found in 4 steps!
1. unstack a b t1 t2
2. move a t2 t3
3. move b t1 t2
4. stack a t3 b t2
*** Solution found in 4 steps!
1. unstack a b t1 t3
2. move b t1 t2
3. move a t3 t1
4. stack a t1 b t2
*** Solution found in 3 steps!
1. unstack a b t1 t3
2. move b t1 t2
3. stack a t3 b t2
นี่คือโซลูชันของ AI สำหรับ Blocks World Sussman Anomaly
*** Solution found in 3 steps!
1. unstack2 c a x
2. stack2 b c x
3. stack3 a b c x
ตอนนี้เพื่อความสนุกสนาน นี่คือโดเมนสตาร์คราฟต์ งานคือการสร้างค่ายทหาร เดิมทีฉันต้องการสร้างแบทเทิลครุยเซอร์ แต่นั่นใช้เวลานานเกินไป (โดยไม่ต้องค้นหาตามหลักฮิวริสติก!)
*** Solution found in 8 steps!
1. move scv sector-a mineral-field-b
2. collect-minerals scv mineral-field-b
3. move scv mineral-field-b sector-b
4. build-supply-depot scv sector-b
5. move scv sector-b mineral-field-a
6. collect-minerals scv mineral-field-a
7. move scv mineral-field-a sector-a
8. build-barracks scv sector-a sector-b
ก้าวไปอีกขั้นหนึ่ง นี่คือโซลูชันของ AI สำหรับการฝึกเดินทะเล
- Solution found in 11 steps!
1. move scv sector-a mineral-field-a
2. collect-minerals scv mineral-field-a
3. move scv mineral-field-a sector-b
4. build-supply-depot scv sector-b
5. move scv sector-b mineral-field-b
6. collect-minerals scv mineral-field-b
7. move scv mineral-field-b sector-a
8. build-barracks scv sector-a sector-b
9. move scv sector-a mineral-field-c
10. collect-minerals scv mineral-field-c
11. train-marine scv sector-a
เอ็มไอที
คอรี เบกเกอร์ http://www.primaryobjects.com/kory-becker