diff --git a/AI/src/mcts/MCTS_SETTINGS.hpp b/AI/src/mcts/MCTS_SETTINGS.hpp new file mode 100644 index 0000000000000000000000000000000000000000..597aa83dafe089833f0f2e7f6c1318c0fe4edf96 --- /dev/null +++ b/AI/src/mcts/MCTS_SETTINGS.hpp @@ -0,0 +1,8 @@ +#ifndef __MCTS_SETTINGS_HPP__ +#define __MCTS_SETTINGS_HPP__ +// Allocated memory for the mcts. If not enough the program may crash +#define MCTS_ALLOCATOR_SIZE 1000000U +// Reflection time for every turn of the mcts (in ms) +#define MCTS_TURN_TIME 5000 + +#endif diff --git a/AI/src/mcts/allocator.hpp b/AI/src/mcts/allocator.hpp index 73e64d86542929d420909ad188d81c2ef0c48101..628912ed2d3e3ec726f617bdcdba2e11639ce32f 100644 --- a/AI/src/mcts/allocator.hpp +++ b/AI/src/mcts/allocator.hpp @@ -2,6 +2,7 @@ #define __ALLOCATOR_HPP__ #include "node.hpp" +#include "MCTS_SETTINGS.hpp" namespace mcts { @@ -15,7 +16,7 @@ namespace mcts void copy(node* n1, node* n2, unsigned int prunning = 0); public: - allocator(unsigned int size = 40000000U); + allocator(unsigned int size = MCTS_ALLOCATOR_SIZE); ~allocator(); node* allocate(unsigned int size); void clear(); diff --git a/AI/src/mcts/test_mcts_two_players.hpp b/AI/src/mcts/test_mcts_two_players.hpp index 11b345f2ff10040bf79bfd55e9a259168b6538d5..faaf0b373dde8b3daa1182a1c604a22d09bdb67b 100644 --- a/AI/src/mcts/test_mcts_two_players.hpp +++ b/AI/src/mcts/test_mcts_two_players.hpp @@ -3,6 +3,7 @@ #include "openings.hpp" #include "mcts_two_players.hpp" +#include "MCTS_SETTINGS.hpp" #include <string> #include <iostream> #include <map> @@ -21,10 +22,10 @@ namespace mcts void self_play(Game g); void self_play(Game g, int n, bool with_openings = false); void self_play_learn_openings(Game g, int n); - void test_openings(Game g, int nb_learning, int nb_testing); + void test_openings(Game g, int nb_learning, int nb_testing); int select_move(Game& game); public: - test_mcts_two_players(const Game& g); + test_mcts_two_players(const Game& g); }; template <typename Game> @@ -69,7 +70,7 @@ namespace mcts void test_mcts_two_players<Game>::play(Game g) { // ProfilerStart("theturk.prof"); - auto the_turk = make_mcts_two_players(g, 5000, 0.4, 8); + auto the_turk = make_mcts_two_players(g, MCTS_TURN_TIME, 0.4, 8); std::cout << "play one game" << std::endl; std::cout << "who's first? (h)uman/(c)omputer "; std::string ans; @@ -155,7 +156,7 @@ namespace mcts g.set_state(state); openings_.update(g, moves, v); g.set_state(state); - for (std::uint16_t m : moves) + for (std::uint16_t m : moves) { g.play(m); v = -v; @@ -174,10 +175,10 @@ namespace mcts } std::cout << "number of learning examples: " << learning_examples.size() << std::endl; std::ofstream output("learning_examples.txt"); - for (const auto& example : learning_examples) + for (const auto& example : learning_examples) { output << example.second.second; - for (int index : example.first) + for (int index : example.first) { output << " " << index << ":" << 1; }