1 ポイント 投稿者 GN⁺ 2024-11-04 | まだコメントはありません。 | WhatsAppで共有

LANパーティー

  • 16年間、毎年友人たちとLANパーティーを開催してきた。
  • パーティーは4~5日間行われ、最大12人が参加する。
  • 主にDota 2をプレイするが、Counter-StrikeやWarcraft 3などさまざまなゲームも楽しむ。
  • チーム分けが難しかったため、自動化システムを開発することになった。

Dota 2

  • Dota 2は5v5で行われ、バランスの悪いチームはゲームの面白さを損なう。
  • 参加者の実力差が大きく、チーム分けが難しい。

チームの選び方

  • 2人のリーダーが交互にメンバーを選んでいく方式を使っていた。
  • しかしこの方式は時間がかかり、似たようなチームが頻繁にできて退屈だった。

手動でのチーム分けの問題点

  • 時間がかかり、退屈になる。
  • 似たようなチームが頻繁にできる。
  • リーダー役をやりたがる人がいない。
  • バランスの悪いチームが頻繁にできる。

コードで解決する

  • データ収集後、ColabでEloレーティングシステムを使ってチームを自動生成した。
  • 各プレイヤーは1000 Eloポイントから始まり、勝利すると20ポイントを獲得し、敗北すると20ポイントを失う。

改善 1: データを複数回通す

  • Eloシステムでは、より高いEloを持つプレイヤーに勝つと、より多くのポイントを得られる。
  • データを複数回通してEloを計算する。

改善 2: MLモデルのようにする

  • Eloをモデルとして使い、チームの勝率を予測する。
  • L2損失関数を定義し、バックプロパゲーションによってモデルを最適化する。

改善 3: 過去の結果を確率的にする

  • 過学習を防ぐため、過去のゲームの勝率を75%または95%に設定する。
  • これにより、モデルがすべてのゲームを丸暗記するのではなく、汎化できるようにする。

結果

  • 新しいシステムは、チーム人数のバランスが悪い場合でも勝率を予測できる。
  • 次のLANパーティーに向けた最初のラインナップが準備できた。

まだコメントはありません。

まだコメントはありません。