Start working on factor graph.
This commit is contained in:
35
src/lib.rs
35
src/lib.rs
@@ -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()];
|
||||
|
||||
Reference in New Issue
Block a user