Index: /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Mappers/DepthFirstMapper.cs
===================================================================
--- /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Mappers/DepthFirstMapper.cs	(revision 10074)
+++ /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Mappers/DepthFirstMapper.cs	(revision 10075)
@@ -25,4 +25,5 @@
 using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Random;
 
 namespace HeuristicLab.Problems.GrammaticalEvolution {
@@ -56,5 +57,7 @@
       SymbolicExpressionTree tree = new SymbolicExpressionTree();
       var rootNode = (SymbolicExpressionTreeTopLevelNode)grammar.ProgramRootSymbol.CreateTreeNode();
+      if (rootNode.HasLocalParameters) rootNode.ResetLocalParameters(new MersenneTwister());
       var startNode = (SymbolicExpressionTreeTopLevelNode)grammar.StartSymbol.CreateTreeNode();
+      if (startNode.HasLocalParameters) startNode.ResetLocalParameters(new MersenneTwister());
       rootNode.AddSubtree(startNode);
       tree.Root = rootNode;
@@ -96,5 +99,5 @@
         var newNode = GetNewChildNode(currentNode, genotype, grammar, genotypeIndex);
 
-        if ((currSubtreeCount + newNode.Symbol.MaximumArity) > maxSubtreeCount) {
+        if ((currSubtreeCount + newNode.Symbol.MinimumArity) > maxSubtreeCount) {
           // TODO: maybe check, if there is any node, which fits in the tree yet
           currentNode.AddSubtree(GetRandomTerminalNode(currentNode, grammar));
@@ -102,7 +105,7 @@
           currentNode.AddSubtree(newNode);
           genotypeIndex++;
-          currSubtreeCount += newNode.Symbol.MaximumArity;
+          currSubtreeCount += newNode.Symbol.MinimumArity;
 
-          while (newNode.Symbol.MaximumArity > newNode.SubtreeCount) {
+          while (newNode.Symbol.MinimumArity > newNode.SubtreeCount) {
             MapDepthFirstRecursively(newNode, genotype,
                                      grammar, maxSubtreeCount,
@@ -112,9 +115,9 @@
 
       } else {
-        while (currentNode.Symbol.MaximumArity > currentNode.SubtreeCount) {
+        while (currentNode.Symbol.MinimumArity > currentNode.SubtreeCount) {
           var newNode = GetNewChildNode(currentNode, genotype, grammar, genotypeIndex);
           currentNode.AddSubtree(newNode);
           genotypeIndex++;
-          while (newNode.Symbol.MaximumArity > newNode.SubtreeCount) {
+          while (newNode.Symbol.MinimumArity > newNode.SubtreeCount) {
             newNode.AddSubtree(GetRandomTerminalNode(newNode, grammar));
           }
Index: /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Mappers/GenotypeToPhenotypeMapper.cs
===================================================================
--- /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Mappers/GenotypeToPhenotypeMapper.cs	(revision 10074)
+++ /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Mappers/GenotypeToPhenotypeMapper.cs	(revision 10075)
@@ -52,10 +52,14 @@
     protected ISymbolicExpressionTreeNode GetRandomTerminalNode(ISymbolicExpressionTreeNode parentNode,
                                                               ISymbolicExpressionGrammar grammar) {
-      var possibleSymbolsList = from s in grammar.GetAllowedChildSymbols(parentNode.Symbol)
-                                where s.MaximumArity == 0
-                                where s.MinimumArity == 0
-                                select s;
-      // TODO: Check, if symbol list is empty (no terminal nodes found) - what should happen? 
-      return possibleSymbolsList.SelectRandom(new MersenneTwister()).CreateTreeNode();
+      // only select specific symbols, which can be interpreted ...
+      var possibleSymbolsList = (from s in grammar.GetAllowedChildSymbols(parentNode.Symbol)
+                                 where s.InitialFrequency > 0.0
+                                 where s.MaximumArity == 0
+                                 where s.MinimumArity == 0
+                                 select s).ToList();
+      // TODO: Check, if symbol list is empty (no terminal nodes found) - what should happen?
+      var newNode = possibleSymbolsList.SelectRandom(new MersenneTwister()).CreateTreeNode();
+      if (newNode.HasLocalParameters) newNode.ResetLocalParameters(new MersenneTwister());
+      return newNode;
     }
 
@@ -74,9 +78,14 @@
                                                           int genotypeIndex) {
 
-      IEnumerable<ISymbol> symbolList = grammar.GetAllowedChildSymbols(parentNode.Symbol);
+      // only select specific symbols, which can be interpreted ...
+      IEnumerable<ISymbol> symbolList = (from s in grammar.GetAllowedChildSymbols(parentNode.Symbol)
+                                         where s.InitialFrequency > 0.0
+                                         select s).ToList();
       int prodRuleCount = symbolList.Count();
       int prodRuleIndex = genotype[genotypeIndex % genotype.Length] % prodRuleCount;
 
-      return symbolList.ElementAt(prodRuleIndex).CreateTreeNode();
+      var newNode = symbolList.ElementAt(prodRuleIndex).CreateTreeNode();
+      if (newNode.HasLocalParameters) newNode.ResetLocalParameters(new MersenneTwister());
+      return newNode;
     }
   }
Index: /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicDataAnalysisProblem.cs
===================================================================
--- /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicDataAnalysisProblem.cs	(revision 10074)
+++ /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicDataAnalysisProblem.cs	(revision 10075)
@@ -41,6 +41,7 @@
   [StorableClass]
   // TODO: ISymbolicDataAnalysisProblem -> IGESymbolicDataAnalysisProblem
-  public abstract class GESymbolicDataAnalysisProblem<T, U, V> : HeuristicOptimizationProblem<U, V>, IDataAnalysisProblem<T>, ISymbolicDataAnalysisProblem, IStorableContent,
-    IProblemInstanceConsumer<T>, IProblemInstanceExporter<T>
+  public abstract class GESymbolicDataAnalysisProblem<T, U, V> : HeuristicOptimizationProblem<U, V>, IDataAnalysisProblem<T>,
+                                                                 ISymbolicDataAnalysisProblem, IStorableContent,
+                                                                 IProblemInstanceConsumer<T>, IProblemInstanceExporter<T>
     where T : class, IDataAnalysisProblemData
     where U : class, IGESymbolicDataAnalysisEvaluator<T>
@@ -244,5 +245,5 @@
     private void InitializeOperators() {
       Operators.AddRange(ApplicationManager.Manager.GetInstances<IIntegerVectorOperator>().OfType<IOperator>());
-      Operators.AddRange(ApplicationManager.Manager.GetInstances<ISymbolicDataAnalysisExpressionCrossover<T>>());
+      // Operators.AddRange(ApplicationManager.Manager.GetInstances<ISymbolicDataAnalysisExpressionCrossover<T>>());
       Operators.Add(new SymbolicExpressionSymbolFrequencyAnalyzer());
       Operators.Add(new SymbolicDataAnalysisVariableFrequencyAnalyzer());
@@ -338,8 +339,11 @@
         op.RelativeNumberOfEvaluatedSamplesParameter.ActualName = RelativeNumberOfEvaluatedSamplesParameter.Name;
         op.ApplyLinearScalingParameter.ActualName = ApplyLinearScalingParameter.Name;
+        op.IntegerVectorParameter.ActualName = SolutionCreator.IntegerVectorParameter.Name;
+        op.GenotypeToPhenotypeMapperParameter.ActualName = GenotypeToPhenotypeMapperParameter.Name;
+        op.SymbolicExpressionTreeGrammarParameter.ActualName = SymbolicExpressionTreeGrammarParameter.Name;
       }
       foreach (var op in operators.OfType<IIntegerVectorCrossover>()) {
-        op.ParentsParameter.ActualName = Evaluator.SymbolicExpressionTreeParameter.ActualName;
-        op.ChildParameter.ActualName = Evaluator.SymbolicExpressionTreeParameter.ActualName;
+        op.ParentsParameter.ActualName = SolutionCreator.IntegerVectorParameter.ActualName;
+        op.ChildParameter.ActualName = SolutionCreator.IntegerVectorParameter.ActualName;
       }
       foreach (var op in operators.OfType<IIntegerVectorManipulator>()) {
@@ -369,4 +373,5 @@
         op.SymbolicDataAnalysisTreeInterpreterParameter.ActualName = SymbolicExpressionTreeInterpreterParameter.Name;
       }
+      /*
       foreach (var op in operators.OfType<ISymbolicDataAnalysisExpressionCrossover<T>>()) {
         op.EvaluationPartitionParameter.ActualName = FitnessCalculationPartitionParameter.Name;
@@ -376,4 +381,5 @@
         op.EvaluatorParameter.ActualName = EvaluatorParameter.Name;
       }
+      */
     }
 
Index: /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicDataAnalysisSingleObjectiveProblem.cs
===================================================================
--- /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicDataAnalysisSingleObjectiveProblem.cs	(revision 10074)
+++ /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicDataAnalysisSingleObjectiveProblem.cs	(revision 10075)
@@ -34,6 +34,7 @@
 namespace HeuristicLab.Problems.GrammaticalEvolution {
   [StorableClass]
-  public abstract class GESymbolicDataAnalysisSingleObjectiveProblem<T, U, V> : GESymbolicDataAnalysisProblem<T, U, V>, ISymbolicDataAnalysisSingleObjectiveProblem
-    where T : class,IDataAnalysisProblemData
+  public abstract class GESymbolicDataAnalysisSingleObjectiveProblem<T, U, V> : GESymbolicDataAnalysisProblem<T, U, V>,
+                                                                                ISymbolicDataAnalysisSingleObjectiveProblem
+    where T : class, IDataAnalysisProblemData
     where U : class, IGESymbolicDataAnalysisSingleObjectiveEvaluator<T>
     where V : class, IIntegerVectorCreator {
Index: /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicRegressionSingleObjectiveEvaluator.cs
===================================================================
--- /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicRegressionSingleObjectiveEvaluator.cs	(revision 10074)
+++ /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicRegressionSingleObjectiveEvaluator.cs	(revision 10075)
@@ -27,5 +27,6 @@
 namespace HeuristicLab.Problems.GrammaticalEvolution {
   [StorableClass]
-  public abstract class GESymbolicRegressionSingleObjectiveEvaluator : GESymbolicDataAnalysisSingleObjectiveEvaluator<IRegressionProblemData>, IGESymbolicRegressionSingleObjectiveEvaluator {
+  public abstract class GESymbolicRegressionSingleObjectiveEvaluator : GESymbolicDataAnalysisSingleObjectiveEvaluator<IRegressionProblemData>,
+                                                                       IGESymbolicRegressionSingleObjectiveEvaluator {
     [StorableConstructor]
     protected GESymbolicRegressionSingleObjectiveEvaluator(bool deserializing) : base(deserializing) { }
Index: /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicRegressionSingleObjectiveProblem.cs
===================================================================
--- /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicRegressionSingleObjectiveProblem.cs	(revision 10074)
+++ /branches/GrammaticalEvolution/HeuristicLab.Problems.GrammaticalEvolution/Symbolic/GESymbolicRegressionSingleObjectiveProblem.cs	(revision 10075)
@@ -34,5 +34,6 @@
   [StorableClass]
   [Creatable("Problems")]
-  public class GESymbolicRegressionSingleObjectiveProblem : GESymbolicDataAnalysisSingleObjectiveProblem<IRegressionProblemData, IGESymbolicRegressionSingleObjectiveEvaluator, IIntegerVectorCreator>, IRegressionProblem {
+  public class GESymbolicRegressionSingleObjectiveProblem : GESymbolicDataAnalysisSingleObjectiveProblem<IRegressionProblemData, IGESymbolicRegressionSingleObjectiveEvaluator, IIntegerVectorCreator>,
+                                                            IRegressionProblem {
     private const double PunishmentFactor = 10;
     private const int InitialMaximumTreeDepth = 8;
