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;
|
} 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;
|
item.2 *= player.ranks[role] / complex_coefficient;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -31,10 +31,11 @@ impl Player {
|
|||||||
|
|
||||||
pub fn base_priority(&self) -> HashMap<Role, f32> {
|
pub fn base_priority(&self) -> HashMap<Role, f32> {
|
||||||
let mut priorities = HashMap::new();
|
let mut priorities = HashMap::new();
|
||||||
|
let priority_points = 100.0;
|
||||||
|
|
||||||
if self.flex {
|
if self.flex {
|
||||||
for role in Role::iter() {
|
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;
|
return priorities;
|
||||||
@@ -42,7 +43,6 @@ impl Player {
|
|||||||
|
|
||||||
let count = self.priority_roles.iter().filter(|role| role.is_some()).count() as f32;
|
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 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() {
|
for (i, role) in self.priority_roles.iter().enumerate() {
|
||||||
if let Some(role) = role {
|
if let Some(role) = role {
|
||||||
|
|||||||
Reference in New Issue
Block a user