fix base priority for flex, and adjust priority calculation to minimize role rank diff

This commit is contained in:
Lionarius
2023-04-05 12:06:33 +03:00
parent baecc03d28
commit bf1d490985
2 changed files with 6 additions and 3 deletions

View File

@@ -68,7 +68,10 @@ fn calculate_priorities(players: &Vec<Player>, 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;
}

View File

@@ -31,10 +31,11 @@ impl Player {
pub fn base_priority(&self) -> HashMap<Role, f32> {
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 {