ฉันกำลังพยายามใช้อัลกอริทึม AI สำหรับ Bomberman ขณะนี้ฉันมีการทำงาน แต่ไม่ได้ใช้งานอย่างชาญฉลาดมาก (AI ปัจจุบันมีความคลั่งไคล้ในการวางระเบิด)
นี่เป็น AI ตัวแรกที่ฉันเคยลองใช้และฉันติดอยู่นิดหน่อย อัลกอริทึมที่ซับซ้อนมากขึ้นที่ฉันมีในใจ (คนที่ฉันคาดว่าจะทำให้การตัดสินใจที่ดีกว่า) จะซับซ้อนเกินไปที่จะแก้ปัญหาที่ดี
คุณมีเคล็ดลับทั่วไปอย่างไรในการใช้งาน Bomberman AI มีวิธีที่แตกต่างกันอย่างสิ้นเชิงในการทำบอททั้งการป้องกันหรือการรุกมากขึ้น?
แก้ไข: อัลกอริทึมปัจจุบัน
อัลกอริทึมปัจจุบันของฉันมีลักษณะดังนี้ (รหัสหลอก):
1) พยายามวางระเบิดแล้วค้นหาเซลล์ที่ปลอดภัยจากการวางระเบิดทั้งหมดรวมถึงที่วางไว้ หากต้องการค้นหาเซลล์นั้นให้วนซ้ำทั้งสี่ทิศทาง หากคุณสามารถหาเซลล์ที่แตกต่างที่ปลอดภัยและไปถึงมันได้ทันเวลา (เช่นหากทิศทางขึ้นหรือลงให้มองหาเซลล์ที่พบทางซ้ายหรือขวาของเส้นทางนี้) จากนั้นจะปลอดภัยที่จะวางระเบิดและย้าย ในทิศทางนั้น
2) หากคุณไม่สามารถค้นหาและปลอดภัยเซลล์ที่แตกต่างให้ลองวางระเบิดแล้วดูอีกครั้ง เวลานี้คุณจะต้องมองหาเซลล์ที่ปลอดภัยในทิศทางเดียวเท่านั้น (คุณไม่ต้องแยกจากมัน)
3) หากคุณยังไม่สามารถหาเซลล์ที่ปลอดภัยได้โปรดอย่าทำอะไรเลย
for $(direction) in (up, down, left, right):
place bomb at current location
if (can find and reach divergent safe cell in current $(direction)):
bomb = true
move = $(direction)
return
for $(direction) in (up, down, left, right):
do not place bomb at current location
if (any safe cell in the current $(direction)):
bomb = false
move = $(direction)
return
else:
bomb = false
move = stay_put
อัลกอริทึมนี้ทำให้บอทมีความสุขมาก (มันจะวางระเบิดบ่อยมาก) มันไม่ได้ฆ่าตัวเอง แต่มันมีนิสัยที่ทำให้ตัวเองอ่อนแอโดยการเข้าสู่จุดจบที่สามารถถูกบล็อกและฆ่าโดยผู้เล่นคนอื่น
คุณมีข้อเสนอแนะเกี่ยวกับวิธีที่ฉันจะปรับปรุงอัลกอริทึมนี้หรือไม่? หรือบางทีฉันควรลองทำสิ่งที่แตกต่างออกไปโดยสิ้นเชิง?
หนึ่งในปัญหาของอัลกอริธึมนี้คือมันมีแนวโน้มที่จะออกจากบ็อตที่มีเซลล์ที่ปลอดภัยเพียงไม่กี่ (บ่อยครั้งเพียงหนึ่ง) ที่มันสามารถยืนได้ นี่เป็นเพราะบอททิ้งร่องรอยการระเบิดไว้เบื้องหลังตราบใดที่มันไม่ได้ฆ่าตัวเอง
อย่างไรก็ตามการทิ้งร่องรอยของระเบิดไว้ด้านหลังทำให้มีสถานที่ไม่กี่แห่งที่คุณสามารถซ่อนตัวได้ หากผู้เล่นคนใดคนหนึ่งหรือบอทตัดสินใจวางระเบิดใกล้ ๆ คุณมันมักจะเกิดขึ้นว่าคุณไม่มีที่ซ่อนและตาย
ฉันต้องการวิธีที่ดีกว่าในการตัดสินใจว่าจะวางระเบิดเมื่อใด