This commit is contained in:
@ -124,7 +124,6 @@ async fn get_move(request: Json<Request>) -> response::Json<Response> {
|
|||||||
let request = request.clone();
|
let request = request.clone();
|
||||||
let board = board.clone();
|
let board = board.clone();
|
||||||
let mut rng = SmallRng::from_os_rng();
|
let mut rng = SmallRng::from_os_rng();
|
||||||
let actions = actions.clone();
|
|
||||||
tokio::task::spawn_blocking(move || {
|
tokio::task::spawn_blocking(move || {
|
||||||
let mut mcts_managers: Vec<_> = (0..request.board.snakes.len())
|
let mut mcts_managers: Vec<_> = (0..request.board.snakes.len())
|
||||||
.map(|id| MctsManager::new(u8::try_from(id).unwrap()))
|
.map(|id| MctsManager::new(u8::try_from(id).unwrap()))
|
||||||
@ -153,16 +152,6 @@ async fn get_move(request: Json<Request>) -> response::Json<Response> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
let my_mcts_manager = mcts_managers.into_iter().nth(usize::from(id)).unwrap();
|
let my_mcts_manager = mcts_managers.into_iter().nth(usize::from(id)).unwrap();
|
||||||
for action in actions {
|
|
||||||
let score = my_mcts_manager.base.next[usize::from(action)]
|
|
||||||
.as_ref()
|
|
||||||
.map(|info| info.score as f32 / info.played as f32);
|
|
||||||
if let Some(score) = score {
|
|
||||||
info!("{action:?} -> {score}");
|
|
||||||
} else {
|
|
||||||
info!("{action:?} -> None");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let actions = my_mcts_manager.base.next.map(|action| {
|
let actions = my_mcts_manager.base.next.map(|action| {
|
||||||
action.map_or(0.0, |action| action.score as f32 / action.played as f32)
|
action.map_or(0.0, |action| action.score as f32 / action.played as f32)
|
||||||
@ -171,7 +160,7 @@ async fn get_move(request: Json<Request>) -> response::Json<Response> {
|
|||||||
(actions, my_mcts_manager.base.played)
|
(actions, my_mcts_manager.base.played)
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
let (actions, played) = join_all(action_futures).await.into_iter().fold(
|
let (scores, played) = join_all(action_futures).await.into_iter().fold(
|
||||||
([0.0; 4], 0),
|
([0.0; 4], 0),
|
||||||
|(mut total, mut games), actions| {
|
|(mut total, mut games), actions| {
|
||||||
if let Ok((actions, new_games)) = actions {
|
if let Ok((actions, new_games)) = actions {
|
||||||
@ -183,7 +172,11 @@ async fn get_move(request: Json<Request>) -> response::Json<Response> {
|
|||||||
(total, games)
|
(total, games)
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
let action = actions
|
for action in actions {
|
||||||
|
let score = scores[usize::from(action)];
|
||||||
|
info!("{action:?} -> {score}");
|
||||||
|
}
|
||||||
|
let action = scores
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.enumerate()
|
.enumerate()
|
||||||
.max_by_key(|(_, score)| FloatOrd(*score))
|
.max_by_key(|(_, score)| FloatOrd(*score))
|
||||||
|
Reference in New Issue
Block a user