ChildrenEvalMethod: add and switch to AverageDivDepth
This commit is contained in:
parent
e14391d129
commit
31e88e3313
@ -13,7 +13,7 @@ fn extend_layers_no_pruning(depth: usize) -> usize {
|
||||
max_arena_size: usize::MAX,
|
||||
do_prune: false,
|
||||
print: false,
|
||||
children_eval_method: ChildrenEvalMethod::Average,
|
||||
children_eval_method: ChildrenEvalMethod::AverageDivDepth,
|
||||
};
|
||||
let mut fut = FutureMoves::new(Piece::Black, config);
|
||||
fut.update_from_board(&Board::new().starting_pos());
|
||||
|
||||
16
src/elo.rs
16
src/elo.rs
@ -26,10 +26,10 @@ pub fn run() {
|
||||
max_arena_size: usize::MAX,
|
||||
do_prune: false,
|
||||
print: false,
|
||||
children_eval_method: ChildrenEvalMethod::Average,
|
||||
children_eval_method: ChildrenEvalMethod::AverageDivDepth,
|
||||
};
|
||||
|
||||
let configs = [4, 6, 8]
|
||||
let configs = [6]
|
||||
.into_iter()
|
||||
.map(move |d| FutureMoveConfig {
|
||||
max_depth: d,
|
||||
@ -46,6 +46,16 @@ pub fn run() {
|
||||
move_c.max_depth < 8
|
||||
}
|
||||
})
|
||||
// .flat_map(move |prev_c| {
|
||||
// [
|
||||
// ChildrenEvalMethod::Average,
|
||||
// ChildrenEvalMethod::AverageDivDepth,
|
||||
// ]
|
||||
// .map(move |children_strat| FutureMoveConfig {
|
||||
// children_eval_method: children_strat,
|
||||
// ..prev_c
|
||||
// })
|
||||
// });
|
||||
.flat_map(move |prev_c| {
|
||||
if !prev_c.do_prune {
|
||||
// do not bother making configs when pruning is disabled
|
||||
@ -107,7 +117,7 @@ pub fn run() {
|
||||
|
||||
let mut arena = PlayerArena::new(vec);
|
||||
|
||||
arena.prop_arena(5);
|
||||
arena.prop_arena(100);
|
||||
|
||||
println!("{}", arena);
|
||||
}
|
||||
|
||||
@ -78,6 +78,7 @@ impl std::fmt::Display for FutureMoveConfig {
|
||||
pub enum ChildrenEvalMethod {
|
||||
/// Best (by far) strat compared to Max or Min
|
||||
Average,
|
||||
AverageDivDepth,
|
||||
}
|
||||
|
||||
impl FutureMoves {
|
||||
@ -271,7 +272,7 @@ impl FutureMoves {
|
||||
let by_depth_vec = self.by_depth(indexes);
|
||||
|
||||
// reversed so we build up the value of the closest (in time) moves from the future
|
||||
for (_, nodes) in by_depth_vec.into_iter().rev() {
|
||||
for (depth, nodes) in by_depth_vec.into_iter().rev() {
|
||||
for idx in nodes {
|
||||
let children_values = self.arena[idx]
|
||||
.children
|
||||
@ -284,6 +285,12 @@ impl FutureMoves {
|
||||
.into_iter()
|
||||
.sum::<i32>()
|
||||
.checked_div(self.arena[idx].children.len() as i32),
|
||||
|
||||
ChildrenEvalMethod::AverageDivDepth => children_values
|
||||
.into_iter()
|
||||
.sum::<i32>()
|
||||
.checked_div(self.arena[idx].children.len() as i32)
|
||||
.and_then(|x| x.checked_div(depth as i32)),
|
||||
}
|
||||
.unwrap_or(0);
|
||||
|
||||
@ -560,7 +567,7 @@ mod tests {
|
||||
max_arena_size: 100,
|
||||
do_prune: false,
|
||||
print: false,
|
||||
children_eval_method: ChildrenEvalMethod::Average,
|
||||
children_eval_method: ChildrenEvalMethod::AverageDivDepth,
|
||||
};
|
||||
|
||||
#[test]
|
||||
|
||||
13
src/main.rs
13
src/main.rs
@ -24,20 +24,9 @@ fn main() {
|
||||
max_arena_size: 100_000_000,
|
||||
do_prune: true,
|
||||
print: true,
|
||||
children_eval_method: ChildrenEvalMethod::Average,
|
||||
children_eval_method: ChildrenEvalMethod::AverageDivDepth,
|
||||
},
|
||||
);
|
||||
// let player2 = complexagent::ComplexAgent::new(
|
||||
// Piece::White,
|
||||
// FutureMoveConfig {
|
||||
// max_depth: 20,
|
||||
// min_arena_depth_sub: 14,
|
||||
// top_k_children: 2,
|
||||
// up_to_minus: 10,
|
||||
// max_arena_size: 50_000_000,
|
||||
// do_prune: true,
|
||||
// },
|
||||
// );
|
||||
|
||||
let player2 = agent::ManualAgent::new(Piece::White);
|
||||
let mut game = Game::new(Box::new(player1), Box::new(player2));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user