2026.09.23 泊まれる場所4,223 立ち寄りスポット59,693 営業中を確認したキャンプ場1,005 note を読む

おまかせ進行に、その日の得票を見るのをやめさせた

毎日いちばん効く手を選ぶAIは、一度も休まなかった。
休養はその日の票を1票も増やさないからだ。

選挙にGO!をつくる第9回 / 全24回目次

候補者モードの「おまかせで投票日まで進める」は、その日打てる手をひとつずつ試して、いちばん得票が伸びる手を選んでいた。
素朴だが、それなりに機能してはいた。問題は、死亡リスクと資金繰りを入れたあとで表に出てきた。

1手先しか見ないと、見えないものが3つある

打ち手の内訳を集計してみると、はっきりした癖があった。24回の行動のうち、「体調を整える」が一度も選ばれていない。
そうなる理由は明白だった。休養はその日の得票を1票も増やさない。1手先しか見ないAIにとって、休養は永久に「何も起きない手」でしかない。疲労を溜めて倒れる可能性は、今日の得票には現れないからだ。

同じ理屈で見落とされるものが、ほかにも2つあった。資金集めパーティーもそれ自体では票を増やさないが、中盤で資金を作っておけば終盤に効きの良い手が打てる。メディア出演は知名度を大きく伸ばす代わりにスキャンダルリスクを積み上げるが、その火が後半で吹き上がる確率もまた、今日の得票には現れない。

1手だけ試すのをやめ、投票日まで走らせる

そこで、比べ方そのものを変えた。手を1つ試して比べるのではなく、その手を打ったあと投票日までを一気に走らせて、行き着いた先どうしを比べるようにした。

問題は計算量だった。得票の見立てを取るには全国の開票シミュレーションを回す必要があり、これが重い。投票日まで走らせる途中でこれを毎回回すと、おまかせ進行が現実的な時間で終わらない。
解決策は、走らせる部分と評価する部分で精度を分けることだった。走らせている途中は開票を一度も回さず、得票を決める式と同じ重みで組んだ安上がりな見積もりで手を選ぶ。本物の開票シミュレーションは、行き着いた先を評価するときに1回だけ使う。

この形にすると、1つの手を評価するのに使う開票シミュレーションの回数は、1手先読みだったころと変わらない。射程だけが投票日まで伸びる。

比べる手のあいだで、運の差を消す

実装で一つ気をつけたのは、走らせるときの乱数だった。
選挙戦の途中では出来事が起こる。比べる手ごとに違う乱数を使うと、「たまたま良い出来事を引いた手」が高く評価されてしまい、手そのものの良し悪しを比べられなくなる。どの手を試すときも同じ種から乱数を作るようにして、差が手の違いだけから出るようにした。

新旧を同じ条件で戦わせて測ると、平均得票率は変わらなかった。だが最終的な疲労は78から47へ、スキャンダルリスクは30から24へ下がり、使い残した資金も減った。
同じ結果を、はるかに低いリスクで取りに行くようになった、ということだ。疲労47というのは過労死が立ち上がる閾値(70)の下で、つまり新しいAIは倒れない範囲で走り切ることを覚えた。打ち手の内訳を見ると、24回のうち10回を休養に充てていた。

ゲームを1本作るときの進め方を、noteにまとめています(書いているのは私です)。
noteで読む

まる子パパ

まる子パパ

会社員。受託開発のエンジニアを15年以上続けていて、その前は寿司職人・長距離運転手・農業。 技術ブログは、キャンプの合間に踏んだバグと、AI・Web開発の運用の失敗を書いています。 このサイト自体が、開発に携わっているCMS「コンテナ」の稼働中の実例です。 このサイトについて / 小さな自動化の相談

—

ほかにも書いています

受託・note・スタンプ

※受託の相談とnoteは、運営者が個人で受けている・書いているものです。

技術ブログ一覧へ戻る