Quote:
Originally Posted by Bongle
I just had an idea, which might resolve to CCWM/PMR, but I don't think it will.
It ends up with a 2N x 2N matrix (for a regional with N teams)
sum[team's scores] = weighted sum of OPRs of alliance members minus weighted sum of DPRs of opponents.
At first I thought that it would be unsolvable (each equation has 6 unknowns, and you'd end up with 2N unknowns and only N equations), until today I had the fairly-obvious brainwave that each match would give you two equations (one OPRred - DPRblue = scorered for red, one OPRblue - DPRred = scoreblue for blue). This approach seems like it would be more predictive of robot performance than simply doing OPR and DPR separately*. I'm going to try to implement it tonight, but if someone wants to try it themselves and report back, that'd be great.
*The problem with the current approach to OPR and DPR, especially in a game like lunacy, is that they assume that a alliance's score comes ENTIRELY from its teams' offensive powers, or ENTIRELY from its opponent's lack of mobility. This proposed new equation seems like it would balance the two, and hopefully give more accurate results.
|
I gave it a shot. I'm not sure I implemented it correctly, but matrix A (Ax = b) always comes up with a large conditioning number - nearly singular, which means that small changes in b, or the matches results, would result in huge shifts in OPR/DPR for teams.
Anyway, here are my results for the NY Regional:
OPR:
Code:
1 1155 32.277
2 694 31.639
3 56 29.308
4 395 24.951
5 3059 23.105
6 2344 22.331
7 1600 22.075
8 743 21.927
9 2753 21.897
10 1257 18.944
11 1302 16.873
12 2554 16.547
13 335 13.228
14 237 11.405
15 1796 10.521
16 1660 10.011
17 1156 9.9718
18 3004 9.263
19 1881 9.2177
20 2681 8.3132
21 1862 7.8608
22 2265 6.898
23 375 6.6255
24 270 6.5267
25 1807 6.2078
26 1230 5.148
27 1396 4.5395
28 527 2.2106
29 371 1.8905
30 555 1.7473
31 41 0.72257
32 354 0.4532
33 271 -0.89414
34 2601 -1.8199
35 421 -2.437
36 369 -2.7544
37 2933 -4.2083
38 1340 -4.8236
39 1880 -5.2459
40 358 -5.4201
41 263 -6.2038
42 1563 -6.389
43 2285 -7.0976
44 3111 -8.2768
45 2577 -8.5896
46 806 -10.413
47 333 -10.934
48 3053 -11.506
49 640 -11.515
50 1520 -12.58
51 759 -12.655
52 2895 -13.538
53 1237 -13.924
54 1989 -14.043
55 2070 -14.541
56 3017 -14.922
57 2573 -15.48
58 1698 -16.094
59 2205 -16.962
60 2579 -17.403
61 1635 -17.776
62 1211 -18.224
63 380 -19.378
64 329 -20.404
65 3112 -22.538
66 334 -32.883
DPR:
(and note that now this is how many points on average your presence on an alliance takes points away from the opponent - a negative number indicates you're likely to increase your opponent's score)
Code:
1 1862 19.379
2 640 12.14
3 1155 10.869
4 1257 8.4759
5 1396 8.1218
6 1807 4.3868
7 56 1.2983
8 1600 0.60363
9 2070 0.29453
10 395 -0.96611
11 2601 -1.051
12 1237 -1.2811
13 270 -1.4666
14 371 -1.8914
15 1520 -1.9435
16 3059 -4.2095
17 1156 -4.3151
18 1302 -4.5479
19 2265 -5.5535
20 2554 -6.1296
21 358 -7.8337
22 380 -9.532
23 3004 -9.8214
24 237 -10.27
25 2344 -10.662
26 329 -13.279
27 2753 -13.602
28 1340 -14.952
29 2933 -15.027
30 1230 -15.604
31 1880 -15.936
32 3017 -16.672
33 333 -17.101
34 527 -17.291
35 2681 -17.463
36 1660 -17.746
37 1989 -18.37
38 421 -20.028
39 335 -20.761
40 1796 -21.286
41 1881 -21.618
42 743 -21.675
43 806 -22.481
44 2577 -23.904
45 759 -25.582
46 271 -25.939
47 3111 -26.223
48 1211 -26.5
49 694 -26.53
50 369 -26.648
51 263 -26.796
52 2895 -27.583
53 3053 -28.046
54 354 -28.105
55 41 -29.584
56 1563 -30.406
57 3112 -31.288
58 2573 -32.228
59 1698 -32.62
60 375 -32.85
61 334 -33.248
62 1635 -33.382
63 2205 -33.423
64 555 -36.653
65 2579 -37.541
66 2285 -45.508
+/-:
(just occurred me to calculate that, haven't given it much thought but I don't think it indicates anything)
Code:
1 694 58.169
2 743 43.602
3 375 39.475
4 2285 38.411
5 555 38.401
6 2753 35.499
7 335 33.989
8 2344 32.993
9 1796 31.807
10 1881 30.836
11 41 30.307
12 354 28.558
13 56 28.009
14 1660 27.757
15 3059 27.315
16 395 25.917
17 2681 25.776
18 271 25.045
19 1563 24.017
20 369 23.894
21 2554 22.677
22 237 21.675
23 1600 21.471
24 1302 21.421
25 1155 21.408
26 1230 20.752
27 263 20.592
28 2579 20.139
29 527 19.501
30 3004 19.084
31 3111 17.946
32 421 17.591
33 2573 16.748
34 3053 16.54
35 1698 16.526
36 2205 16.46
37 1635 15.606
38 2577 15.314
39 1156 14.287
40 2895 14.045
41 759 12.927
42 2265 12.451
43 806 12.069
44 2933 10.819
45 1880 10.69
46 1257 10.468
47 1340 10.128
48 3112 8.7504
49 1211 8.2755
50 270 7.9933
51 333 6.1671
52 1989 4.3263
53 371 3.7819
54 358 2.4136
55 1807 1.821
56 3017 1.7499
57 334 0.36525
58 2601 -0.76893
59 1396 -3.5823
60 329 -7.1252
61 380 -9.846
62 1520 -10.636
63 1862 -11.518
64 1237 -12.643
65 2070 -14.836
66 640 -23.656
I don't have prediction software implemented yet, so I can't give any estimates, so... Any ideas? Considering the matrix is ill-conditioned, I'm not sure those numbers can be trusted. It could be that my MATLAB implementation is wrong, so here's the code if anyone wants to check it out.