More tests

This commit is contained in:
2022-06-21 10:42:14 +02:00
parent be4834ca85
commit 1647ba5c77
2 changed files with 245 additions and 0 deletions

View File

@@ -500,4 +500,123 @@ mod tests {
assert_ulps_eq!(p[0][0], p[1][0], epsilon = 0.000001);
}
#[test]
fn test_2vs2_weighted() {
let t_a = vec![
Player::new(Gaussian::new(25.0, 25.0 / 3.0), 25.0 / 6.0, 0.0),
Player::new(Gaussian::new(25.0, 25.0 / 3.0), 25.0 / 6.0, 0.0),
];
let w_a = vec![0.4, 0.8];
let t_b = vec![
Player::new(Gaussian::new(25.0, 25.0 / 3.0), 25.0 / 6.0, 0.0),
Player::new(Gaussian::new(25.0, 25.0 / 3.0), 25.0 / 6.0, 0.0),
];
let w_b = vec![0.9, 0.6];
let g = Game::new(vec![t_a.clone(), t_b.clone()], vec![], vec![w_a, w_b], 0.0);
let p = g.posteriors();
assert_ulps_eq!(
p[0][0],
Gaussian::new(27.539023, 8.129639),
epsilon = 0.000001
);
assert_ulps_eq!(
p[0][1],
Gaussian::new(30.078046, 7.485372),
epsilon = 0.000001
);
assert_ulps_eq!(
p[1][0],
Gaussian::new(19.287197, 7.243465),
epsilon = 0.000001
);
assert_ulps_eq!(
p[1][1],
Gaussian::new(21.191465, 7.867608),
epsilon = 0.000001
);
let w_a = vec![1.3, 1.5];
let w_b = vec![0.7, 0.4];
let g = Game::new(vec![t_a.clone(), t_b.clone()], vec![], vec![w_a, w_b], 0.0);
let p = g.posteriors();
assert_ulps_eq!(
p[0][0],
Gaussian::new(25.190190, 8.220511),
epsilon = 0.000001
);
assert_ulps_eq!(
p[0][1],
Gaussian::new(25.219450, 8.182783),
epsilon = 0.000001
);
assert_ulps_eq!(
p[1][0],
Gaussian::new(24.897589, 8.300779),
epsilon = 0.000001
);
assert_ulps_eq!(
p[1][1],
Gaussian::new(24.941479, 8.322717),
epsilon = 0.000001
);
let w_a = vec![1.6, 0.2];
let w_b = vec![0.7, 2.4];
let g = Game::new(vec![t_a.clone(), t_b.clone()], vec![], vec![w_a, w_b], 0.0);
let p = g.posteriors();
assert_ulps_eq!(
p[0][0],
Gaussian::new(31.674697, 7.501180),
epsilon = 0.000001
);
assert_ulps_eq!(
p[0][1],
Gaussian::new(25.834337, 8.320970),
epsilon = 0.000001
);
assert_ulps_eq!(
p[1][0],
Gaussian::new(22.079819, 8.180607),
epsilon = 0.000001
);
assert_ulps_eq!(
p[1][1],
Gaussian::new(14.987953, 6.308469),
epsilon = 0.000001
);
let g = Game::new(
vec![
t_a.clone(),
vec![Player::new(
Gaussian::new(25.0, 25.0 / 3.0),
25.0 / 6.0,
0.0,
)],
],
vec![],
vec![],
0.0,
);
let post_2vs1 = g.posteriors();
let w_a = vec![1.0, 1.0];
let w_b = vec![1.0, 0.0];
let g = Game::new(vec![t_a, t_b.clone()], vec![], vec![w_a, w_b], 0.0);
let p = g.posteriors();
assert_ulps_eq!(p[0][0], post_2vs1[0][0], epsilon = 0.000001);
assert_ulps_eq!(p[0][1], post_2vs1[0][1], epsilon = 0.000001);
assert_ulps_eq!(p[1][0], post_2vs1[1][0], epsilon = 0.000001);
assert_ulps_eq!(p[1][1], t_b[1].prior, epsilon = 0.000001);
}
}