Hello Ed:
I worked a little in an own method which could be unsound but gives some results that may suit your needs:
Code: Select all
For each i-th opening move:
n_i = w_i + d_i + l_i
µ_i = (w_i + 0.5*d_i)/(w_i + d_i + l_i)
q_i = µ_i * (n_i)^a
Weight_i = q_i / SUM(q_i) // SUM(Weight_i) = 100%
Using your input values with different values of
a, I get the following results with the help of Excel:
Code: Select all
Opening Book : books\elo2700.bin
Positions : 716.101
Book Weight Score Depth Learn Total Won Draw Loss Perc WD WDL
e2e4 41.93% 0 0 0 6456 1833 3415 1208 54.84% 41.92% 30.27%
d2d4 37.19% 0 0 0 5727 1607 3067 1053 54.83% 37.19% 27.09%
g1f3 12.23% 0 0 0 1899 567 932 400 54.39% 12.23% 8.22%
c2c4 7.00% 0 0 0 1092 314 555 223 54.16% 7.00% 4.78%
b2b3 0.78% 0 0 0 120 45 40 35 54.16% 0.77% 0.39%
g2g3 0.56% 0 0 0 72 35 25 12 65.97% 0.56% 0.46%
f2f4 0.11% 0 0 0 14 7 5 2 67.85% 0.11% 0.09%
b1c3 0.10% 0 0 0 19 5 6 8 42.10% 0.09% 0.00%
d2d3 0.03% 0 0 0 3 3 0 0 100.00% 0.03% 0.03%
b2b4 0.02% 0 0 0 3 2 0 1 66.66% 0.02% 0.01%
a2a3 0.01% 0 0 0 3 1 1 1 50.00% 0.01% 0.00%
a2a4 0.01% 0 0 0 1 1 0 0 100.00% 0.01% 0.01%
Totals 15409 4420 8046 2943
Code: Select all
a = -10.0 a = -5.0 a = -2.0 a = -1.0
Move Weight Weight Weight Weight
====================================================
e2e4 0.00% 0.00% 0.00% 0.00%
d2d4 0.00% 0.00% 0.00% 0.01%
g1f3 0.00% 0.00% 0.00% 0.02%
c2c4 0.00% 0.00% 0.00% 0.03%
b2b3 0.00% 0.00% 0.00% 0.25%
g2g3 0.00% 0.00% 0.01% 0.51%
f2f4 0.00% 0.00% 0.28% 2.68%
b1c3 0.00% 0.00% 0.09% 1.23%
d2d3 0.00% 0.41% 8.92% 18.44%
b2b4 0.00% 0.27% 5.95% 12.29%
a2a3 0.00% 0.20% 4.46% 9.22%
a2a4 100.00% 99.12% 80.29% 55.33%
---------------------------------------------------
SUM 100.00% 100.00% 100.00% 100.00%
Code: Select all
a = -0.5 a = 0.0 a = 0.1 a = 0.2
Move Weight Weight Weight Weight
================================================
e2e4 0.25% 7.17% 11.35% 16.26%
d2d4 0.27% 7.17% 11.21% 15.88%
g1f3 0.46% 7.11% 9.96% 12.63%
c2c4 0.61% 7.08% 9.38% 11.26%
b2b3 1.83% 7.08% 7.52% 7.24%
g2g3 2.88% 8.62% 8.71% 7.96%
f2f4 6.72% 8.87% 7.60% 5.90%
b1c3 3.58% 5.50% 4.86% 3.89%
d2d3 21.39% 13.07% 9.60% 6.39%
b2b4 14.26% 8.71% 6.40% 4.26%
a2a3 10.70% 6.54% 4.80% 3.20%
a2a4 37.05% 13.07% 8.60% 5.13%
------------------------------------------------
SUM 100.00% 100.00% 100.00% 100.00%
Code: Select all
a = 0.3 a = 0.5 a = 0.7 a = 1.0
Move Weight Weight Weight Weight
===============================================
e2e4 21.28% 29.81% 35.84% 41.93%
d2d4 20.53% 28.07% 32.96% 37.20%
g1f3 14.62% 16.04% 15.10% 12.23%
c2c4 12.33% 12.11% 10.21% 7.01%
b2b3 6.36% 4.01% 2.18% 0.77%
g2g3 6.64% 3.79% 1.85% 0.56%
f2f4 4.18% 1.72% 0.61% 0.11%
b1c3 2.84% 1.24% 0.47% 0.09%
d2d3 3.88% 1.17% 0.30% 0.04%
b2b4 2.59% 0.78% 0.20% 0.02%
a2a3 1.94% 0.59% 0.15% 0.02%
a2a4 2.79% 0.68% 0.14% 0.01%
-----------------------------------------------
SUM 100.00% 100.00% 100.00% 100.00%
Code: Select all
a = 2.0 a = 10.0 a = 50.0 a = 80.0
Move Weight Weight Weight Weight
==================================================
e2e4 52.59% 76.82% 99.75% 99.99%
d2d4 41.38% 23.18% 0.25% 0.01%
g1f3 4.51% 0.00% 0.00% 0.00%
c2c4 1.49% 0.00% 0.00% 0.00%
b2b3 0.02% 0.00% 0.00% 0.00%
g2g3 0.01% 0.00% 0.00% 0.00%
f2f4 0.00% 0.00% 0.00% 0.00%
b1c3 0.00% 0.00% 0.00% 0.00%
d2d3 0.00% 0.00% 0.00% 0.00%
b2b4 0.00% 0.00% 0.00% 0.00%
a2a3 0.00% 0.00% 0.00% 0.00%
a2a4 0.00% 0.00% 0.00% 0.00%
--------------------------------------------------
SUM 100.00% 100.00% 100.00% 100.00%
As you can see,
a = 1 gives your original weights.
a =< 0 gives weird weights (like giveaway, worst is best) and
a -> +infinity awards the most played move regardless its score.
I think that
a = 0.5 gives suitable weights for your needs:
Code: Select all
a = 0.5
Move Weight Cumulative
============================
e2e4 29.81% 29.81%
d2d4 28.07% 57.88%
g1f3 16.04% 73.92%
c2c4 12.11% 86.02%
b2b3 4.01% 90.04%
g2g3 3.79% 93.83%
f2f4 1.72% 95.54%
b1c3 1.24% 96.78%
d2d3 1.17% 97.96%
b2b4 0.78% 98.74%
a2a3 0.59% 99.32%
a2a4 0.68% 100.00%
The 'Big Four' are selected over 86% of the time and Nf3 + c4 are selected over 28% of the time. OTOH, outsider moves are selected circa 1% of the time.
Probably
a = 0.7 or close values worth a try:
Code: Select all
a = 0.7
Move Weight Cumulative
============================
e2e4 35.84% 35.84%
d2d4 32.96% 68.80%
g1f3 15.10% 83.90%
c2c4 10.21% 94.10%
b2b3 2.18% 96.28%
g2g3 1.85% 98.13%
f2f4 0.61% 98.74%
b1c3 0.47% 99.20%
d2d3 0.30% 99.51%
b2b4 0.20% 99.71%
a2a3 0.15% 99.86%
a2a4 0.14% 100.00%
The 'Big Four' are selected over 94% of the time and Nf3 + c4 are selected over 25% of the time. Outsider moves will be selected less than 1% of the time with your data.
Good luck!
Regards from Spain.
Ajedrecista.