跳至主要内容

Dual-25:基因演算法策略

· 閱讀時間約 2 分鐘

Dual 25 是 Wiwi 在 睡前想到的紙牌對戰遊戲。(好玩!)

遊戲介紹

好想贏電腦

我(跟 LLM 互動)寫了一個固定策略,嘗試去贏過這個 MCTS 電腦。

接著再測試了一下對戰,以下是模擬結果:

  • 對戰場次:10000 場
    • ✅ 獲勝:5902 (59.0%)
    • 🤝 平手:1217 (12.2%)
    • ❌ 戰敗:2881 (28.8%)

(這樣應該還算不錯吧?)

試試看


訓練:基因演算法(GA)

  • 每種牌型定義 3 個權重參數:

    • 基礎參數base):該牌型的基礎分數
    • 牌型參數v):點數的權重,決定大牌還是小牌更優先
    • 危險參數danger):生命值越低時的傾向調整 = (25 - 當前生命值) / 25,範圍是 0~1
  • 每張牌會根據以下公式計算分數,分數最高的牌就會被選出:

    • attack = atk_base + v × atk_v + danger × atk_danger
    • counter = ctr_base + v × ctr_v + danger × ctr_danger
    • heal = heal_base + v × heal_v + danger × heal_danger
  • 訓練參數設定:

    • 族群大小:150 個個體
    • 演化世代:1000 代
    • 評估局數:每個體每世代評估 800 局
    • 評分機制:勝利 = 1.0 分,平手 = 0.5 分,失敗 = 0 分
    • 訓練對手:採用「隨機出牌」策略,這樣跑比較快(應該也比較不會 Overfitting?),不然用 MCTS 會訓練太久

額外補強

我最後再額外再加上「斬殺(lethal)」的概念。

  • 如果「反擊」或「攻擊」的數值高於對手的血量,則優先選擇斬殺(反擊優先)。
  • 如果有多張牌能斬殺,優先選擇點數小的牌做斬殺。