Skip to content
Snippets Groups Projects
Commit d2e0bd8d authored by Salard Xavier's avatar Salard Xavier
Browse files

Few improvements to debug the direction freedom heuristic

parent 910ba2b9
No related branches found
No related tags found
No related merge requests found
......@@ -20,49 +20,67 @@ namespace mcts
float number_direction_freedom_heuristic::get_value(const game::penguin& game, uint8_t move) const
{
std::shared_ptr<game::penguin> played = game::copy(game);
//game::penguin_state before_state = played->get_state();
played->play(move);
game::penguin_state after_state = played->get_state();
uint32_t* penguins;
/*if(before_state.current_player_red){ //If the player is red
penguins = before_state.peng_red;
}else{ //if the player is blue
penguins = before_state.peng_blue;
}
//For each penguins, count the number of direction it can move
int8_t number_of_direction_before = 0;
std::shared_ptr<game::penguin> played = game::copy(game);
//game::penguin_state before_state = played->get_state();
played->play(move);
game::penguin_state after_state = played->get_state();
uint32_t* penguins_r;
uint32_t* penguins_b;
/*if(before_state.current_player_red){ //If the player is red
penguins = before_state.peng_red;
}else{ //if the player is blue
penguins = before_state.peng_blue;
}
//For each penguins, count the number of direction it can move
int8_t number_of_direction_before = 0;
for(int8_t i=0; i< 4; i++) {
number_of_direction_before+= number_of_direction_penguin(penguins[i]);
}
*/
for(int8_t i=0; i< 4; i++) {
number_of_direction_before+= number_of_direction_penguin(penguins[i]);
}*/
if(!after_state.current_player_red){ //If the player was red
penguins = after_state.peng_red;
}else{ //if the player was blue
penguins = after_state.peng_blue;
}
uint8_t number_of_direction_after = 0;
for(uint8_t i=0; i< 4; i++) {
number_of_direction_after+= number_of_direction_penguin(penguins[i]);
}
//std::cout << "number of direction : " << "("+std::to_string(number_of_direction_after)+" : "
// + std::to_string((number_of_direction_after - 12.0)/12.0)+")" <<std::endl;
/*if(!after_state.current_player_red){ //If the player was red
penguins = after_state.peng_red;
}else{ //if the player was blue
penguins = after_state.peng_blue;
}
uint8_t number_of_direction_after = 0;
for(uint8_t i=0; i< 4; i++) {
number_of_direction_after+= number_of_direction_penguin(penguins[i]);
}
//std::cout << "number of direction : " << "("+std::to_string(number_of_direction_after)+" : "
// + std::to_string((number_of_direction_after - 12.0)/12.0)+")" <<std::endl;
// Return a float between -1.0 and 1.0 related to the change of the number of direction in which you can play before and after the move
return (-(number_of_direction_after - 12.0)/12.0);
//return (-(number_of_direction_after - number_of_direction_before)/12.0);
// Return a float between -1.0 and 1.0 related to the change of the number of direction in which you can play before and after the move
return (-(number_of_direction_after - 12.0)/12.0);*/
//return (-(number_of_direction_after - number_of_direction_before)/12.0);
int8_t number_of_direction_after = 0;
penguins_r = after_state.peng_red;
penguins_b = after_state.peng_blue;
for(uint8_t i=0; i< 4; i++) {
number_of_direction_after+= number_of_direction_penguin(penguins_r[i])-number_of_direction_penguin(penguins_b[i]);
}
if(!after_state.current_player_red){ //If the player was red
}else{ //if the player was blue
number_of_direction_after= -number_of_direction_after;
}
//std::cout << "("+std::to_string(number_of_direction_after)+")" <<std::endl;
return (-(float)number_of_direction_after/24.0);
}
int number_direction_freedom_heuristic::get_count(const game::penguin& game, uint8_t move) const
{
return 100000000;
return 100;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment