以下を本文として登録する。
ボートレースAIの自動化を進めてきましたが、今回ようやく大きな節目まで来ました。
これまでは、レースを選ぶ仕組みと、選んだレースを予想する仕組みが、それぞれ別々に動いていました。
今回、この2つが初めて一本につながりました。
つまり、その日の候補レースを自動で選び、決められた時間になると予想まで自動で進むところまで確認できたことになります。
これまでは「選ぶ」と「予想する」が別だった
前回の記事では、その日のレースの中から、システムが候補を自動で絞り込む仕組みについて紹介しました。
ただ、この時点ではまだ、候補レースを選ぶところまででした。
選ばれたレースについて、実際の予想処理を動かすための設定は別の処理として扱っていました。
つまり、
レースを選ぶ仕組みは動いた。
予想する仕組みも動いた。
でも、その2つはまだ完全にはつながっていない。
という状態です。
今回、その最後の接続部分を実装しました。
8月16日、初めて全部が自動でつながった
2026年8月16日。
この日は、朝からシステムが通常どおり動き始めました。
まず06:30に、その日のレース情報を自動取得します。
その後06:35に、保存されたスケジュールを使って候補レースを自動で抽出しました。
そこからさらに、選ばれたレース専用の実行設定まで自動で作成します。
そして対象時刻になると、その設定から予想処理が自然起動しました。
流れを簡単にすると、
当日のレース情報取得
→ 候補レース自動選定
→ 予想用設定を自動登録
→ 指定時刻に自然起動
→ 直前情報取得
→ AIスコア計算
→ PURCHASE / SKIP判定
となります。
今回初めて、「レース選びから予想保存まで」が一本につながりました。
この日選ばれたのは下関12R
8月16日に自動選定されたのは、下関12Rでした。
AIの予想順位は次のとおりです。
- 1位:1号艇 88.04
- 2位:3号艇 74.62
- 3位:2号艇 71.47
- 4位:5号艇 62.75
- 5位:4号艇 61.74
- 6位:6号艇 53.14
現在使っている予想方式では、AIの上位3艇を使って3連複を判定します。
そのため今回の買い目候補は、
1=2=3
です。
購入判定に使っているtop1_gapは、13.42でした。
現在の固定基準は11.02です。
基準を上回ったため、判定は、
PURCHASE
となりました。
PURCHASEでも舟券は自動で買っていない
ここは誤解されやすいところです。
現在のPURCHASEは、「AIが購入対象と判断した」という意味です。
実際にインターネット投票で舟券を購入しているわけではありません。
予想システムとして、
「この条件なら買う」
という判断を保存しています。
現在はまだ、実際の舟券自動購入機能は使っていません。
PURCHASEが保存されたところで、自動処理はいったん停止します。
判定は結果が出る前に保存されている
今回、特に重要だったのはここです。
PURCHASEの判定時刻は、
22:18:00.415
でした。
決めている判定時間内に正常に保存されています。
つまり、レース結果を見てから予想を作ったわけではありません。
先に予想と購入判定を保存し、その後に公式結果を確認しています。
この順番を守ることは、今後AIの実力を正しく検証していくうえで非常に重要です。
結果を見たあとに、
「この予想なら当たっていた」
と作り直してしまえば、Forward Testにはなりません。
そのため、予想システムでは事前判定を保存したあと、その内容を変更しない運用を続けています。
結果は3連複的中
公式結果は、
1号艇-2号艇-3号艇
でした。
3連複は、
1=2=3
です。
保存されていた買い目候補と一致しました。
払戻は350円。
検証上の投資額は100円なので、
+250円
という結果になりました。
もちろん的中したこと自体はうれしい結果です。
ただ、今回の開発で一番重要なのは的中そのものではありません。
人が途中で操作せず、結果が出る前に予想判定まで正常に保存できたこと。
こちらの方が、開発としては大きな意味があります。
AIが「勝ちそうなレース」を選んでいるわけではない
今回、「AIがレースを自分で選んだ」と書くと、
一番当たりそうなレースをAIが探しているの?
と思うかもしれません。
現在は、まだそこまでは行っていません。
今の自動選定は、安全に予想テストを実行できるレースを探す仕組みです。
例えば、
- 締切まで十分な時間がある
- まだ予想判定されていない
- 結果が出ていない
- 同じレースを二重処理しない
- 当日のデータ取得が正常に終わっている
といった条件を確認しています。
条件を満たすレースを最大3件まで候補にし、その中から時間的に余裕のある1レースを選んでいます。
つまり現段階では、
予想精度でレースを選ぶのではなく、運用上安全なレースを選んでいる
ということです。
予想方法は変更していない
今回、自動化部分はかなり進みました。
ただし、予想ロジックそのものは変更していません。
現在の固定条件は、
- 3連複
- AI予想上位3艇
top1_gap- threshold 11.02
です。
今回のAI順位は、
1 → 3 → 2
でした。
それでも現在は3連複なので、
1=2=3
として扱います。
3連単については興味のあるテーマですが、今の検証途中で混ぜると結果の意味が分からなくなってしまいます。
そのため、別の研究テーマとして扱う予定です。
次はいよいよStage 6へ
今回の完全接続成功を受けて、次はStage 6へ進みます。
Stage 6では、新しい機能をどんどん追加する予定ではありません。
目的はもっと地味です。
今作った仕組みが、数日間続けて本当に安定して動くのか。
そこを確認します。
例えば、
- 朝のデータ取得が自然起動するか
- 候補レースを正常に選べるか
- 予想用設定を二重登録しないか
- 指定時刻に予想が動くか
- PURCHASE / SKIPが正常保存されるか
- DBに異常が出ないか
- 一時ファイルが残らないか
といった部分を見ていきます。
1回成功しただけでは、まだ「完成」とは言えません。
数日間続けて動いて、初めて日常運用に近づいてきます。
今回のまとめ
今回の開発で、
その日のレース情報を取得する
→ レースを自動で選ぶ
→ 予想用設定を作る
→ 時間になったら自動で予想する
→ PURCHASE / SKIPを保存する
ところまで一本につながりました。
8月16日の下関12Rでは、結果的に3連複も的中しました。
ただ、今回の本当の成果は的中ではありません。
結果を見る前にAIの判断が保存され、それを後から公式結果で評価できたこと。
そして、
その一連の流れを人の操作なしで動かせたこと。
ここが今回いちばん大きな進歩です。
次回は、いよいよStage 6。
この自動運用が数日間続けて安定するのか。
そこを検証していきます。


コメント