เคล็ดลับสำหรับบ็อต King of the Hill


12

คุณมีเคล็ดลับอะไรบ้างสำหรับการสร้างบอทเพื่อเข้าร่วมการแข่งขัน King of the Hill? คุณใช้กลยุทธ์อะไรในการพิจารณาความท้าทายในการสร้างบอทของคุณ โครงสร้างข้อมูลใดที่คุณคิดว่ามีประโยชน์มากที่สุด

กรุณาโพสต์หนึ่งเคล็ดลับต่อคำตอบ


16
ฉันรู้สึกว่าสิ่งนี้ขึ้นอยู่กับปัญหาที่เฉพาะเจาะจงมากเกินไป
คดีฟ้องร้องกองทุนโมนิก้า

@QPaysTaxes ฉันทำแบบจำลองนี้โดยตรงหลังจากคำถามเคล็ดลับอื่น ๆ มีวิธีแก้ไขปัญหานี้ให้ดีขึ้นหรือไม่? นอกจากนี้คำถามเคล็ดลับเก่าเหล่านั้นจำเป็นต้องได้รับการแก้ไขหรือไม่
mbomb007

คำถามเคล็ดลับที่เก่ากว่านั้นขึ้นอยู่กับภาษาเท่าที่ฉันสามารถบอกได้ซึ่งหมายความว่าเคล็ดลับนั้นเป็นสากล แต่คุณอาจไม่ได้ใช้ คำถามนี้คล้ายคลึงกับ "เคล็ดลับสำหรับการท้าทายกอล์ฟรหัส" ซึ่งขึ้นอยู่กับความท้าทายทั้งหมด อย่างไรก็ตามตามคำตอบด้านล่างนี้มีบางสิ่งที่เป็นสากล ฉันขัดแย้ง
คดีฟ้องร้องกองทุนโมนิก้า

2
ฉันคิดว่าสิ่งนี้ขึ้นอยู่กับคำถามที่เฉพาะเจาะจงเช่น "เคล็ดลับสำหรับการเล่นกอล์ฟใน (lang)" เพราะคุณใช้คุณสมบัติภาษาที่แตกต่างกันมากมายในความท้าทายที่แตกต่างกันอยู่แล้ว
Destructible Lemon

คำตอบ:


4

การค้นหาNash Equilibria

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

ตัวอย่างของเกมที่สมดุลของ Nash มีความสำคัญคือ:

  • Rock-Paper-Scissors (-Lizard-Spock) ซึ่งกลยุทธ์ "เหนือชั้น" คือการเล่นแบบสุ่ม
  • Morraซึ่งมี "สเปกตรัม" ของดุลยภาพ ปีเตอร์เทย์เลอร์เขียนเป็นตัวอย่างที่ดีในคำตอบของเขาที่นี่
  • Prisoner's Dilemma เป็นเกมสหกรณ์ที่น่าจับตามองว่า "ทุกคนสูญเสีย" gridlock

วิธีหาจุดสมดุล

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

ตัวอย่าง: Rock-Paper-Scissors

RPS มีบางสิ่งที่เรียกว่าดุลยภาพ "แบบผสม" ซึ่งหมายความว่ามีการแจกแจงที่เกี่ยวข้อง แทนที่จะเล่นแบบเดียวกันซ้ำ ๆ (ซึ่งจะนำไปสู่ความพ่ายแพ้อย่างรวดเร็ว) ความสมดุลคือการเล่นก้อนหินขนาด 1/3, 1/3 กระดาษและ 1/3 กรรไกรในการแจกแจงแบบสุ่ม ถ้าฉันเล่นแบบสุ่มไม่มีอะไรที่คู่ต่อสู้ของฉันสามารถทำได้เพื่อให้ได้เปรียบกับฉันระยะเวลา หากคู่ต่อสู้ของฉันเลือกที่จะไม่เล่นแบบสุ่มนั่นจะสร้างความอ่อนแอในส่วนของเขา

เกมที่มีความสมดุลแบบผสมนั้นเป็นเกมที่พบได้บ่อยที่สุดใน PPCG เนื่องจากพวกเขาสามารถเล่นได้หลายรูปแบบ ( เกมที่น่าสนใจเพียงเกมเดียวที่ฉันสามารถนึกถึงสมดุลที่แท้จริงคือภาวะที่กลืนไม่เข้าคายไม่ออกของนักโทษ) ฉันควรทราบว่าดุลยภาพที่ผสมกันนั้นไม่จำเป็นต้องมีการสุ่มอย่างสม่ำเสมอแต่อย่างใดนอกจากการเล่นแบบเดียวกันทุกครั้ง

ใช้ข้อมูลนี้

สมดุลของแนชของเกมมักจะหมายถึง "พื้นฐาน" ซึ่งคุณควรพยายามใช้งาน ใน RPS การเล่นแบบสุ่มรับประกันจุดสิ้นสุดรอบจุดกึ่งกลางของแพ็ค ในการย้ายไปด้านบนคุณต้องเริ่มระบุจุดอ่อนของผู้เล่นคนอื่น

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

การตรวจจับการเปลี่ยนแปลงจากสมดุล

มันค่อนข้างยากและฉันไม่ใช่ผู้เชี่ยวชาญ การเปลี่ยนแปลงสามารถมาได้หลายรูปแบบ:

  • เลือกใช้ตัวเลือกบางตัวที่สูงกว่าหรือต่ำกว่าโดยไม่มีเหตุผลเช่นผู้เล่น RPS ที่เล่นเพลงร็อคสองครั้งบ่อยเหมือนกรรไกรหรือคนที่หลีกเลี่ยงการเล่นกระดาษ สถิติที่ค่อนข้างง่ายบางอย่างสามารถตรวจจับสิ่งนี้ได้
  • การอ้างอิงการย้ายปัจจุบันออกจากการเคลื่อนไหวที่ผ่านมาในรูปแบบที่คาดการณ์ได้บางอย่าง ซึ่งรวมถึงแมวสำเนา "เต้นในสิ่งที่ชนะ" บอทสุดท้ายของคุณหรือบ็อต "ปั่นจักรยาน" ต้องใช้ตรรกะเพิ่มเติมในการตรวจจับเนื่องจากการกระจายการย้ายโดยรวมสามารถกระจายอย่างเท่าเทียมกันแม้ว่าการเคลื่อนที่จะไม่ได้สุ่ม คุณควรพยายามที่จะบันทึกการเคลื่อนไหวและหาความสัมพันธ์เช่น "การเคลื่อนไหวที่ฉันทำเมื่อ 2 ตาที่ผ่านมาและการเคลื่อนไหวของฝ่ายตรงข้ามที่ทำตอนนี้" และ "การเคลื่อนไหวที่เขาทำเมื่อ 1 รอบที่ผ่านมาและการเคลื่อนไหวที่เขาทำตอนนี้" ฯลฯ
  • บอทที่มีการกระจายการย้ายขึ้นอยู่กับคุณ ช่องโหว่ในบอทเหล่านี้มักจะไม่ได้สร้าง (ในปริมาณที่วัดได้) จนกระทั่งหลังจากที่คุณมีตัวเองแตกต่างกันจากการกระจายแบบสุ่ม โดยทั่วไปบอทของคุณจะอยู่ในหมวดหมู่นี้

3

เจาะจงเกี่ยวกับข้อกำหนดในการเรียกใช้ bot ของคุณ

บอตสามารถเขียนได้หลายภาษา (และเวอร์ชั่นของภาษาเหล่านั้น) ดังนั้นมันจะช่วยให้ทุกคนออกมาเมื่อคุณ

  1. ทดสอบในสภาพแวดล้อมที่ OP ระบุ (หรือใกล้เคียงที่สุดเท่าที่จะทำได้)
  2. ทดสอบในสภาพแวดล้อมอื่น ๆ ที่หลากหลายหากเป็นไปได้ (เพื่อช่วยเหลือผู้อื่นที่ต้องการเรียกใช้)
  3. เจาะจงเกี่ยวกับภาษาและเวอร์ชันที่คุณใช้และอธิบายวิธีเรียกใช้ bot ของคุณ

เป็นโบนัส: หากคุณใช้ภาษาที่ไม่ค่อยมีคนรู้จักให้ลิงก์ไปยังตำแหน่งที่ผู้คนสามารถดาวน์โหลดไบนารี / แหล่งที่มาเพื่อเรียกใช้


2

หากทำงานเป็นทีมให้ทำงานร่วมกับทีมของคุณ

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

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

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


2

ใช้กลยุทธ์เมตา

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

ปัญหาอีกประการคือกลยุทธ์ที่ดีในการคาดเดาคู่ต่อสู้ที่ฉลาดอาจอยู่ไกลจากการต่อสู้ที่ง่ายกว่า

คุณจะแก้ปัญหานี้อย่างไร คุณปล่อยให้บ็อตของคุณตัดสินใจได้ทันทีว่าจะใช้กลยุทธ์ใด!

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

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

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

แน่นอนว่าวิธีการนี้จะใช้ได้กับความท้าทายบางประเภทเท่านั้น มันไม่ดีจริงๆสำหรับฉันในการแข่งขันเป่ายิ้งฉุบ-Lizard-สป็อค ในเกมอื่น ๆ แทบจะเป็นไปไม่ได้เลยที่จะประเมินว่ากลยุทธ์บางอย่างจะมีอาการถ้าไม่ได้เล่นจริง

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


รวมถึงพฤติกรรมที่เป็นที่รู้จักของบ็อตอื่น ๆ ทั้งหมดลงในบอทของคุณเองไม่เพียง แต่ชายแดนในการโกงมันเป็นการโกง ฉันค่อนข้างแน่ใจว่ามันเป็นช่องโหว่ที่ไม่อนุญาต
mbomb007
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.