fix base priority for flex, and adjust priority calculation to minimize role rank diff
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user