From bf1d4909851e3a3ef4a38bb64d28b14ce9795260 Mon Sep 17 00:00:00 2001 From: Lionarius Date: Wed, 5 Apr 2023 12:06:33 +0300 Subject: [PATCH] fix base priority for flex, and adjust priority calculation to minimize role rank diff --- src/mixer/mixer.rs | 5 ++++- src/mixer/player.rs | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/mixer/mixer.rs b/src/mixer/mixer.rs index 0125a20..4a9246c 100644 --- a/src/mixer/mixer.rs +++ b/src/mixer/mixer.rs @@ -68,7 +68,10 @@ fn calculate_priorities(players: &Vec, team1: &Team, team2: &Team) -> Ve } } as f32; - let complex_coefficient = role_diff_rank * role_diff_avg_rank; + let team_rank_difference = (team1.average_rank_role(role) - team2.average_rank_role(role)).abs(); + let rank_difference_weight = 1.0 + 1.5 * team_rank_difference; + + let complex_coefficient = role_diff_rank * role_diff_avg_rank * rank_difference_weight; item.2 *= player.ranks[role] / complex_coefficient; } diff --git a/src/mixer/player.rs b/src/mixer/player.rs index 93ce83e..170f322 100644 --- a/src/mixer/player.rs +++ b/src/mixer/player.rs @@ -31,10 +31,11 @@ impl Player { pub fn base_priority(&self) -> HashMap { let mut priorities = HashMap::new(); + let priority_points = 100.0; if self.flex { for role in Role::iter() { - priorities.insert(role, (self.priority_roles.len() / 2) as f32); + priorities.insert(role, (priority_points / self.priority_roles.len() as f32) as f32); } return priorities; @@ -42,7 +43,6 @@ impl Player { let count = self.priority_roles.iter().filter(|role| role.is_some()).count() as f32; let denominator = count * (count + 1.0) * (2.0 * count + 1.0) / 6.0; - let priority_points = 100.0; for (i, role) in self.priority_roles.iter().enumerate() { if let Some(role) = role {