ポケモンバトルAI
テツポンドさん主催の仲間大会「おきみやげ1on1」を対象に、LLMコーディングエージェント(Codex CLI)とポケモン対戦シミュレータを連携させ、パーティ自動構築を全自動で回す仕組みを作った記録です。part01(ChatGPTでの事前検討)では、Webベースの対話A…
テツポンドさん主催の「おきみやげ1on1」を、AIを用いて考察するシステムを開発します。 今回の目標は「ルールだけを入力して、最適なパーティ(混合戦略ナッシュ均衡の近似)を自動で設計する仕組み」を作ることです。従来の「いやしのはどう1on1」「いかり…
先日、Simão Reis氏が主催するポケモン風ゲームAIのコンペティション「VGC AI Competition」の提出締切を迎えました。これは、参加者が開発したAI(プログラム)同士を対戦させて勝敗を決めるというものです。IEEE CoG(ゲームを扱う国際的な学術会議)内の…
いかりのまえば1on1で実際に使用されたパーティをXからできるだけ抽出し、シミュレータに投入してみました。 特別な知見は得られませんでしたが、結果を残しておきます。 ルールや事前分析は過去の記事を参照。 select766.hatenablog.com select766.hatenabl…
マーク(@masa233666)さん主催の「いかりのまえば1on1」をシミュレーションを用いて考察します。 【仲間大会のお知らせ】7月25日(金)に初の仲間大会を開催します。技縛りの特殊ルールです。沢山の方に参加していただけると嬉しいです。詳細は添付画像で!#…
ポケモンバトルの仲間大会*1にて、テツポンドさん主催の「いやしのはどう1on1」が開催されました。 私がこれに参加するにあたり、計算機によるシミュレーションを用いてどんなポケモンが強いか考察したので、その結果と手法を示します。 動機 私は以前よりポ…
技術書典18は2025年5月31日から6月15日まで開催される技術系同人誌の頒布イベントです。特に、6月1日は池袋サンシャインシティでオフラインで頒布があります。当サークル「ヤマブキ計算所」はオフライン参加します!場所は「せ07」です。コロナ禍以降初のオ…
「ポケモンの見せ合い選出のナッシュ均衡」シリーズでは、ポケモンバトルにおける見せ合い選出を実現するアルゴリズムを検討し、そのアルゴリズムが利用される前提で、前段階に当たるパーティ構築までを最適化しました。 ポケモンバトルは、以下の3ステップ…
パーティ構築の6回目です。 以下のステップで進める予定です。 ランダムに構築したパーティ候補100個のうち最適なパーティを抽出する ランダムに(ポケモンの種族・技を)生成したポケモン100体から3体選び、パーティを構築する あらゆるポケモン・技の組み…
パーティ構築の5回目です。 以下のステップで進める予定です。 ランダムに構築したパーティ候補100個のうち最適なパーティを抽出する ランダムに(ポケモンの種族・技を)生成したポケモン100体から3体選び、パーティを構築する(前回) あらゆるポケモン・…
パーティ構築の4回目です。 以下のステップで進める予定です。 ランダムに構築したパーティ候補100個のうち最適なパーティを抽出する ランダムに(ポケモンの種族・技を)生成したポケモン100体から3体選び、パーティを構築する(今回) あらゆるポケモン・…
パーティ構築の3回目です。 以下のステップで進める予定です。 ランダムに構築したパーティ候補100個のうち最適なパーティを抽出する(続き) ランダムに(ポケモンの種族・技を)生成したポケモン100体から3体選び、パーティを構築する あらゆるポケモン・…
パーティ構築の2回目です。 以下のステップで進める予定です。 ランダムに構築したパーティ候補100個のうち最適なパーティを抽出する(続き) ランダムに(ポケモンの種族・技を)生成したポケモン100体から3体選び、パーティを構築する あらゆるポケモン・…
前回まで、2つのパーティを見せ合ってポケモンを選出するフェーズについて考察しました。選出のアルゴリズムとしてナッシュ均衡に基づく混合戦略を用いたうえで、2つのパーティの優劣を勝率(利得)として求めることができました。 今回から、最適なパーティ…
前回、選出アルゴリズムに様々なパーティを操作させ、選出アルゴリズムの優劣を定量的に比較しました。 今回は逆に、パーティを軸にし、選出アルゴリズムによってその強さがどう変化するか観察します。 評価方法 選出アルゴリズムにナッシュ均衡を用いて、パ…
前回、いくつかのパーティの組み合わせに対して、ナッシュ均衡に基づく選出とランダムな選出を定性的に比較し、様々なケースがあることを確認しました。 今回は、選出アルゴリズムを定量的に比較します。 パーティ集合 (各パーティは、3体のポケモンを含む) …
前回はじゃんけんのような答えが自明の例でナッシュ均衡の計算を行うことにより、Nashpyに入門しました。 今回は、実際のパーティにおける見せ合い選出に適用し、挙動を確認します。 ナッシュ均衡が純粋戦略となる例 次のような2つのパーティの対戦を考えま…
今回は、ナッシュ均衡を求めるライブラリであるNashpyに入門します。 見せ合いで3体から1体を選出する際の最適戦略は、お互いが最善を尽くす場合、ナッシュ均衡が解となります。 ナッシュ均衡は、自分以外のプレイヤーの戦略が与えられた時、自分の戦略を変…
久しぶりのポケモンバトルAIの話題です。3年ほど空いてしまいましたが続けていきます。 ポケモンバトルのうちシングルバトルの典型的なルールでは、一般に6体のパーティを対戦相手に見せて、そのうち3体を対戦に選出します。何を選出したかは、ポケモンが実…
技術書典13は2022年9月10日から9月25日まで開催される技術系同人誌の頒布イベントです。当サークル「ヤマブキ計算所」はオンラインマーケットのみ参加です。 新刊はありませんが、2020年9月に発行したポケモンバトルAI本第4巻に、約30ページの加筆を行いまし…
前回は原始モンテカルロ法というもっとも単純な探索手法を試しました。原始モンテカルロ法では、ルート局面(行動を決定したい局面)でとれる行動それぞれについて、その行動をとった直後の局面からランダムにゲームを進めた際の勝率を比較して行動を決定し…
ゲーム木探索を用いたポケモンバトルAIの最も単純なアルゴリズムとして、原始モンテカルロ法を試します。 前回から長らく期間が空いてしまいましたが、再開していきます。 アルゴリズム ここでは原始モンテカルロ法(pure Monte Carlo search)を試します。 原…
前回、パーティ生成と学習の反復により、各反復で生成されるパーティが定性的に改善されていることを確認しました。 今回は、各反復での学習結果で上位100パーティを抽出し、反復10回分のパーティを混合した1,000パーティでレーティングバトルさせます。反復…
3vs3バトルでの強化学習とパーティ生成の実装が完成したので、1vs1バトルの時と同様、これらを交互に動作させて強いパーティとその適切な運用法を学習します。 実験条件 アルゴリズム自体は1vs1の時と変わりません。 select766.hatenablog.com 反復回数 10 …
1vs1バトルの時と同様に、強化学習の結果得られる、行動ごとの価値の期待値を表すQ関数を用いて強力なパーティを生成することを試みます。 手法 手法は1vs1バトルの時のものを応用し、3vs3対応のための変更を行います。 select766.hatenablog.com 3vs3対応の…
強化学習はアルゴリズムが正しくてもハイパーパラメータ設定により性能が大幅に変わってきます。1vs1バトル環境において、optunaによる調整を行ったところ学習率が最も大きな要素であることがわかりました。 しかしこのパラメータのまま3vs3バトル環境へ適用…
今回も強化学習の改善を目指します。ポケモンバトルの強化学習の特徴的な要素として、バトル開始時にエージェントに操作すべきパーティが割り当てられるという点があります。バトルごとに異なるパーティが割り当てられ、相手のパーティとの関係性により有利…
モデルの強化学習におけるバトル数は、1vs1の時のパラメータを引き継いで10万に設定していました。3vs3ではそもそもバトル1回あたりのターン数が違うこと、学習すべき行動がより複雑であることから、この値が適切なのかどうか検証しました。 バトル数を10万…
前回エージェントの強化学習に対して、バトル途中でのHPの増減などに応じた補助報酬を導入し、定量的には強さが向上することを確認しました。 今回は、補助報酬の大きさなどを調整してさらに強くできないか実験します。あらかじめ結果を述べると、前回のパラ…
前回バトルログを可視化してわかったのは、学習したエージェントの行動でタイプ相性などがある程度考慮されているものの、まだまだ改善の余地が大きいということでした。 この記事から、強化学習手法の改善を試みていきます。 今回は、初代ルールの3vs3のと…