Start working on factor graph.

This commit is contained in:
2018-10-22 07:29:18 +02:00
parent 14bb0e9bb8
commit d6ea5e3116
3 changed files with 99 additions and 0 deletions

View File

@@ -1,6 +1,9 @@
mod matrix;
mod factor_graph;
mod gaussian;
use matrix::Matrix;
use factor_graph::*;
/// Default initial mean of ratings.
const MU: f32 = 25.0;
@@ -35,6 +38,38 @@ impl Default for Rating {
}
}
fn _team_sizes(rating_groups: &[&[Rating]]) -> Vec<usize> {
let mut team_sizes = Vec::new();
for group in rating_groups {
let last = team_sizes.last().map(|v| *v).unwrap_or(0);
team_sizes.push(group.len() + last);
}
team_sizes
}
fn factor_graph_builders(rating_groups: &[&[Rating]]) {
let flatten_ratings = rating_groups
.iter()
.flat_map(|group| group.iter())
.collect::<Vec<_>>();
let flatten_weights = vec![1.0; flatten_ratings.len()].into_boxed_slice();
let size = flatten_ratings.len();
let group_size = rating_groups.len();
let rating_vars = (0..size).map(|_| Variable::new()).collect::<Vec<_>>();
let perf_vars = (0..size).map(|_| Variable::new()).collect::<Vec<_>>();
let team_perf_vars = (0..group_size).map(|_| Variable::new()).collect::<Vec<_>>();
let team_diff_vars = (0..group_size - 1).map(|_| Variable::new()).collect::<Vec<_>>();
let team_sizes = _team_sizes(rating_groups);
}
fn rate(rating_groups: &[&[Rating]]) {
let ranks = (0..rating_groups.len()).collect::<Vec<_>>();
let weights = vec![1.0; rating_groups.len()];