クッキークリッカーの最適戦略

最近話題のこれ。
http://orteil.dashnet.org/cookieclicker/
ぼーと待ってるとクッキーが生産されます。貯まったクッキーを使って施設やバーチャンを買います。すると単位時間あたりクッキー生産量(CpS)が増えます。それでまた施設を買って、という倍々ゲーム。工場やら魔界への門やらタイムマシンやら反物質まで使ってクッキーの生産量が10^n倍になっていきます。
いかに短時間で、いかにCpSを倍々に増やすか、というゲーム。したがって戦略としては Log(CpS)の時間微分を最大にする、となります。
何かを購入する場合のコストがCost、CpSの増分がΔCpSとすると、Costだけクッキー貯めるには待ち時間Tw=Cost/CpS秒必要、購入すると Log(CpS)の増分はLog(1+ΔCpS/CpS)。したがって評価関数としては Log(1+ΔCpS/CpS)/Tw が使える。これが高い順番に購入していけばいい。
評価関数としてはもっと直感的に、そのペースで例えば1時間ほど増やし続けた場合のCpS複利で何倍になるかという量、
R(3600)=(1+ΔCpS/CpS)^(3600/Tw) が使える。
300 MCpSの場合に各施設のTwを横軸、R(3600)-1を縦軸にプロットした図。この図で上から選んでいけばいいけど、Tw=数時間というのもある。寝てる間につけっぱにしとくか、ババアポカリスプで楽しんで大当たりを使うか。


追記

上記は一手だけの評価で先読みはしてない。
例えば一時間待ちの手が最善という状況で、最善ではないけど時間のかからない手を先に打ち、CpSが微増して一時間の待ち時間が減るという状況があるかもしれない。
待ち時間がTa、CpSが1+Δa倍になる最善手があり、別の手は待ち時間Tb,倍率1+Δbになるとする。a,bの順でやった場合とb,aでやった場合の時間はTa+Tb/(1+Δa) と Tb+Ta/(1+Δb)。後者のほうが小さいという条件を計算すると結局、上の評価関数がbのほうが高いという条件になる。
先読みなしの最適化でグローバルな最適化までできてしまう。結構底が浅い。