examples¶
.ipynb は下表のファイル名リンクから Google Colab でそのまま開いて実行できる
(各ノートブック冒頭のリンクからも開ける)。ローカルで実行する場合は
pip install jpoke 後に Jupyter で開く。
01_getting_started/¶
導入(jpokeを初めて使う)
| ファイル | 内容 |
|---|---|
01_quick_start.ipynb |
Player.battle_against() / Battle.play_out() を使った最小構成のバトル実行 |
02_step.ipynb |
battle.step() によるターン進行、3vs3バトル |
03_custom_player.ipynb |
Player を継承した最小のカスタム方策(choose_command() / choose_selection() のオーバーライド) |
04_lethal.ipynb |
battle.calc_lethal() による致死率計算(攻撃回数・致死確率)の基本 |
05_cli_vs_ai.py |
jpoke.players.CLIPlayer を使い、標準入力でコマンドを入力しながら jpoke.players.MaxDamagePlayer と対戦する。対話入力のためColab非対応(.py) |
02_tree_search/¶
AI開発(MinimaxPlayer を継承した木探索AIのカスタマイズ)
| ファイル | 内容 |
|---|---|
01_evaluate.ipynb |
evaluate() のオーバーライドによる葉ノード(盤面)の評価方法のカスタマイズ |
02_fallback.ipynb |
fallback() のオーバーライドによる、探索できない局面での代替方策のカスタマイズ |
03_estimate_opponent.ipynb |
estimate_opponent_team() のオーバーライドによる、相手の未公開の技構成の毎ターン推定(型推定)と、それを踏まえた木探索 |
04_configure_sim.ipynb |
configure_sim() のオーバーライドによる、探索中だけ命中率・ダメージ乱数を固定する決定論化 |
03_lethal/¶
致死率・ダメージ計算
| ファイル | 内容 |
|---|---|
01_multi_hit.ipynb |
連続技(ヒット数指定)の致死率計算 |
02_multi_move.ipynb |
複数の技を組み合わせた(moves=[...])加算ダメージの致死率計算 |
03_merge_results.ipynb |
LethalHitResult どうしを足し合わせて複数の致死率計算結果を合成する方法 |
04_direct_manipulation.ipynb |
HP・能力ランク・状態異常・揮発性状態・場の状態を直接操作してから致死率計算するシナリオ検証 |
05_testing_helpers.ipynb |
jpoke.testing の start_battle() 等を使い、定型的なセットアップを短く書くショートカット |
04_others/¶
その他のトピック
| ファイル | 内容 |
|---|---|
logcode.ipynb |
LogCode の種類の確認方法(battle.get_event_logs(turn) によるログ種別の抽出) |
poke_env_style_player.ipynb |
poke-env互換プロパティ(battle.available_moves 等)を使った choose_command() の実装 |
pokedex.ipynb |
Pokemon.data を通した図鑑データ(持てる特性・覚えられる技など)の取得、ポケモン・アイテム・タイプの画像URL取得 |
pokeapi_utility.ipynb |
jpoke.utils.pokeapi によるPokeAPIのURL取得(get_pokeapi_url等)・画像ダウンロード(download_pokemon_image等) |
05_advanced/¶
戦術研究(発展)
03,04 のみColab非対応(重い並列処理・ロールアウト処理のため)。
Windowsで日本語ログが文字化けする場合は PYTHONUTF8=1 を指定する。
| ファイル | 内容 |
|---|---|
01_bulk_simulation.ipynb |
Player.battle_against() による多数回対戦・構成比較 |
02_replay.ipynb |
Battle.build_replay_data() / ReplayPlayer / replay_battle() によるリプレイの記録・再生 |
03_janken_nash_fictitious_play.py |
実バトルのモンテカルロ推定 + 反復最適反応(fictitious play)によるNash均衡(固定の混合戦略)の近似、ProcessPoolExecutor による並列化 |
04_janken_nash_cfr.py |
Battle.copy() を使ったロールアウトベースのregret matching(CFR風)による、HP状況に応じた適応的な戦略の自己対戦学習 |
03,04 は対戦セットアップ等の共通処理を _janken_common.py(単独では実行しない内部ヘルパー)に切り出して共有している。
99_dev/¶
開発用(計算速度の計測)
| ファイル | 内容 |
|---|---|
01_step_time_benchmark.py |
完全ランダムな3vs3全選出バトルを繰り返し実行し、Battle.step() 1回あたりの所要時間(mean ± σ)を計測。既定値は数分かかるため--n-battles等のコマンドライン引数で調整できる |