mirror of
https://github.com/tig-foundation/tig-monorepo.git
synced 2026-02-21 10:27:49 +08:00
Use median for average_solution_quality.
This commit is contained in:
parent
c62700893c
commit
e9cfdf9d17
@ -169,23 +169,28 @@ pub async fn submit_benchmark<T: Context>(
|
||||
}
|
||||
|
||||
// random sample nonces
|
||||
let median_idx = (solution_quality.len() / 2) as u64;
|
||||
|
||||
let config = ctx.get_config().await;
|
||||
let mut rng = StdRng::seed_from_u64(seed);
|
||||
let max_samples = config.challenges[&settings.challenge_id].max_samples;
|
||||
let mut sampled_nonces = HashSet::new();
|
||||
sampled_nonces.insert(median_idx as u64);
|
||||
for _ in 0..25 {
|
||||
if sampled_nonces.len() == max_samples {
|
||||
break;
|
||||
}
|
||||
let nonce = rng.gen_range(0..precommit_details.num_nonces);
|
||||
let nonce = rng.gen_range(median_idx..precommit_details.num_nonces);
|
||||
if sampled_nonces.contains(&nonce) {
|
||||
continue;
|
||||
}
|
||||
sampled_nonces.insert(nonce);
|
||||
}
|
||||
|
||||
let average_solution_quality =
|
||||
solution_quality.iter().sum::<i32>() / (solution_quality.len() as i32);
|
||||
// Calculate median solution quality
|
||||
let mut sorted_quality = solution_quality.clone();
|
||||
sorted_quality.sort_unstable();
|
||||
let average_solution_quality = sorted_quality[median_idx as usize];
|
||||
|
||||
ctx.add_benchmark_to_mempool(
|
||||
benchmark_id,
|
||||
|
||||
@ -114,6 +114,7 @@ pub(crate) async fn update(cache: &mut AddBlockCache) {
|
||||
let challenge_data = active_challenges_block_data.get_mut(challenge_id).unwrap();
|
||||
let mut player_code_nonces = HashMap::<String, HashMap<String, u64>>::new();
|
||||
let mut player_nonces = HashMap::<String, u64>::new();
|
||||
let mut qualifier_qualities = HashMap::<String, HashSet<i32>>::new();
|
||||
|
||||
for frontier_idx in 0..max_frontier_idx {
|
||||
for (settings, &quality, &num_nonces) in
|
||||
@ -133,11 +134,10 @@ pub(crate) async fn update(cache: &mut AddBlockCache) {
|
||||
.or_default() += num_nonces;
|
||||
*player_nonces.entry(player_id.clone()).or_default() += num_nonces;
|
||||
|
||||
challenge_data
|
||||
.qualifier_qualities
|
||||
qualifier_qualities
|
||||
.entry(race_id.clone())
|
||||
.or_default()
|
||||
.push(quality);
|
||||
.insert(quality);
|
||||
}
|
||||
|
||||
// check if we have enough qualifiers
|
||||
@ -182,6 +182,15 @@ pub(crate) async fn update(cache: &mut AddBlockCache) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
challenge_data.qualifier_qualities = qualifier_qualities
|
||||
.into_iter()
|
||||
.map(|(race_id, qualifier_qualities)| {
|
||||
let mut qualifier_qualities = qualifier_qualities.into_iter().collect::<Vec<_>>();
|
||||
qualifier_qualities.sort_by(|a, b| b.cmp(a));
|
||||
(race_id, qualifier_qualities)
|
||||
})
|
||||
.collect();
|
||||
}
|
||||
|
||||
// update influence
|
||||
|
||||
Loading…
Reference in New Issue
Block a user