ボートレースAIを3日間自動運転してみた|Stage 6で見えた課題と改善

ボートレースAI開発

ボートレースAIの自動予想システムについて、今回は3日間の自然運転テストまで進みました。

今回の目的は、予想ロジックを変えることではありません。

現在の戦略や購入基準は固定したまま、毎日の運用を人の操作なしで安全に動かせるかを確認しました。

  • 3連複
  • AI予想上位3艇
  • confidence:top1_gap
  • 購入基準:11.02以上
  • strategy:trio_top3_top1_gap_fixed_v1
  • score:explainable-score-v1

Stage 5.8で完全自動接続に成功

8月16日には、当日のレーススケジュール取得から対象レースの自動選定、レース専用のLaunchAgent登録、対象時刻での自然起動、AI予想、PURCHASE / SKIP判定までを、人が途中で操作せずに通すことができました。

06:30 当日のレーススケジュール取得
↓
06:35 対象レースを自動選定
↓
レース専用のLaunchAgentを自動登録
↓
対象時刻に自然起動
↓
AI予想
↓
PURCHASE / SKIP判定

この日の下関12Rでは、AI上位は1・3・2号艇、3連複は1=2=3、top1_gapは13.42でした。購入基準11.02を上回ったため、システムはPURCHASEと判定しました。

その後、人の確認を挟んで結果を評価したところ、結果は1-2-3で的中。100円を仮想投資した場合、払戻350円、収支+250円となりました。

対象レースの選定から予想、PURCHASE / SKIP判定までを自動で通せたことが大きな確認ポイントでした。

3日間の自然運転テストへ

Day1|8月19日 下関12R

top1_gapは2.05。購入基準11.02を下回ったため、判定はSKIPでした。予定時刻に正常に実行され、判定も保存されました。

Day2|8月20日 大村12R

AI上位は1・3・4号艇、top1_gapは9.58。こちらも購入基準11.02未満のためSKIPです。

実際の結果は1-3-4でした。「買っていれば当たっていた」という結果ではありますが、後から判定を変えることはしていません。

Day3|8月21日 大村12R

AI上位は3・1・2号艇、top1_gapは1.70。この日も判定はSKIPでした。

締切前のAI判定までは正常に保存されています。なお、この日は実際の着順・払戻を使った的中確認は行っていません。

自動運転が正常に完了したことと、予想結果の評価は別に管理しています。

自動運転で見つかった「時刻」の問題

当初は本番判定時刻の20秒前から準備を開始していましたが、通信や処理時間によっては判定時刻を超えてしまうケースがありました。

そこで現在は、本番判定の60秒前から準備を開始するように変更しました。これは予想基準を変えたわけではありません。

LaunchAgentの早期起動にも対応

同じ予定分の中で少し早く起動
→ 正しい時刻まで待機

明らかに異常な早期起動
→ 処理を中止

という安全処理を追加し、macOS側の起動仕様による数秒のズレを吸収できるようにしました。

Stage 6はFINAL GO

3日間の自然運転を終え、Stage 6はSTAGE_6_FINAL_GOとなりました。

ここまでで、対象レースの自動選定、race-specific LaunchAgentの登録、自然起動、時刻制御、PURCHASE / SKIP保存、二重実行防止、DB整合性、人による結果評価との分離を確認できました。

ただし、これで正式Forward Testをすぐ始めるわけではありません。

次に必要なのは、これまでのテストデータと、これからの正式成績を混ぜないことです。

まとめ

今回の3日間テストでは、予想ロジックそのものではなく、毎日安全に自動実行するための運用部分を確認しました。

今は、「毎日同じルールで、正しい時刻に、安全に動く」ことを一つずつ確認しています。

次回は、これまでのテスト結果と正式Forward Testの成績を混ぜないために追加した、campaignとSHADOW運用について紹介します。

次回:ボートレースAIのテスト結果と本番成績を分ける仕組みを作りました

コメント

タイトルとURLをコピーしました