Index: /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Grammar.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Grammar.cs	(revision 12390)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Grammar.cs	(revision 12391)
@@ -175,5 +175,5 @@
     }
 
-    public Sequence CompleteSentenceRandomly(Random random, Sequence phrase, int maxLen) {
+    public Sequence CompleteSentenceRandomly(System.Random random, Sequence phrase, int maxLen) {
       if (phrase.Length > maxLen) throw new ArgumentException();
       if (MinPhraseLength(phrase) > maxLen) throw new ArgumentException();
Index: /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Problems.GrammaticalOptimization.csproj
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Problems.GrammaticalOptimization.csproj	(revision 12390)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/HeuristicLab.Problems.GrammaticalOptimization.csproj	(revision 12391)
@@ -46,4 +46,7 @@
       <HintPath>..\HeuristicLab\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.dll</HintPath>
     </Reference>
+    <Reference Include="HeuristicLab.Random-3.3">
+      <HintPath>..\..\..\..\..\Program Files\HeuristicLab 3.3\HeuristicLab.Random-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
Index: /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Interfaces/IGrammar.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Interfaces/IGrammar.cs	(revision 12390)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Interfaces/IGrammar.cs	(revision 12391)
@@ -20,5 +20,5 @@
     int MinPhraseLength(Sequence phrase);
     int MaxPhraseLength(Sequence phrase);
-    Sequence CompleteSentenceRandomly(Random random, Sequence phrase, int maxLen);
+    Sequence CompleteSentenceRandomly(System.Random random, Sequence phrase, int maxLen);
 
     bool IsTerminal(char symbol);
Index: /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/FindPhrasesProblem.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/FindPhrasesProblem.cs	(revision 12390)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/FindPhrasesProblem.cs	(revision 12391)
@@ -29,9 +29,12 @@
     private readonly double decoyReward;
     private readonly bool phrasesAsSets;
+    private readonly int alphabetSize;
+    private readonly int numOptimalPhrases;
+    private readonly int numDecoyPhrases;
     private readonly SortedSet<string> optimalPhrases;
     private readonly SortedSet<string> decoyPhrases;
-    public string Name { get { return "FindPhrases"; } }
+    public string Name { get { return string.Format("FindPhrases({0},{1},{2},{3},{4},{5},{6},{7})", alphabetSize, numPhrases, phraseLen, numOptimalPhrases, numDecoyPhrases, correctReward, decoyReward, phrasesAsSets); } }
 
-    public FindPhrasesProblem(Random rand, int alphabetSize, int numPhrases, int phraseLen, int numOptimalPhrases, int numDecoyPhrases = 1,
+    public FindPhrasesProblem(System.Random rand, int alphabetSize, int numPhrases, int phraseLen, int numOptimalPhrases, int numDecoyPhrases = 1,
       double correctReward = 1.0, double decoyReward = 0.0, bool phrasesAsSets = false) {
       if (alphabetSize <= 0 || alphabetSize > 26) throw new ArgumentException();
@@ -47,4 +50,7 @@
       this.decoyReward = decoyReward;
       this.phrasesAsSets = phrasesAsSets;
+      this.alphabetSize = alphabetSize;
+      this.numOptimalPhrases = numOptimalPhrases;
+      this.numDecoyPhrases = numDecoyPhrases;
 
       var sentenceSymbol = 'S';
Index: /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/RoyalPairProblem.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/RoyalPairProblem.cs	(revision 12390)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/RoyalPairProblem.cs	(revision 12391)
@@ -5,5 +5,7 @@
 using System.Text;
 using System.Text.RegularExpressions;
+using HeuristicLab.Common;
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.GrammaticalOptimization {
@@ -13,5 +15,5 @@
     private readonly IGrammar grammar;
     private readonly int numTerminals;
-    public string Name { get { return "RoyalPair"; } }
+    public string Name { get { return string.Format("RoyalPair({0})", numTerminals); } }
 
     public RoyalPairProblem(int numTerminals = 2) {
@@ -19,5 +21,7 @@
 
       var sentenceSymbol = 'S';
-      var terminalSymbols = Enumerable.Range(0, numTerminals).Select(off => (char)((byte)'a' + off)).ToArray();
+      var terminalSymbols = Enumerable.Range(0, numTerminals).Select(off => (char)((byte)'a' + off)).ToList();
+      terminalSymbols.ShuffleInPlace(new MersenneTwister(31415));
+
       var nonTerminalSymbols = new char[] { sentenceSymbol };
 
Index: /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/RoyalPhraseSequenceProblem.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/RoyalPhraseSequenceProblem.cs	(revision 12390)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/RoyalPhraseSequenceProblem.cs	(revision 12391)
@@ -33,5 +33,5 @@
     private readonly SortedSet<string>[] optimalPhrasesForPos;
     public string Name { get { return "RoyalPhraseSequence"; } }
-    public RoyalPhraseSequenceProblem(Random rand, int alphabetSize, int sequenceLen, int phraseLen = 1, int numCorrectPhrases = 1, double correctReward = 1.0, double incorrectReward = 0.0, bool phrasesAsSets = false) {
+    public RoyalPhraseSequenceProblem(System.Random rand, int alphabetSize, int sequenceLen, int phraseLen = 1, int numCorrectPhrases = 1, double correctReward = 1.0, double incorrectReward = 0.0, bool phrasesAsSets = false) {
       if (alphabetSize <= 0 || alphabetSize > 26) throw new ArgumentException();
       if (sequenceLen <= 0) throw new ArgumentException();
Index: /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/RoyalSequenceProblem.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/RoyalSequenceProblem.cs	(revision 12390)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/RoyalSequenceProblem.cs	(revision 12391)
@@ -24,5 +24,5 @@
     private readonly SortedSet<char>[] optimalSymbolsForPos;
     public string Name { get { return "RoyalSequence"; } }
-    public RoyalSequenceProblem(Random rand, int alphabetSize, int sequenceLen, int k = 1, double correctReward = 1.0, double incorrectReward = 0.0) {
+    public RoyalSequenceProblem(System.Random rand, int alphabetSize, int sequenceLen, int k = 1, double correctReward = 1.0, double incorrectReward = 0.0) {
       if (alphabetSize <= 0 || alphabetSize > 26) throw new ArgumentException();
       if (sequenceLen <= 0) throw new ArgumentException();
Index: /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/SymbolicRegressionPoly10Problem.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/SymbolicRegressionPoly10Problem.cs	(revision 12390)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/HeuristicLab.Problems.GrammaticalOptimization/Problems/SymbolicRegressionPoly10Problem.cs	(revision 12391)
@@ -73,5 +73,5 @@
     private void GenerateData() {
       // generate data with fixed seed to make sure that data is always the same
-      var rand = new Random(31415);
+      var rand = new System.Random(31415);
       for (int i = 0; i < N; i++) {
         x[i] = new double[10];
Index: /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/Test/RunMctsExperiments.cs
===================================================================
--- /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/Test/RunMctsExperiments.cs	(revision 12390)
+++ /branches/HeuristicLab.Problems.GrammaticalOptimization-gkr/Test/RunMctsExperiments.cs	(revision 12391)
@@ -180,7 +180,7 @@
       };
 
-      var maxSizes = new int[] { 10, 20, 30, 40, 50 };
-      int nReps = 30;
-      int maxIterations = 10000;
+      var maxSizes = new int[] { /*10, 20, 30, 40,*/ 25, 50 };
+      int nReps = 30;
+      int maxIterations = 20000;
       foreach (var instanceFactory in instanceFactories) {
         foreach (var policyFactory in policyFactories) {
@@ -307,5 +307,5 @@
       var solver = new SequentialSearch(problem, maxSize, new Random(randSeed), 0,
         new GenericGrammarPolicy(problem, policy, false));
-      var problemName = problem.GetType().Name;
+      var problemName = problem.Name;
       RunSolver(solver, problemName, policy.ToString(), maxIters, maxSize);
     }
