Small refactor

This commit is contained in:
2022-12-27 22:37:12 +01:00
parent 8e25826f91
commit e3906aebaa
6 changed files with 358 additions and 163 deletions

View File

@@ -280,7 +280,11 @@ impl History {
*agent,
Agent {
player: priors.get(agent).cloned().unwrap_or_else(|| {
Player::new(Gaussian::new(self.mu, self.sigma), self.beta, self.gamma)
Player::new(
Gaussian::from_ms(self.mu, self.sigma),
self.beta,
self.gamma,
)
}),
..Default::default()
},
@@ -439,7 +443,7 @@ mod tests {
priors.insert(
agent,
Player::new(
Gaussian::new(25.0, 25.0 / 3.0),
Gaussian::from_ms(25.0, 25.0 / 3.0),
25.0 / 6.0,
0.15 * 25.0 / 3.0,
),
@@ -452,7 +456,11 @@ mod tests {
let p0 = h.batches[0].posteriors();
assert_ulps_eq!(p0[&a], Gaussian::new(29.205220, 7.194481), epsilon = 1e-6);
assert_ulps_eq!(
p0[&a],
Gaussian::from_ms(29.205220, 7.194481),
epsilon = 1e-6
);
let observed = h.batches[1].skills[&a].forward.sigma;
let gamma: f64 = 0.15 * 25.0 / 3.0;
@@ -496,7 +504,7 @@ mod tests {
priors.insert(
agent,
Player::new(
Gaussian::new(25.0, 25.0 / 3.0),
Gaussian::from_ms(25.0, 25.0 / 3.0),
25.0 / 6.0,
0.15 * 25.0 / 3.0,
),
@@ -509,12 +517,12 @@ mod tests {
assert_ulps_eq!(
h1.batches[0].skills[&a].posterior(),
Gaussian::new(22.904409, 6.010330),
Gaussian::from_ms(22.904409, 6.010330),
epsilon = 1e-6
);
assert_ulps_eq!(
h1.batches[0].skills[&c].posterior(),
Gaussian::new(25.110318, 5.866311),
Gaussian::from_ms(25.110318, 5.866311),
epsilon = 1e-6
);
@@ -522,12 +530,12 @@ mod tests {
assert_ulps_eq!(
h1.batches[0].skills[&a].posterior(),
Gaussian::new(25.000000, 5.419212),
Gaussian::from_ms(25.000000, 5.419212),
epsilon = 1e-6
);
assert_ulps_eq!(
h1.batches[0].skills[&c].posterior(),
Gaussian::new(25.000000, 5.419212),
Gaussian::from_ms(25.000000, 5.419212),
epsilon = 1e-6
);
@@ -544,7 +552,11 @@ mod tests {
for agent in [a, b, c] {
priors.insert(
agent,
Player::new(Gaussian::new(25.0, 25.0 / 3.0), 25.0 / 6.0, 25.0 / 300.0),
Player::new(
Gaussian::from_ms(25.0, 25.0 / 3.0),
25.0 / 6.0,
25.0 / 300.0,
),
);
}
@@ -554,12 +566,12 @@ mod tests {
assert_ulps_eq!(
h2.batches[2].skills[&a].posterior(),
Gaussian::new(22.903522, 6.011017),
Gaussian::from_ms(22.903522, 6.011017),
epsilon = 1e-6
);
assert_ulps_eq!(
h2.batches[2].skills[&c].posterior(),
Gaussian::new(25.110702, 5.866811),
Gaussian::from_ms(25.110702, 5.866811),
epsilon = 1e-6
);
@@ -567,12 +579,12 @@ mod tests {
assert_ulps_eq!(
h2.batches[2].skills[&a].posterior(),
Gaussian::new(24.998668, 5.420053),
Gaussian::from_ms(24.998668, 5.420053),
epsilon = 1e-6
);
assert_ulps_eq!(
h2.batches[2].skills[&c].posterior(),
Gaussian::new(25.000532, 5.419827),
Gaussian::from_ms(25.000532, 5.419827),
epsilon = 1e-6
);
}
@@ -598,7 +610,11 @@ mod tests {
for agent in [a, b, c] {
priors.insert(
agent,
Player::new(Gaussian::new(25.0, 25.0 / 3.0), 25.0 / 6.0, 25.0 / 300.0),
Player::new(
Gaussian::from_ms(25.0, 25.0 / 3.0),
25.0 / 6.0,
25.0 / 300.0,
),
);
}
@@ -617,12 +633,12 @@ mod tests {
assert_ulps_eq!(
lc[&a][aj_e - 1].1,
Gaussian::new(24.998668, 5.420053),
Gaussian::from_ms(24.998668, 5.420053),
epsilon = 1e-6
);
assert_ulps_eq!(
lc[&c][cj_e - 1].1,
Gaussian::new(25.000532, 5.419827),
Gaussian::from_ms(25.000532, 5.419827),
epsilon = 1e-6
);
}
@@ -659,17 +675,17 @@ mod tests {
assert_ulps_eq!(
h.batches[0].skills[&a].posterior(),
Gaussian::new(25.000267, 5.419381),
Gaussian::from_ms(25.000267, 5.419381),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[0].skills[&b].posterior(),
Gaussian::new(24.999465, 5.419425),
Gaussian::from_ms(24.999465, 5.419425),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[2].skills[&b].posterior(),
Gaussian::new(25.000532, 5.419696),
Gaussian::from_ms(25.000532, 5.419696),
epsilon = 1e-6
);
}
@@ -749,17 +765,17 @@ mod tests {
assert_ulps_eq!(
h.batches[0].skills[&a].posterior(),
Gaussian::new(4.084902, 5.106919),
Gaussian::from_ms(4.084902, 5.106919),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[0].skills[&c].posterior(),
Gaussian::new(-0.533029, 5.106919),
Gaussian::from_ms(-0.533029, 5.106919),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[2].skills[&e].posterior(),
Gaussian::new(-3.551872, 5.154569),
Gaussian::from_ms(-3.551872, 5.154569),
epsilon = 1e-6
);
}
@@ -796,17 +812,17 @@ mod tests {
assert_ulps_eq!(
h.batches[0].skills[&a].posterior(),
Gaussian::new(0.000000, 1.300610),
Gaussian::from_ms(0.000000, 1.300610),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[0].skills[&b].posterior(),
Gaussian::new(0.000000, 1.300610),
Gaussian::from_ms(0.000000, 1.300610),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[2].skills[&b].posterior(),
Gaussian::new(0.000000, 1.300610),
Gaussian::from_ms(0.000000, 1.300610),
epsilon = 1e-6
);
@@ -833,22 +849,22 @@ mod tests {
assert_ulps_eq!(
h.batches[0].skills[&a].posterior(),
Gaussian::new(0.000000, 0.931236),
Gaussian::from_ms(0.000000, 0.931236),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[3].skills[&a].posterior(),
Gaussian::new(0.000000, 0.931236),
Gaussian::from_ms(0.000000, 0.931236),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[3].skills[&b].posterior(),
Gaussian::new(0.000000, 0.931236),
Gaussian::from_ms(0.000000, 0.931236),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[5].skills[&b].posterior(),
Gaussian::new(0.000000, 0.931236),
Gaussian::from_ms(0.000000, 0.931236),
epsilon = 1e-6
);
}
@@ -885,17 +901,17 @@ mod tests {
assert_ulps_eq!(
h.batches[0].skills[&a].posterior(),
Gaussian::new(0.000000, 1.300610),
Gaussian::from_ms(0.000000, 1.300610),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[0].skills[&b].posterior(),
Gaussian::new(0.000000, 1.300610),
Gaussian::from_ms(0.000000, 1.300610),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[2].skills[&b].posterior(),
Gaussian::new(0.000000, 1.300610),
Gaussian::from_ms(0.000000, 1.300610),
epsilon = 1e-6
);
@@ -922,22 +938,22 @@ mod tests {
assert_ulps_eq!(
h.batches[0].skills[&a].posterior(),
Gaussian::new(0.000000, 0.931236),
Gaussian::from_ms(0.000000, 0.931236),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[3].skills[&a].posterior(),
Gaussian::new(0.000000, 0.931236),
Gaussian::from_ms(0.000000, 0.931236),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[3].skills[&b].posterior(),
Gaussian::new(0.000000, 0.931236),
Gaussian::from_ms(0.000000, 0.931236),
epsilon = 1e-6
);
assert_ulps_eq!(
h.batches[5].skills[&b].posterior(),
Gaussian::new(0.000000, 0.931236),
Gaussian::from_ms(0.000000, 0.931236),
epsilon = 1e-6
);
}
@@ -1214,22 +1230,22 @@ mod tests {
assert_ulps_eq!(
lc[&a][0].1,
Gaussian::new(5.537659, 4.758722),
Gaussian::from_ms(5.537659, 4.758722),
epsilon = 1e-6
);
assert_ulps_eq!(
lc[&b][0].1,
Gaussian::new(-0.830127, 5.239568),
Gaussian::from_ms(-0.830127, 5.239568),
epsilon = 1e-6
);
assert_ulps_eq!(
lc[&a][1].1,
Gaussian::new(1.792277, 4.099566),
Gaussian::from_ms(1.792277, 4.099566),
epsilon = 1e-6
);
assert_ulps_eq!(
lc[&b][1].1,
Gaussian::new(4.845533, 3.747616),
Gaussian::from_ms(4.845533, 3.747616),
epsilon = 1e-6
);