0

アルゴリズムに最適な3タプルパラメーターの組み合わせを見つけようとしています。考えられる組み合わせごとにいくつかの結果があります。現在、次の方法で、最初に成功数が最も多い順に各タプル(x、y、z)をレーキしています。

(x,y,z): ((1.0, 100 times), (0.8, 20 times), (0.5, 200 times), (0.0, 10 times))
(x1,y1,z1): ((1.0, 80 times), (0.9, 100 times), (0.5, 50 times), (0.0, 100 times))
(x2,y2,z2): ((1.0, 80 times), (0.9, 20 times), (0.5, 200 times), (0.0, 30 times))

...これは、タプル(x、y、z)の成功率が1.0 100倍、成功率が0.820倍などであることを意味します。

(x1,y1,z1)さて、このような並べ替えは単純なものであると思います。たとえば、失敗の数(0.0)と成功の数(1.0)が多いことを考慮していません。

これをどのように考慮に入れる必要がありますか?

4

1 に答える 1

1

答えはあなたの「最高」の定義に大きく依存します!常に0.8の成功を100%の確率で与えるアルゴリズム、または1.0の成功を80%の確率で、0.0の失敗を20%の確率で与えるアルゴリズム、またはあなたの目的に相当するアルゴリズムがありますか?

実行できる非常に単純なアプローチは、次のように結果の加重和になります。

rank = 0;
total_results = 0;
for each (success_rate, number_of_results_at_this_rate) in this_data; do
    rank += (success_rate * number_of_results_at_this_rate);
    total_results += number_of_results_at_this_rate;
done
rank = rank / total_results;

(もちろん、上記の例のように、total_resultsが常に一定である場合、これは単純化できます)

これにより、例として次のランクが得られます。

(x,y,z) = (100 + 16 + 100 + 0) / (100+20+200+10) = about 0.65
(x1,y1,z1) = (80 + 90 + 25 + 0) / (80+100+50+100) = about 0.59
(x2,y2,z2) = (80 + 18 + 100 + 0) / (80+20+200+30) = 0.6
于 2012-08-21T14:32:25.777 に答える