• 締切済み

高確率な設定値をいち早く見つける方法

こんにちは。 現在オートレースの予想ソフトを作成しています。 当選確率の最も高い設定値を導き出す為に、シミュレーションをかけ、過去のレースから 予想を立てています。 質問は、一番当たる確立の高い設定値を一番早く決める方法で悩んでいます。 処理数が膨大な為、何か良い方法が無いか教えていただきたいのですが。 詳細を下記に記述します。 Excel2010のVBAを使い計算処理をしています。 例えば     A      B     C      D     E     F   試走Time ハンデ 走路温度 走路状況 レース場 合計 1   50     30    25     40     55    200 2   45     40    30     50     25    190 3   30     35    50     20     15    150 :    :     :     :      :      :     : 一番左の数字はレーサーの人数です。(レーサーは1レース8人で行います) 各項目の数値はPointです。Pointは各項目に対しての1着率をPoint化しています。 (Pointは1~100の数値で指定) 1レースをPoint化するのに約10秒掛かります。 このように各項目に対しポイントを付け、合計値の一番高い人が有力と判断する仕組みです。 その仕組みで、過去のレースを振り返り、当たるかどうかを検証し、当選確率を計算します。 しかしながら、全ての項目(列)を均等にPoint化しても確立はあまりよくなりません。 そこで、項目のPoint値を変動できるようにレベル化します。 例 Racer1の試走Timeの[50]ポイントを重視したい場合、レベルの調整(%)で上下できるようにする。(50Pointの25%アップで62.5Pointのように。) そして、再度過去のレースを検証します。 レベルの調整を行い、過去のレース結果を元に、各項目のレベルがどの数値になれば一番当選確率が高いのかを導き出したいのですが。 1レース10秒×10000件 さらにそのレベル検証となり、処理時間は膨大です。 いち早く最適なレベル設定を探る方法は無いでしょうか?

みんなの回答

  • stomachman
  • ベストアンサー率57% (1014/1775)
回答No.2

> 一番左の数字はレーサーの人数です。(レーサーは1レース8人で行います) ってあたり、さっぱり意味が分からないんですが、詳細はどうでもいいでしょう。ともあれ: 1レース10秒×1万件のデータの作成はがんばってやってもらうしか無い。しかし、「レベル検証」の部分はイッパツで解決できます。 ●第i行の項目jの「ポイント」をp[i,j]と書くことにし、 ●項目jの「レベル」をx[j](ただし、x[j] = (レベルの調整(%)÷100)+1)とし、 ●分かっている結果のポイントをy[i]とします。  すると「予想」と「結果」との食い違い、すなわち誤差は ε[i] = y[i] - Σ(p[i,j] x[j]) (Σは全項目j = 1,2,... についての総和) です。これを使って、全体としての予想能力の悪さを E = Σ(ε[i]^2) (Σはすべての行i=1,2,...,10000 についての総和) で測る。そうすると、『Eを最小にするようなx[j] (j= 1,2,...)を求める』という問題として定式化できます。  これは「線形最小二乗法」(あるいは「線形最小自乗法」)の問題。このキーワードで調べれば「正規方程式」を使った解法がみつかりますよ。Excelでも(マクロや特殊なメニューを使わず、普通に)表計算の機能を使って計算できます。

AutoRacer
質問者

お礼

おはようございます。 質問に答えてくださり、ありがとうございます。 難しい式ですが、頑張って理解して取り組んで見たいと思います。 ありがとうございました。

  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

この質問内容だけでは、どんな計算をすればいいかなんて誰にも分からないでしょう。 処理時間だけの問題なら、EXCELではなくてコンパイル型言語を使ってみてはどうですか。

関連するQ&A