From a8a0353976c2ea197e6bb6dba4ef9f030c6d87d4 Mon Sep 17 00:00:00 2001
From: Francesco Bariatti <francesco.bariatti@insa-rennes.fr>
Date: Tue, 17 May 2016 16:44:20 +0200
Subject: [PATCH] Added settings file for mcts

---
 AI/src/mcts/MCTS_SETTINGS.hpp         |  8 ++++++++
 AI/src/mcts/allocator.hpp             |  3 ++-
 AI/src/mcts/test_mcts_two_players.hpp | 13 +++++++------
 3 files changed, 17 insertions(+), 7 deletions(-)
 create mode 100644 AI/src/mcts/MCTS_SETTINGS.hpp

diff --git a/AI/src/mcts/MCTS_SETTINGS.hpp b/AI/src/mcts/MCTS_SETTINGS.hpp
new file mode 100644
index 0000000..597aa83
--- /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 73e64d8..628912e 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 11b345f..faaf0b3 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;
 	  }
-- 
GitLab