icu_ratings 1.6.1 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -124,6 +124,10 @@ module ICU
124
124
  update_bonuses = true
125
125
  threshold = 0.1
126
126
  end
127
+ if version >= 3
128
+ # See http://ratings.icu.ie/articles/18 (Part 3)
129
+ max_iterations = [50, 50]
130
+ end
127
131
 
128
132
  # Phase 1.
129
133
  players.each { |p| p.reset }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ICU
4
4
  class Ratings
5
- VERSION = "1.6.1"
5
+ VERSION = "1.7.0"
6
6
  end
7
7
  end
@@ -2445,5 +2445,181 @@ module ICU
2445
2445
  post_cap_bonus.should be < 0
2446
2446
  end
2447
2447
  end
2448
+
2449
+ context "#rate - tournament with convergence problem" do
2450
+ before(:each) do
2451
+ @t = ICU::RatedTournament.new(desc: "Connaught U16 Juniors 2013")
2452
+
2453
+ @p01 = @t.add_player(1, desc: "Ni Mhuireagain, Eibhia", rating: 1169, kfactor: 40)
2454
+ @p02 = @t.add_player(2, desc: "Kelly,Jack")
2455
+ @p03 = @t.add_player(3, desc: "Murray,Ellen", rating: 340, kfactor: 40)
2456
+ @p04 = @t.add_player(4, desc: "Hanrahan,David", rating: 613, games: 3)
2457
+ @p05 = @t.add_player(5, desc: "Fleming,Leah")
2458
+ @p06 = @t.add_player(6, desc: "Kozlovs,Andrejs")
2459
+ @p07 = @t.add_player(7, desc: "Fernhead,George")
2460
+ @p08 = @t.add_player(8, desc: "Ryan,Clodagh")
2461
+ @p09 = @t.add_player(9, desc: "Connolly,Sean", rating: 462, games: 6)
2462
+ @p10 = @t.add_player(10, desc: "Fernhead,John")
2463
+ @p11 = @t.add_player(11, desc: "McStay,Thomas", rating: 376, games: 12)
2464
+ @p12 = @t.add_player(12, desc: "Mitchell,Jack", rating: 228, games: 11)
2465
+ @p13 = @t.add_player(13, desc: "McDonagh,Conor")
2466
+ @p14 = @t.add_player(14, desc: "Arinyoy,Other")
2467
+ @p15 = @t.add_player(15, desc: "O'Tuathail,Eimear", rating: 370, games: 7)
2468
+ @p16 = @t.add_player(16, desc: "Fleming,Harry")
2469
+ @p17 = @t.add_player(17, desc: "Ritter,Johannes")
2470
+ @p18 = @t.add_player(18, desc: "Mahon,Colm")
2471
+ @p19 = @t.add_player(19, desc: "Connell,Kevin")
2472
+ @p20 = @t.add_player(20, desc: "Ryan,Aoife")
2473
+
2474
+ @t.add_result(1, 1, 17, "W")
2475
+ @t.add_result(2, 1, 3, "W")
2476
+ @t.add_result(3, 1, 12, "W")
2477
+ @t.add_result(4, 1, 2, "W")
2478
+ @t.add_result(5, 1, 4, "W")
2479
+ @t.add_result(6, 1, 6, "W")
2480
+ @t.add_result(7, 1, 10, "W")
2481
+ @t.add_result(1, 2, 7, "W")
2482
+ @t.add_result(2, 2, 6, "W")
2483
+ @t.add_result(3, 2, 13, "W")
2484
+ @t.add_result(4, 2, 1, "L")
2485
+ @t.add_result(5, 2, 10, "W")
2486
+ @t.add_result(6, 2, 3, "W")
2487
+ @t.add_result(7, 2, 4, "W")
2488
+ @t.add_result(1, 3, 11, "W")
2489
+ @t.add_result(2, 3, 1, "L")
2490
+ @t.add_result(3, 3, 6, "W")
2491
+ @t.add_result(4, 3, 12, "W")
2492
+ @t.add_result(5, 3, 15, "W")
2493
+ @t.add_result(6, 3, 2, "L")
2494
+ @t.add_result(7, 3, 9, "W")
2495
+ @t.add_result(1, 4, 19, "W")
2496
+ @t.add_result(2, 4, 16, "W")
2497
+ @t.add_result(3, 4, 9, "W")
2498
+ @t.add_result(4, 4, 10, "D")
2499
+ @t.add_result(5, 4, 1, "L")
2500
+ @t.add_result(6, 4, 5, "W")
2501
+ @t.add_result(7, 4, 2, "L")
2502
+ @t.add_result(1, 5, 12, "L")
2503
+ @t.add_result(2, 5, 11, "L")
2504
+ @t.add_result(3, 5, 20, "W")
2505
+ @t.add_result(4, 5, 18, "W")
2506
+ @t.add_result(5, 5, 14, "W")
2507
+ @t.add_result(6, 5, 4, "L")
2508
+ @t.add_result(7, 5, 15, "W")
2509
+ @t.add_result(1, 6, 10, "W")
2510
+ @t.add_result(2, 6, 2, "L")
2511
+ @t.add_result(3, 6, 3, "L")
2512
+ @t.add_result(4, 6, 17, "W")
2513
+ @t.add_result(5, 6, 9, "W")
2514
+ @t.add_result(6, 6, 1, "L")
2515
+ @t.add_result(7, 6, 12, "W")
2516
+ @t.add_result(1, 7, 2, "L")
2517
+ @t.add_result(2, 7, 9, "L")
2518
+ @t.add_result(3, 7, 19, "L")
2519
+ @t.add_result(4, 7, 20, "W")
2520
+ @t.add_result(5, 7, 18, "W")
2521
+ @t.add_result(6, 7, 17, "W")
2522
+ @t.add_result(7, 7, 14, "W")
2523
+ @t.add_result(1, 8, 13, "L")
2524
+ @t.add_result(2, 8, 20, "W")
2525
+ @t.add_result(3, 8, 14, "W")
2526
+ @t.add_result(4, 8, 15, "L")
2527
+ @t.add_result(5, 8, 12, "D")
2528
+ @t.add_result(6, 8, 9, "L")
2529
+ @t.add_result(7, 8, 18, "W")
2530
+ @t.add_result(1, 9, 16, "D")
2531
+ @t.add_result(2, 9, 7, "W")
2532
+ @t.add_result(3, 9, 4, "L")
2533
+ @t.add_result(4, 9, 13, "W")
2534
+ @t.add_result(5, 9, 6, "L")
2535
+ @t.add_result(6, 9, 8, "W")
2536
+ @t.add_result(7, 9, 3, "L")
2537
+ @t.add_result(1, 10, 6, "L")
2538
+ @t.add_result(2, 10, 17, "W")
2539
+ @t.add_result(3, 10, 11, "W")
2540
+ @t.add_result(4, 10, 4, "D")
2541
+ @t.add_result(5, 10, 2, "L")
2542
+ @t.add_result(6, 10, 15, "W")
2543
+ @t.add_result(7, 10, 1, "L")
2544
+ @t.add_result(1, 11, 3, "L")
2545
+ @t.add_result(2, 11, 5, "W")
2546
+ @t.add_result(3, 11, 10, "L")
2547
+ @t.add_result(4, 11, 14, "L")
2548
+ @t.add_result(5, 11, 17, "D")
2549
+ @t.add_result(6, 11, 19, "W")
2550
+ @t.add_result(7, 11, 16, "W")
2551
+ @t.add_result(1, 12, 5, "W")
2552
+ @t.add_result(2, 12, 14, "W")
2553
+ @t.add_result(3, 12, 1, "L")
2554
+ @t.add_result(4, 12, 3, "L")
2555
+ @t.add_result(5, 12, 8, "D")
2556
+ @t.add_result(6, 12, 16, "W")
2557
+ @t.add_result(7, 12, 6, "L")
2558
+ @t.add_result(1, 13, 8, "W")
2559
+ @t.add_result(2, 13, 15, "W")
2560
+ @t.add_result(3, 13, 2, "L")
2561
+ @t.add_result(4, 13, 9, "L")
2562
+ @t.add_result(5, 13, 16, "L")
2563
+ @t.add_result(6, 13, 14, "L")
2564
+ @t.add_result(7, 13, 19, "W")
2565
+ @t.add_result(1, 14, 20, "W")
2566
+ @t.add_result(2, 14, 12, "L")
2567
+ @t.add_result(3, 14, 8, "L")
2568
+ @t.add_result(4, 14, 11, "W")
2569
+ @t.add_result(5, 14, 5, "L")
2570
+ @t.add_result(6, 14, 13, "W")
2571
+ @t.add_result(7, 14, 7, "L")
2572
+ @t.add_result(1, 15, 18, "W")
2573
+ @t.add_result(2, 15, 13, "L")
2574
+ @t.add_result(3, 15, 16, "W")
2575
+ @t.add_result(4, 15, 8, "W")
2576
+ @t.add_result(5, 15, 3, "L")
2577
+ @t.add_result(6, 15, 10, "L")
2578
+ @t.add_result(7, 15, 5, "L")
2579
+ @t.add_result(1, 16, 9, "D")
2580
+ @t.add_result(2, 16, 4, "L")
2581
+ @t.add_result(3, 16, 15, "L")
2582
+ @t.add_result(4, 16, 19, "W")
2583
+ @t.add_result(5, 16, 13, "W")
2584
+ @t.add_result(6, 16, 12, "L")
2585
+ @t.add_result(7, 16, 11, "L")
2586
+ @t.add_result(1, 17, 1, "L")
2587
+ @t.add_result(2, 17, 10, "L")
2588
+ @t.add_result(3, 17, 18, "W")
2589
+ @t.add_result(4, 17, 6, "L")
2590
+ @t.add_result(5, 17, 11, "D")
2591
+ @t.add_result(6, 17, 7, "L")
2592
+ @t.add_result(7, 17, 20, "W")
2593
+ @t.add_result(1, 18, 15, "L")
2594
+ @t.add_result(2, 18, 19, "W")
2595
+ @t.add_result(3, 18, 17, "L")
2596
+ @t.add_result(4, 18, 5, "L")
2597
+ @t.add_result(5, 18, 7, "L")
2598
+ @t.add_result(6, 18, 20, "W")
2599
+ @t.add_result(7, 18, 8, "L")
2600
+ @t.add_result(1, 19, 4, "L")
2601
+ @t.add_result(2, 19, 18, "L")
2602
+ @t.add_result(3, 19, 7, "W")
2603
+ @t.add_result(4, 19, 16, "L")
2604
+ @t.add_result(5, 19, 20, "W")
2605
+ @t.add_result(6, 19, 11, "L")
2606
+ @t.add_result(7, 19, 13, "L")
2607
+ @t.add_result(1, 20, 14, "L")
2608
+ @t.add_result(2, 20, 8, "L")
2609
+ @t.add_result(3, 20, 5, "L")
2610
+ @t.add_result(4, 20, 7, "L")
2611
+ @t.add_result(5, 20, 19, "L")
2612
+ @t.add_result(6, 20, 18, "L")
2613
+ @t.add_result(7, 20, 17, "L")
2614
+ end
2615
+
2616
+ it "should not converge with version 2 settings" do
2617
+ lambda { @t.rate!(version: 2) }.should raise_error(/performance rating estimation did not converge/)
2618
+ end
2619
+
2620
+ it "should converge with version 3 settings (higher maximum number of iterations)" do
2621
+ lambda { @t.rate!(version: 3) }.should_not raise_error
2622
+ end
2623
+ end
2448
2624
  end
2449
2625
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: icu_ratings
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.1
4
+ version: 1.7.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-22 00:00:00.000000000 Z
12
+ date: 2013-08-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -112,7 +112,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
112
112
  version: '0'
113
113
  segments:
114
114
  - 0
115
- hash: 3990992801625361431
115
+ hash: -3613568099200182560
116
116
  required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
@@ -121,7 +121,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
121
121
  version: '0'
122
122
  segments:
123
123
  - 0
124
- hash: 3990992801625361431
124
+ hash: -3613568099200182560
125
125
  requirements: []
126
126
  rubyforge_project: icu_ratings
127
127
  rubygems_version: 1.8.23