icu_ratings 1.6.1 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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