Index: branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/Test/RunMctsExperiments.cs
===================================================================
--- branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/Test/RunMctsExperiments.cs	(revision 12370)
+++ branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/Test/RunMctsExperiments.cs	(revision 12386)
@@ -1,4 +1,3 @@
 ﻿using System;
-using System.Collections;
 using System.Collections.Generic;
 using System.Globalization;
@@ -7,8 +6,5 @@
 using HeuristicLab.Algorithms.Bandits.GrammarPolicies;
 using HeuristicLab.Algorithms.Bandits.Models;
-using HeuristicLab.Algorithms.GeneticProgramming;
 using HeuristicLab.Algorithms.GrammaticalOptimization;
-using HeuristicLab.Problems.GrammaticalOptimization;
-using HeuristicLab.Problems.GrammaticalOptimization.SymbReg;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 using RandomPolicy = HeuristicLab.Algorithms.Bandits.BanditPolicies.RandomPolicy;
@@ -144,7 +140,135 @@
       }
     }
-
-    #endregion
-
+    #endregion
+
+    #region hardpalindrome
+    [TestMethod]
+    [Timeout(1000 * 60 * 60 * 120)] // 120 hours
+    public void RunMctsPalindromeProblem() {
+      CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
+
+      var instanceFactories = new Func<int, ISymbolicExpressionTreeProblem>[]
+      {
+        (randSeed) => (ISymbolicExpressionTreeProblem) new HardPalindromeProblem(), 
+      };
+
+      var maxSizes = new int[] { 10, 20, 30, 40, 50 }; 
+      int nReps = 30;
+      int maxIterations = 100000; 
+      foreach (var instanceFactory in instanceFactories) {
+        foreach (var policyFactory in policyFactories) {
+          foreach (var conf in GenerateConfigurations(instanceFactory, policyFactory, nReps, maxSizes)) {
+            RunMctsForProblem(conf.RandSeed, conf.Problem, conf.Policy, maxIterations, conf.MaxSize);
+          }
+        }
+      }
+    }
+    #endregion
+
+    #region royalpair
+    [TestMethod]
+    [Timeout(1000 * 60 * 60 * 120)] // 120 hours
+    public void RunMctsRoyalPairProblem() {
+      CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
+
+      var instanceFactories = new Func<int, ISymbolicExpressionTreeProblem>[]
+      {
+        (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalPairProblem(2), 
+        (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalPairProblem(4), 
+        (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalPairProblem(8), 
+        (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalPairProblem(16), 
+      };
+
+      var maxSizes = new int[] { 10, 20, 30, 40, 50 };
+      int nReps = 30;
+      int maxIterations = 100000;
+      foreach (var instanceFactory in instanceFactories) {
+        foreach (var policyFactory in policyFactories) {
+          foreach (var conf in GenerateConfigurations(instanceFactory, policyFactory, nReps, maxSizes)) {
+            RunMctsForProblem(conf.RandSeed, conf.Problem, conf.Policy, maxIterations, conf.MaxSize);
+          }
+        }
+      }
+    }
+    #endregion
+
+    #region royalseq
+    [TestMethod]
+    [Timeout(1000 * 60 * 60 * 120)] // 120 hours
+    public void RunMctsRoyalSequenceProblem() {
+      CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
+
+      var instanceFactories = new Func<int, ISymbolicExpressionTreeProblem>[]
+      {
+        (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalSequenceProblem(new Random(randSeed), 3, 50), 
+        (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalSequenceProblem(new Random(randSeed), 5, 50), 
+        (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalSequenceProblem(new Random(randSeed), 10, 50), 
+        (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalSequenceProblem(new Random(randSeed), 20, 50), 
+      };
+
+      var maxSizes = new int[] { 10, 20, 30, 40, 50 };
+      int nReps = 30;
+      int maxIterations = 100000;
+      foreach (var instanceFactory in instanceFactories) {
+        foreach (var policyFactory in policyFactories) {
+          foreach (var conf in GenerateConfigurations(instanceFactory, policyFactory, nReps, maxSizes)) {
+            RunMctsForProblem(conf.RandSeed, conf.Problem, conf.Policy, maxIterations, conf.MaxSize);
+          }
+        }
+      }
+    }
+    #endregion
+
+    #region royaltree
+    [TestMethod]
+    [Timeout(1000 * 60 * 60 * 120)] // 120 hours
+    public void RunMctsRoyalTreeProblem() {
+      CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
+
+      var instanceFactories = new Func<int, ISymbolicExpressionTreeProblem>[]
+      {
+        (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalTreeProblem(3), 
+        (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalTreeProblem(4), 
+        // (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalTreeProblem(5), 
+        // (randSeed) => (ISymbolicExpressionTreeProblem) new RoyalTreeProblem(6), 
+      };
+
+      var maxSizes = new int[] { 30, 100, 200 };
+      int nReps = 30;
+      int maxIterations = 100000;
+      foreach (var instanceFactory in instanceFactories) {
+        foreach (var policyFactory in policyFactories) {
+          foreach (var conf in GenerateConfigurations(instanceFactory, policyFactory, nReps, maxSizes)) {
+            RunMctsForProblem(conf.RandSeed, conf.Problem, conf.Policy, maxIterations, conf.MaxSize);
+          }
+        }
+      }
+    }
+    #endregion
+
+    #region findphrases
+    [TestMethod]
+    [Timeout(1000 * 60 * 60 * 120)] // 120 hours
+    public void RunMctsFindPhrasesProblem() {
+      CultureInfo.DefaultThreadCurrentCulture = CultureInfo.InvariantCulture;
+
+      var instanceFactories = new Func<int, ISymbolicExpressionTreeProblem>[]
+      {
+        (randSeed) => (ISymbolicExpressionTreeProblem) new FindPhrasesProblem(new Random(randSeed), 10, 10, 3, 10, 0, 1.0, 0.0, true),
+      };
+
+      var maxSizes = new int[] { 9, 12, 15, 21, 30 };
+      int nReps = 30;
+      int maxIterations = 100000;
+      foreach (var instanceFactory in instanceFactories) {
+        foreach (var policyFactory in policyFactories) {
+          foreach (var conf in GenerateConfigurations(instanceFactory, policyFactory, nReps, maxSizes)) {
+            RunMctsForProblem(conf.RandSeed, conf.Problem, conf.Policy, maxIterations, conf.MaxSize);
+          }
+        }
+      }
+    }
+    #endregion
+    
     #region helpers
     private IEnumerable<Configuration> GenerateConfigurations(
