Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessDemo/Form1.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessDemo/Form1.cs	(revision 9386)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/GaussianProcessDemo/Form1.cs	(revision 9387)
@@ -28,6 +28,5 @@
 
       var sum = new CovarianceSum();
-      var t = new CovarianceSquaredExponentialIso();
-      t.InverseLengthParameter.Value = new DoubleValue(1.0 / Math.Exp(-2));
+      var t = new CovarianceNeuralNetwork();
       sum.Terms.Add(t);
       sum.Terms.Add(new CovarianceNoise());
@@ -65,5 +64,5 @@
     private void UpdateChart() {
       var hyp = GetSliderValues();
-      var cov = covFunction.GetParameterizedCovarianceFunction(hyp, null);
+      var cov = covFunction.GetParameterizedCovarianceFunction(hyp, Enumerable.Range(0, data.Count));
       var y = Util.SampleGaussianProcess(random, cov, data, alpha);
 
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Grammar.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Grammar.cs	(revision 9386)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Grammar.cs	(revision 9387)
@@ -58,4 +58,5 @@
       var covRQard = new CovRQArd(Dimension);
       var covRQiso = new CovRQIso();
+      var covNN = new CovNn();
       var covMatern1 = new CovMatern(1);
       covMatern1.Name = "CovMatern1";
@@ -100,4 +101,5 @@
                             covMatern3,
                             covMatern5,
+                            covNN,
                             covPeriodic,
                             covPeriodic1,
@@ -160,4 +162,5 @@
                             covMatern3,
                             covMatern5,
+                            covNN,
                             covPeriodic,
                             covPeriodic1,
@@ -168,5 +171,4 @@
         }
       }
-
     }
 
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Interpreter.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Interpreter.cs	(revision 9386)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Interpreter.cs	(revision 9387)
@@ -109,4 +109,6 @@
       } else if (node.Symbol is CovRQArd) {
         return new CovarianceRationalQuadraticArd();
+      } else if (node.Symbol is CovNn) {
+        return new CovarianceNeuralNetwork();
       } else if (node.Symbol is CovPeriodic) {
         return new CovariancePeriodic();
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Symbols.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Symbols.cs	(revision 9386)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Symbols.cs	(revision 9387)
@@ -502,4 +502,33 @@
     }
   }
+  [StorableClass]
+  public sealed class CovNn : Symbol {
+    public override int MinimumArity {
+      get { return 0; }
+    }
+    public override int MaximumArity {
+      get { return 0; }
+    }
+
+    [StorableConstructor]
+    private CovNn(bool deserializing) : base(deserializing) { }
+    private CovNn(CovNn original, Cloner cloner)
+      : base(original, cloner) {
+    }
+
+    public CovNn()
+      : base("CovNn", "neural network covariance function") {
+    }
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+    }
+
+    public override ISymbolicExpressionTreeNode CreateTreeNode() {
+      return new CovNnTreeNode(this);
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new CovNn(this, cloner);
+    }
+  }
 
   [StorableClass]
Index: /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/TreeNodes.cs
===================================================================
--- /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/TreeNodes.cs	(revision 9386)
+++ /branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/TreeNodes.cs	(revision 9387)
@@ -228,4 +228,25 @@
   }
   [StorableClass]
+  public sealed class CovNnTreeNode : SymbolicExpressionTreeTerminalNode {
+    public new CovNn Symbol { get { return (CovNn)base.Symbol; } }
+
+    [StorableConstructor]
+    private CovNnTreeNode(bool deserializing) : base(deserializing) { }
+    private CovNnTreeNode(CovNnTreeNode original, Cloner cloner)
+      : base(original, cloner) {
+    }
+
+    public CovNnTreeNode(CovNn symbol)
+      : base(symbol) {
+    }
+
+    [StorableHook(HookType.AfterDeserialization)]
+    private void AfterDeserialization() {
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new CovNnTreeNode(this, cloner);
+    }
+  }
+  [StorableClass]
   public sealed class CovMaternTreeNode : SymbolicExpressionTreeTerminalNode {
     public new CovMatern Symbol { get { return (CovMatern)base.Symbol; } }
