Index: trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.3/SymbolView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.3/SymbolView.Designer.cs	(revision 5324)
+++ trunk/sources/HeuristicLab.Encodings.SymbolicExpressionTreeEncoding.Views/3.3/SymbolView.Designer.cs	(revision 5326)
@@ -66,5 +66,5 @@
       // 
       this.initialFrequencyLabel.AutoSize = true;
-      this.initialFrequencyLabel.Location = new System.Drawing.Point(6, 56);
+      this.initialFrequencyLabel.Location = new System.Drawing.Point(3, 56);
       this.initialFrequencyLabel.Name = "initialFrequencyLabel";
       this.initialFrequencyLabel.Size = new System.Drawing.Size(84, 13);
@@ -88,10 +88,10 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.initialFrequencyTextBox);
       this.Controls.Add(this.initialFrequencyLabel);
-      this.Controls.Add(this.initialFrequencyTextBox);
       this.Name = "SymbolView";
       this.Size = new System.Drawing.Size(320, 79);
+      this.Controls.SetChildIndex(this.initialFrequencyLabel, 0);
       this.Controls.SetChildIndex(this.initialFrequencyTextBox, 0);
-      this.Controls.SetChildIndex(this.initialFrequencyLabel, 0);
       this.Controls.SetChildIndex(this.nameLabel, 0);
       this.Controls.SetChildIndex(this.descriptionLabel, 0);
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/ConstantView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/ConstantView.Designer.cs	(revision 5324)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/ConstantView.Designer.cs	(revision 5326)
@@ -51,8 +51,8 @@
       this.maxValueTextBox = new System.Windows.Forms.TextBox();
       this.mutationGroupBox = new System.Windows.Forms.GroupBox();
-      this.stdDevWeightChangeLabel = new System.Windows.Forms.Label();
-      this.valueChangeSigmaTextBox = new System.Windows.Forms.TextBox();
-      this.meanWeightChangeLabel = new System.Windows.Forms.Label();
-      this.valueChangeMuTextBox = new System.Windows.Forms.TextBox();
+      this.multiplicativeChangeLabel = new System.Windows.Forms.Label();
+      this.multiplicativeChangeSigmaTextBox = new System.Windows.Forms.TextBox();
+      this.additiveChangeLabel = new System.Windows.Forms.Label();
+      this.additiveChangeSigmaTextBox = new System.Windows.Forms.TextBox();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.initializationGroupBox.SuspendLayout();
@@ -67,5 +67,5 @@
       // 
       this.errorProvider.SetIconAlignment(this.initialFrequencyTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.initialFrequencyTextBox.Size = new System.Drawing.Size(203, 20);
+      this.initialFrequencyTextBox.Size = new System.Drawing.Size(275, 20);
       // 
       // nameTextBox
@@ -73,10 +73,10 @@
       this.errorProvider.SetIconAlignment(this.nameTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
       this.errorProvider.SetIconPadding(this.nameTextBox, 2);
-      this.nameTextBox.Size = new System.Drawing.Size(203, 20);
+      this.nameTextBox.Size = new System.Drawing.Size(275, 20);
       // 
       // descriptionTextBox
       // 
       this.errorProvider.SetIconAlignment(this.descriptionTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.descriptionTextBox.Size = new System.Drawing.Size(203, 20);
+      this.descriptionTextBox.Size = new System.Drawing.Size(275, 20);
       // 
       // weightNuLabel
@@ -97,5 +97,5 @@
       this.minValueTextBox.Location = new System.Drawing.Point(92, 19);
       this.minValueTextBox.Name = "minValueTextBox";
-      this.minValueTextBox.Size = new System.Drawing.Size(222, 20);
+      this.minValueTextBox.Size = new System.Drawing.Size(291, 20);
       this.minValueTextBox.TabIndex = 7;
       this.toolTip.SetToolTip(this.minValueTextBox, "The minimal value to use for random initialization of constants.");
@@ -112,5 +112,5 @@
       this.initializationGroupBox.Location = new System.Drawing.Point(3, 79);
       this.initializationGroupBox.Name = "initializationGroupBox";
-      this.initializationGroupBox.Size = new System.Drawing.Size(320, 73);
+      this.initializationGroupBox.Size = new System.Drawing.Size(389, 73);
       this.initializationGroupBox.TabIndex = 8;
       this.initializationGroupBox.TabStop = false;
@@ -134,5 +134,5 @@
       this.maxValueTextBox.Location = new System.Drawing.Point(92, 45);
       this.maxValueTextBox.Name = "maxValueTextBox";
-      this.maxValueTextBox.Size = new System.Drawing.Size(222, 20);
+      this.maxValueTextBox.Size = new System.Drawing.Size(291, 20);
       this.maxValueTextBox.TabIndex = 9;
       this.toolTip.SetToolTip(this.maxValueTextBox, "The maximal value to use for random initialization of constants.");
@@ -143,60 +143,62 @@
       this.mutationGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.mutationGroupBox.Controls.Add(this.stdDevWeightChangeLabel);
-      this.mutationGroupBox.Controls.Add(this.valueChangeSigmaTextBox);
-      this.mutationGroupBox.Controls.Add(this.meanWeightChangeLabel);
-      this.mutationGroupBox.Controls.Add(this.valueChangeMuTextBox);
+      this.mutationGroupBox.Controls.Add(this.multiplicativeChangeLabel);
+      this.mutationGroupBox.Controls.Add(this.multiplicativeChangeSigmaTextBox);
+      this.mutationGroupBox.Controls.Add(this.additiveChangeLabel);
+      this.mutationGroupBox.Controls.Add(this.additiveChangeSigmaTextBox);
       this.mutationGroupBox.Location = new System.Drawing.Point(3, 158);
       this.mutationGroupBox.Name = "mutationGroupBox";
-      this.mutationGroupBox.Size = new System.Drawing.Size(320, 73);
+      this.mutationGroupBox.Size = new System.Drawing.Size(389, 73);
       this.mutationGroupBox.TabIndex = 9;
       this.mutationGroupBox.TabStop = false;
       this.mutationGroupBox.Text = "Mutation";
       // 
-      // stdDevWeightChangeLabel
-      // 
-      this.stdDevWeightChangeLabel.AutoSize = true;
-      this.stdDevWeightChangeLabel.Location = new System.Drawing.Point(6, 48);
-      this.stdDevWeightChangeLabel.Name = "stdDevWeightChangeLabel";
-      this.stdDevWeightChangeLabel.Size = new System.Drawing.Size(112, 13);
-      this.stdDevWeightChangeLabel.TabIndex = 8;
-      this.stdDevWeightChangeLabel.Text = "Value change (sigma):";
-      this.toolTip.SetToolTip(this.stdDevWeightChangeLabel, "The sigma (std. dev.) parameter for the normal distribution to use to sample the " +
-              "value change.");
-      // 
-      // valueChangeSigmaTextBox
-      // 
-      this.valueChangeSigmaTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.errorProvider.SetIconAlignment(this.valueChangeSigmaTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.valueChangeSigmaTextBox.Location = new System.Drawing.Point(136, 45);
-      this.valueChangeSigmaTextBox.Name = "valueChangeSigmaTextBox";
-      this.valueChangeSigmaTextBox.Size = new System.Drawing.Size(178, 20);
-      this.valueChangeSigmaTextBox.TabIndex = 9;
-      this.toolTip.SetToolTip(this.valueChangeSigmaTextBox, "The sigma (std. dev.) parameter for the normal distribution to use to sample the " +
-              "value change.");
-      this.valueChangeSigmaTextBox.TextChanged += new System.EventHandler(this.valueChangeSigmaTextBox_TextChanged);
-      // 
-      // meanWeightChangeLabel
-      // 
-      this.meanWeightChangeLabel.AutoSize = true;
-      this.meanWeightChangeLabel.Location = new System.Drawing.Point(6, 22);
-      this.meanWeightChangeLabel.Name = "meanWeightChangeLabel";
-      this.meanWeightChangeLabel.Size = new System.Drawing.Size(99, 13);
-      this.meanWeightChangeLabel.TabIndex = 6;
-      this.meanWeightChangeLabel.Text = "Value change (mu):";
-      this.toolTip.SetToolTip(this.meanWeightChangeLabel, "The mu (mean) parameter for the normal distribution to sample the value change.");
-      // 
-      // valueChangeMuTextBox
-      // 
-      this.valueChangeMuTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.errorProvider.SetIconAlignment(this.valueChangeMuTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
-      this.valueChangeMuTextBox.Location = new System.Drawing.Point(136, 19);
-      this.valueChangeMuTextBox.Name = "valueChangeMuTextBox";
-      this.valueChangeMuTextBox.Size = new System.Drawing.Size(178, 20);
-      this.valueChangeMuTextBox.TabIndex = 7;
-      this.toolTip.SetToolTip(this.valueChangeMuTextBox, "The mu (mean) parameter for the normal distribution to sample the value change.");
-      this.valueChangeMuTextBox.TextChanged += new System.EventHandler(this.valueChangeMuTextBox_TextChanged);
+      // multiplicativeChangeLabel
+      // 
+      this.multiplicativeChangeLabel.AutoSize = true;
+      this.multiplicativeChangeLabel.Location = new System.Drawing.Point(6, 48);
+      this.multiplicativeChangeLabel.Name = "multiplicativeChangeLabel";
+      this.multiplicativeChangeLabel.Size = new System.Drawing.Size(146, 13);
+      this.multiplicativeChangeLabel.TabIndex = 8;
+      this.multiplicativeChangeLabel.Text = "Multiplicative change (sigma):";
+      this.toolTip.SetToolTip(this.multiplicativeChangeLabel, "The sigma (std. dev.) parameter for the normal distribution to use to sample the " +
+              "multiplicative change.");
+      // 
+      // multiplicativeChangeSigmaTextBox
+      // 
+      this.multiplicativeChangeSigmaTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.errorProvider.SetIconAlignment(this.multiplicativeChangeSigmaTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.multiplicativeChangeSigmaTextBox.Location = new System.Drawing.Point(168, 45);
+      this.multiplicativeChangeSigmaTextBox.Name = "multiplicativeChangeSigmaTextBox";
+      this.multiplicativeChangeSigmaTextBox.Size = new System.Drawing.Size(215, 20);
+      this.multiplicativeChangeSigmaTextBox.TabIndex = 9;
+      this.toolTip.SetToolTip(this.multiplicativeChangeSigmaTextBox, "The sigma (std. dev.) parameter for the normal distribution to use to sample a mu" +
+              "ltiplicative change.");
+      this.multiplicativeChangeSigmaTextBox.TextChanged += new System.EventHandler(this.multiplicativeChangeSigmaTextBox_TextChanged);
+      // 
+      // additiveChangeLabel
+      // 
+      this.additiveChangeLabel.AutoSize = true;
+      this.additiveChangeLabel.Location = new System.Drawing.Point(6, 22);
+      this.additiveChangeLabel.Name = "additiveChangeLabel";
+      this.additiveChangeLabel.Size = new System.Drawing.Size(123, 13);
+      this.additiveChangeLabel.TabIndex = 6;
+      this.additiveChangeLabel.Text = "Additive change (sigma):";
+      this.toolTip.SetToolTip(this.additiveChangeLabel, "The sigma (std. dev.) parameter for the normal distribution to sample the additiv" +
+              "e change.");
+      // 
+      // additiveChangeSigmaTextBox
+      // 
+      this.additiveChangeSigmaTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.errorProvider.SetIconAlignment(this.additiveChangeSigmaTextBox, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.additiveChangeSigmaTextBox.Location = new System.Drawing.Point(168, 19);
+      this.additiveChangeSigmaTextBox.Name = "additiveChangeSigmaTextBox";
+      this.additiveChangeSigmaTextBox.Size = new System.Drawing.Size(215, 20);
+      this.additiveChangeSigmaTextBox.TabIndex = 7;
+      this.toolTip.SetToolTip(this.additiveChangeSigmaTextBox, "The sigma (std. dev.) parameter for the normal distribution to use to sample an a" +
+              "dditive change.");
+      this.additiveChangeSigmaTextBox.TextChanged += new System.EventHandler(this.additiveChangeSigmaTextBox_TextChanged);
       // 
       // ConstantView
@@ -207,5 +209,5 @@
       this.Controls.Add(this.initializationGroupBox);
       this.Name = "ConstantView";
-      this.Size = new System.Drawing.Size(326, 235);
+      this.Size = new System.Drawing.Size(398, 237);
       this.Controls.SetChildIndex(this.initializationGroupBox, 0);
       this.Controls.SetChildIndex(this.initialFrequencyTextBox, 0);
@@ -234,8 +236,8 @@
     private System.Windows.Forms.TextBox maxValueTextBox;
     protected System.Windows.Forms.GroupBox mutationGroupBox;
-    private System.Windows.Forms.Label stdDevWeightChangeLabel;
-    private System.Windows.Forms.TextBox valueChangeSigmaTextBox;
-    private System.Windows.Forms.Label meanWeightChangeLabel;
-    private System.Windows.Forms.TextBox valueChangeMuTextBox;
+    private System.Windows.Forms.Label multiplicativeChangeLabel;
+    private System.Windows.Forms.TextBox multiplicativeChangeSigmaTextBox;
+    private System.Windows.Forms.Label additiveChangeLabel;
+    private System.Windows.Forms.TextBox additiveChangeSigmaTextBox;
 
   }
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/ConstantView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/ConstantView.cs	(revision 5324)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/ConstantView.cs	(revision 5326)
@@ -61,8 +61,8 @@
       maxValueTextBox.Enabled = Content != null;
       maxValueTextBox.ReadOnly = ReadOnly;
-      valueChangeMuTextBox.Enabled = Content != null;
-      valueChangeMuTextBox.ReadOnly = ReadOnly;
-      valueChangeSigmaTextBox.Enabled = Content != null;
-      valueChangeSigmaTextBox.ReadOnly = ReadOnly;
+      additiveChangeSigmaTextBox.Enabled = Content != null;
+      additiveChangeSigmaTextBox.ReadOnly = ReadOnly;
+      multiplicativeChangeSigmaTextBox.Enabled = Content != null;
+      multiplicativeChangeSigmaTextBox.ReadOnly = ReadOnly;
     }
 
@@ -93,21 +93,21 @@
     }
 
-    private void valueChangeMuTextBox_TextChanged(object sender, EventArgs e) {
-      double nu;
-      if (double.TryParse(valueChangeMuTextBox.Text, out nu)) {
-        Content.ManipulatorMu = nu;
-        errorProvider.SetError(valueChangeMuTextBox, string.Empty);
+    private void additiveChangeSigmaTextBox_TextChanged(object sender, EventArgs e) {
+      double sigma;
+      if (double.TryParse(additiveChangeSigmaTextBox.Text, out sigma) && sigma >= 0.0) {
+        Content.ManipulatorSigma = sigma;
+        errorProvider.SetError(additiveChangeSigmaTextBox, string.Empty);
       } else {
-        errorProvider.SetError(valueChangeMuTextBox, "Invalid value");
+        errorProvider.SetError(additiveChangeSigmaTextBox, "Invalid value");
       }
     }
 
-    private void valueChangeSigmaTextBox_TextChanged(object sender, EventArgs e) {
+    private void multiplicativeChangeSigmaTextBox_TextChanged(object sender, EventArgs e) {
       double sigma;
-      if (double.TryParse(valueChangeSigmaTextBox.Text, out sigma) && sigma >= 0.0) {
-        Content.ManipulatorSigma = sigma;
-        errorProvider.SetError(valueChangeSigmaTextBox, string.Empty);
+      if (double.TryParse(multiplicativeChangeSigmaTextBox.Text, out sigma) && sigma >= 0.0) {
+        Content.MultiplicativeManipulatorSigma = sigma;
+        errorProvider.SetError(multiplicativeChangeSigmaTextBox, string.Empty);
       } else {
-        errorProvider.SetError(valueChangeSigmaTextBox, "Invalid value");
+        errorProvider.SetError(multiplicativeChangeSigmaTextBox, "Invalid value");
       }
     }
@@ -120,10 +120,11 @@
         maxValueTextBox.Text = string.Empty;
         minValueTextBox.Text = string.Empty;
-        valueChangeSigmaTextBox.Text = string.Empty;
+        multiplicativeChangeSigmaTextBox.Text = string.Empty;
+        additiveChangeSigmaTextBox.Text = string.Empty;
       } else {
         minValueTextBox.Text = Content.MinValue.ToString();
         maxValueTextBox.Text = Content.MaxValue.ToString();
-        valueChangeMuTextBox.Text = Content.ManipulatorMu.ToString();
-        valueChangeSigmaTextBox.Text = Content.ManipulatorSigma.ToString();
+        additiveChangeSigmaTextBox.Text = Content.ManipulatorSigma.ToString();
+        multiplicativeChangeSigmaTextBox.Text = Content.MultiplicativeManipulatorSigma.ToString();
       }
       SetEnabledStateOfControls();
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/VariableView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/VariableView.Designer.cs	(revision 5324)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/VariableView.Designer.cs	(revision 5326)
@@ -46,13 +46,13 @@
     private void InitializeComponent() {
       this.weightMuLabel = new System.Windows.Forms.Label();
-      this.weightMuTextBox = new System.Windows.Forms.TextBox();
+      this.weightInitializationMuTextBox = new System.Windows.Forms.TextBox();
       this.initializationGroupBox = new System.Windows.Forms.GroupBox();
       this.weightSigmaLabel = new System.Windows.Forms.Label();
-      this.weightSigmaTextBox = new System.Windows.Forms.TextBox();
+      this.weightInitializationSigmaTextBox = new System.Windows.Forms.TextBox();
       this.mutationGroupBox = new System.Windows.Forms.GroupBox();
-      this.stdDevWeightChangeLabel = new System.Windows.Forms.Label();
-      this.weightChangeSigmaTextBox = new System.Windows.Forms.TextBox();
-      this.meanWeightChangeLabel = new System.Windows.Forms.Label();
-      this.weightChangeMuTextBox = new System.Windows.Forms.TextBox();
+      this.multiplicativeWeightChangeLabel = new System.Windows.Forms.Label();
+      this.multiplicativeWeightChangeSigmaTextBox = new System.Windows.Forms.TextBox();
+      this.additiveWeightChangeLabel = new System.Windows.Forms.Label();
+      this.additiveWeightChangeSigmaTextBox = new System.Windows.Forms.TextBox();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.initializationGroupBox.SuspendLayout();
@@ -90,15 +90,15 @@
       this.toolTip.SetToolTip(this.weightMuLabel, "The mu (mean) parameter of the normal distribution to use for initial weights.");
       // 
-      // weightMuTextBox
-      // 
-      this.weightMuTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.weightMuTextBox.Location = new System.Drawing.Point(92, 19);
-      this.weightMuTextBox.Name = "weightMuTextBox";
-      this.weightMuTextBox.Size = new System.Drawing.Size(201, 20);
-      this.weightMuTextBox.TabIndex = 7;
-      this.toolTip.SetToolTip(this.weightMuTextBox, "The mu (mean) parameter of the normal distribution from which to sample the initi" +
+      // weightInitializationMuTextBox
+      // 
+      this.weightInitializationMuTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.weightInitializationMuTextBox.Location = new System.Drawing.Point(92, 19);
+      this.weightInitializationMuTextBox.Name = "weightInitializationMuTextBox";
+      this.weightInitializationMuTextBox.Size = new System.Drawing.Size(222, 20);
+      this.weightInitializationMuTextBox.TabIndex = 7;
+      this.toolTip.SetToolTip(this.weightInitializationMuTextBox, "The mu (mean) parameter of the normal distribution from which to sample the initi" +
               "al weights.");
-      this.weightMuTextBox.TextChanged += new System.EventHandler(this.weightMuTextBox_TextChanged);
+      this.weightInitializationMuTextBox.TextChanged += new System.EventHandler(this.weightMuTextBox_TextChanged);
       // 
       // initializationGroupBox
@@ -107,7 +107,7 @@
                   | System.Windows.Forms.AnchorStyles.Right)));
       this.initializationGroupBox.Controls.Add(this.weightSigmaLabel);
-      this.initializationGroupBox.Controls.Add(this.weightSigmaTextBox);
+      this.initializationGroupBox.Controls.Add(this.weightInitializationSigmaTextBox);
       this.initializationGroupBox.Controls.Add(this.weightMuLabel);
-      this.initializationGroupBox.Controls.Add(this.weightMuTextBox);
+      this.initializationGroupBox.Controls.Add(this.weightInitializationMuTextBox);
       this.initializationGroupBox.Location = new System.Drawing.Point(3, 79);
       this.initializationGroupBox.Name = "initializationGroupBox";
@@ -127,15 +127,15 @@
       this.toolTip.SetToolTip(this.weightSigmaLabel, "The sigma parameter for the normal distribution to use for the initial weights.");
       // 
-      // weightSigmaTextBox
-      // 
-      this.weightSigmaTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.weightSigmaTextBox.Location = new System.Drawing.Point(92, 45);
-      this.weightSigmaTextBox.Name = "weightSigmaTextBox";
-      this.weightSigmaTextBox.Size = new System.Drawing.Size(201, 20);
-      this.weightSigmaTextBox.TabIndex = 9;
-      this.toolTip.SetToolTip(this.weightSigmaTextBox, "The sigma parameter for the normal distribution from which to sample the initial " +
+      // weightInitializationSigmaTextBox
+      // 
+      this.weightInitializationSigmaTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.weightInitializationSigmaTextBox.Location = new System.Drawing.Point(92, 45);
+      this.weightInitializationSigmaTextBox.Name = "weightInitializationSigmaTextBox";
+      this.weightInitializationSigmaTextBox.Size = new System.Drawing.Size(222, 20);
+      this.weightInitializationSigmaTextBox.TabIndex = 9;
+      this.toolTip.SetToolTip(this.weightInitializationSigmaTextBox, "The sigma parameter for the normal distribution from which to sample the initial " +
               "weights.");
-      this.weightSigmaTextBox.TextChanged += new System.EventHandler(this.weightSigmaTextBox_TextChanged);
+      this.weightInitializationSigmaTextBox.TextChanged += new System.EventHandler(this.weightSigmaTextBox_TextChanged);
       // 
       // mutationGroupBox
@@ -143,8 +143,8 @@
       this.mutationGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.mutationGroupBox.Controls.Add(this.stdDevWeightChangeLabel);
-      this.mutationGroupBox.Controls.Add(this.weightChangeSigmaTextBox);
-      this.mutationGroupBox.Controls.Add(this.meanWeightChangeLabel);
-      this.mutationGroupBox.Controls.Add(this.weightChangeMuTextBox);
+      this.mutationGroupBox.Controls.Add(this.multiplicativeWeightChangeLabel);
+      this.mutationGroupBox.Controls.Add(this.multiplicativeWeightChangeSigmaTextBox);
+      this.mutationGroupBox.Controls.Add(this.additiveWeightChangeLabel);
+      this.mutationGroupBox.Controls.Add(this.additiveWeightChangeSigmaTextBox);
       this.mutationGroupBox.Location = new System.Drawing.Point(3, 158);
       this.mutationGroupBox.Name = "mutationGroupBox";
@@ -154,49 +154,49 @@
       this.mutationGroupBox.Text = "Mutation";
       // 
-      // stdDevWeightChangeLabel
-      // 
-      this.stdDevWeightChangeLabel.AutoSize = true;
-      this.stdDevWeightChangeLabel.Location = new System.Drawing.Point(6, 48);
-      this.stdDevWeightChangeLabel.Name = "stdDevWeightChangeLabel";
-      this.stdDevWeightChangeLabel.Size = new System.Drawing.Size(119, 13);
-      this.stdDevWeightChangeLabel.TabIndex = 8;
-      this.stdDevWeightChangeLabel.Text = "Weight change (sigma):";
-      this.toolTip.SetToolTip(this.stdDevWeightChangeLabel, "The sigma parameter for the normal distribution to use to sample the change in we" +
-              "ight.");
-      // 
-      // weightChangeSigmaTextBox
-      // 
-      this.weightChangeSigmaTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.weightChangeSigmaTextBox.Location = new System.Drawing.Point(131, 45);
-      this.weightChangeSigmaTextBox.Name = "weightChangeSigmaTextBox";
-      this.weightChangeSigmaTextBox.Size = new System.Drawing.Size(162, 20);
-      this.weightChangeSigmaTextBox.TabIndex = 9;
-      this.toolTip.SetToolTip(this.weightChangeSigmaTextBox, "The sigma parameter for the normal distribution to use to sample the change in we" +
-              "ight.");
-      this.weightChangeSigmaTextBox.TextChanged += new System.EventHandler(this.weightChangeSigmaTextBox_TextChanged);
-      // 
-      // meanWeightChangeLabel
-      // 
-      this.meanWeightChangeLabel.AutoSize = true;
-      this.meanWeightChangeLabel.Location = new System.Drawing.Point(6, 22);
-      this.meanWeightChangeLabel.Name = "meanWeightChangeLabel";
-      this.meanWeightChangeLabel.Size = new System.Drawing.Size(106, 13);
-      this.meanWeightChangeLabel.TabIndex = 6;
-      this.meanWeightChangeLabel.Text = "Weight change (mu):";
-      this.toolTip.SetToolTip(this.meanWeightChangeLabel, "The nu (mean) parameter for the normal distribution to sample the change in weigh" +
-              "t.");
-      // 
-      // weightChangeMuTextBox
-      // 
-      this.weightChangeMuTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.weightChangeMuTextBox.Location = new System.Drawing.Point(131, 19);
-      this.weightChangeMuTextBox.Name = "weightChangeMuTextBox";
-      this.weightChangeMuTextBox.Size = new System.Drawing.Size(162, 20);
-      this.weightChangeMuTextBox.TabIndex = 7;
-      this.toolTip.SetToolTip(this.weightChangeMuTextBox, "The mu (mean) parameter for the normal distribution to sample the change in weigh" +
-              "t.");
-      this.weightChangeMuTextBox.TextChanged += new System.EventHandler(this.weightChangeMuTextBox_TextChanged);
+      // multiplicativeWeightChangeLabel
+      // 
+      this.multiplicativeWeightChangeLabel.AutoSize = true;
+      this.multiplicativeWeightChangeLabel.Location = new System.Drawing.Point(6, 48);
+      this.multiplicativeWeightChangeLabel.Name = "multiplicativeWeightChangeLabel";
+      this.multiplicativeWeightChangeLabel.Size = new System.Drawing.Size(180, 13);
+      this.multiplicativeWeightChangeLabel.TabIndex = 8;
+      this.multiplicativeWeightChangeLabel.Text = "Multiplicative weight change (sigma):";
+      this.toolTip.SetToolTip(this.multiplicativeWeightChangeLabel, "The sigma parameter for the normal distribution to use to sample a multiplicative" +
+              " change in weight.");
+      // 
+      // multiplicativeWeightChangeSigmaTextBox
+      // 
+      this.multiplicativeWeightChangeSigmaTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.multiplicativeWeightChangeSigmaTextBox.Location = new System.Drawing.Point(201, 45);
+      this.multiplicativeWeightChangeSigmaTextBox.Name = "multiplicativeWeightChangeSigmaTextBox";
+      this.multiplicativeWeightChangeSigmaTextBox.Size = new System.Drawing.Size(113, 20);
+      this.multiplicativeWeightChangeSigmaTextBox.TabIndex = 9;
+      this.toolTip.SetToolTip(this.multiplicativeWeightChangeSigmaTextBox, "The sigma (std.dev.) parameter for the normal distribution to sample a multiplica" +
+              "tive change in weight.");
+      this.multiplicativeWeightChangeSigmaTextBox.TextChanged += new System.EventHandler(this.multiplicativeWeightChangeSigmaTextBox_TextChanged);
+      // 
+      // additiveWeightChangeLabel
+      // 
+      this.additiveWeightChangeLabel.AutoSize = true;
+      this.additiveWeightChangeLabel.Location = new System.Drawing.Point(6, 22);
+      this.additiveWeightChangeLabel.Name = "additiveWeightChangeLabel";
+      this.additiveWeightChangeLabel.Size = new System.Drawing.Size(157, 13);
+      this.additiveWeightChangeLabel.TabIndex = 6;
+      this.additiveWeightChangeLabel.Text = "Additive weight change (sigma):";
+      this.toolTip.SetToolTip(this.additiveWeightChangeLabel, "The sigma (std.dev.) parameter for the normal distribution to sample an additive " +
+              "change in weight.");
+      // 
+      // additiveWeightChangeSigmaTextBox
+      // 
+      this.additiveWeightChangeSigmaTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.additiveWeightChangeSigmaTextBox.Location = new System.Drawing.Point(201, 19);
+      this.additiveWeightChangeSigmaTextBox.Name = "additiveWeightChangeSigmaTextBox";
+      this.additiveWeightChangeSigmaTextBox.Size = new System.Drawing.Size(113, 20);
+      this.additiveWeightChangeSigmaTextBox.TabIndex = 7;
+      this.toolTip.SetToolTip(this.additiveWeightChangeSigmaTextBox, "The sigma (std.dev.) parameter for the normal distribution to sample an additive " +
+              "change in weight.");
+      this.additiveWeightChangeSigmaTextBox.TextChanged += new System.EventHandler(this.additiveWeightChangeSigmaTextBox_TextChanged);
       // 
       // VariableView
@@ -229,13 +229,13 @@
 
     private System.Windows.Forms.Label weightMuLabel;
-    private System.Windows.Forms.TextBox weightMuTextBox;
+    private System.Windows.Forms.TextBox weightInitializationMuTextBox;
     protected System.Windows.Forms.GroupBox initializationGroupBox;
     private System.Windows.Forms.Label weightSigmaLabel;
-    private System.Windows.Forms.TextBox weightSigmaTextBox;
+    private System.Windows.Forms.TextBox weightInitializationSigmaTextBox;
     protected System.Windows.Forms.GroupBox mutationGroupBox;
-    private System.Windows.Forms.Label stdDevWeightChangeLabel;
-    private System.Windows.Forms.TextBox weightChangeSigmaTextBox;
-    private System.Windows.Forms.Label meanWeightChangeLabel;
-    private System.Windows.Forms.TextBox weightChangeMuTextBox;
+    private System.Windows.Forms.Label multiplicativeWeightChangeLabel;
+    private System.Windows.Forms.TextBox multiplicativeWeightChangeSigmaTextBox;
+    private System.Windows.Forms.Label additiveWeightChangeLabel;
+    private System.Windows.Forms.TextBox additiveWeightChangeSigmaTextBox;
 
   }
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/VariableView.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/VariableView.cs	(revision 5324)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis.Views/3.3/Symbolic/Symbols/VariableView.cs	(revision 5326)
@@ -57,12 +57,12 @@
     protected override void SetEnabledStateOfControls() {
       base.SetEnabledStateOfControls();
-      weightMuTextBox.Enabled = Content != null;
-      weightMuTextBox.ReadOnly = ReadOnly;
-      weightSigmaTextBox.Enabled = Content != null;
-      weightSigmaTextBox.ReadOnly = ReadOnly;
-      weightChangeMuTextBox.Enabled = Content != null;
-      weightChangeMuTextBox.ReadOnly = ReadOnly;
-      weightChangeSigmaTextBox.Enabled = Content != null;
-      weightChangeSigmaTextBox.ReadOnly = ReadOnly;
+      weightInitializationMuTextBox.Enabled = Content != null;
+      weightInitializationMuTextBox.ReadOnly = ReadOnly;
+      weightInitializationSigmaTextBox.Enabled = Content != null;
+      weightInitializationSigmaTextBox.ReadOnly = ReadOnly;
+      additiveWeightChangeSigmaTextBox.Enabled = Content != null;
+      additiveWeightChangeSigmaTextBox.ReadOnly = ReadOnly;
+      multiplicativeWeightChangeSigmaTextBox.Enabled = Content != null;
+      multiplicativeWeightChangeSigmaTextBox.ReadOnly = ReadOnly;
     }
 
@@ -76,38 +76,38 @@
     private void weightMuTextBox_TextChanged(object sender, EventArgs e) {
       double nu;
-      if (double.TryParse(weightMuTextBox.Text, out nu)) {
+      if (double.TryParse(weightInitializationMuTextBox.Text, out nu)) {
         Content.WeightMu = nu;
-        errorProvider.SetError(weightMuTextBox, string.Empty);
+        errorProvider.SetError(weightInitializationMuTextBox, string.Empty);
       } else {
-        errorProvider.SetError(weightMuTextBox, "Invalid value");
+        errorProvider.SetError(weightInitializationMuTextBox, "Invalid value");
       }
     }
     private void weightSigmaTextBox_TextChanged(object sender, EventArgs e) {
       double sigma;
-      if (double.TryParse(weightSigmaTextBox.Text, out sigma) && sigma >= 0.0) {
+      if (double.TryParse(weightInitializationSigmaTextBox.Text, out sigma) && sigma >= 0.0) {
         Content.WeightSigma = sigma;
-        errorProvider.SetError(weightSigmaTextBox, string.Empty);
+        errorProvider.SetError(weightInitializationSigmaTextBox, string.Empty);
       } else {
-        errorProvider.SetError(weightSigmaTextBox, "Invalid value");
+        errorProvider.SetError(weightInitializationSigmaTextBox, "Invalid value");
       }
     }
 
-    private void weightChangeMuTextBox_TextChanged(object sender, EventArgs e) {
-      double nu;
-      if (double.TryParse(weightChangeMuTextBox.Text, out nu)) {
-        Content.WeightManipulatorMu = nu;
-        errorProvider.SetError(weightChangeMuTextBox, string.Empty);
+    private void additiveWeightChangeSigmaTextBox_TextChanged(object sender, EventArgs e) {
+      double sigma;
+      if (double.TryParse(additiveWeightChangeSigmaTextBox.Text, out sigma) && sigma >= 0.0) {
+        Content.WeightManipulatorSigma = sigma;
+        errorProvider.SetError(additiveWeightChangeSigmaTextBox, string.Empty);
       } else {
-        errorProvider.SetError(weightChangeMuTextBox, "Invalid value");
+        errorProvider.SetError(additiveWeightChangeSigmaTextBox, "Invalid value");
       }
     }
 
-    private void weightChangeSigmaTextBox_TextChanged(object sender, EventArgs e) {
+    private void multiplicativeWeightChangeSigmaTextBox_TextChanged(object sender, EventArgs e) {
       double sigma;
-      if (double.TryParse(weightChangeSigmaTextBox.Text, out sigma) && sigma >= 0.0) {
-        Content.WeightManipulatorSigma = sigma;
-        errorProvider.SetError(weightChangeSigmaTextBox, string.Empty);
+      if (double.TryParse(multiplicativeWeightChangeSigmaTextBox.Text, out sigma) && sigma >= 0.0) {
+        Content.MultiplicativeWeightManipulatorSigma = sigma;
+        errorProvider.SetError(multiplicativeWeightChangeSigmaTextBox, string.Empty);
       } else {
-        errorProvider.SetError(weightChangeSigmaTextBox, "Invalid value");
+        errorProvider.SetError(multiplicativeWeightChangeSigmaTextBox, "Invalid value");
       }
     }
@@ -117,13 +117,13 @@
     private void UpdateControl() {
       if (Content == null) {
-        weightMuTextBox.Text = string.Empty;
-        weightSigmaTextBox.Text = string.Empty;
-        weightMuTextBox.Text = string.Empty;
-        weightChangeSigmaTextBox.Text = string.Empty;
+        weightInitializationMuTextBox.Text = string.Empty;
+        weightInitializationSigmaTextBox.Text = string.Empty;
+        additiveWeightChangeSigmaTextBox.Text = string.Empty;
+        multiplicativeWeightChangeSigmaTextBox.Text = string.Empty;
       } else {
-        weightMuTextBox.Text = Content.WeightMu.ToString();
-        weightSigmaTextBox.Text = Content.WeightSigma.ToString();
-        weightChangeMuTextBox.Text = Content.WeightManipulatorMu.ToString();
-        weightChangeSigmaTextBox.Text = Content.WeightManipulatorSigma.ToString();
+        weightInitializationMuTextBox.Text = Content.WeightMu.ToString();
+        weightInitializationSigmaTextBox.Text = Content.WeightSigma.ToString();
+        additiveWeightChangeSigmaTextBox.Text = Content.WeightManipulatorSigma.ToString();
+        multiplicativeWeightChangeSigmaTextBox.Text = Content.MultiplicativeWeightManipulatorSigma.ToString();
       }
       SetEnabledStateOfControls();
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Constant.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Constant.cs	(revision 5324)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Constant.cs	(revision 5326)
@@ -30,5 +30,5 @@
   [Item("Constant", "Represents a constant value.")]
   public sealed class Constant : Symbol {
-    #region Propeties
+    #region Properties
     [Storable]
     private double minValue;
@@ -76,4 +76,17 @@
       }
     }
+    [Storable(DefaultValue = 0.0)]
+    private double multiplicativeManipulatorSigma;
+    public double MultiplicativeManipulatorSigma {
+      get { return multiplicativeManipulatorSigma; }
+      set {
+        if (value < 0) throw new ArgumentException();
+        if (value != multiplicativeManipulatorSigma) {
+          multiplicativeManipulatorSigma = value;
+          OnChanged(EventArgs.Empty);
+        }
+      }
+    }
+
     #endregion
     [StorableConstructor]
@@ -85,4 +98,5 @@
       manipulatorMu = original.manipulatorMu;
       manipulatorSigma = original.manipulatorSigma;
+      multiplicativeManipulatorSigma = original.multiplicativeManipulatorSigma;
     }
     public Constant()
@@ -90,4 +104,5 @@
       manipulatorMu = 0.0;
       manipulatorSigma = 1.0;
+      multiplicativeManipulatorSigma = 0.03;
       minValue = -20.0;
       maxValue = 20.0;
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/ConstantTreeNode.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/ConstantTreeNode.cs	(revision 5324)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/ConstantTreeNode.cs	(revision 5326)
@@ -63,6 +63,12 @@
     public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
       base.ShakeLocalParameters(random, shakingFactor);
-      double x = NormalDistributedRandom.NextDouble(random, Symbol.ManipulatorMu, Symbol.ManipulatorSigma);
-      Value = Value + x * shakingFactor;
+      // 50% additive & 50% multiplicative
+      if (random.NextDouble() < 0.5) {
+        double x = NormalDistributedRandom.NextDouble(random, Symbol.ManipulatorMu, Symbol.ManipulatorSigma);
+        Value = Value + x * shakingFactor;
+      } else {
+        double x = NormalDistributedRandom.NextDouble(random, 1.0, Symbol.MultiplicativeManipulatorSigma);
+        Value = Value * x;
+      }
     }
 
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Variable.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Variable.cs	(revision 5324)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/Variable.cs	(revision 5326)
@@ -78,4 +78,16 @@
       }
     }
+    [Storable(DefaultValue = 0.0)]
+    private double multiplicativeWeightManipulatorSigma;
+    public double MultiplicativeWeightManipulatorSigma {
+      get { return multiplicativeWeightManipulatorSigma; }
+      set {
+        if (multiplicativeWeightManipulatorSigma < 0.0) throw new ArgumentException("Negative sigma is not allowed.");
+        if (value != multiplicativeWeightManipulatorSigma) {
+          multiplicativeWeightManipulatorSigma = value;
+          OnChanged(EventArgs.Empty);
+        }
+      }
+    }
     private List<string> variableNames;
     [Storable]
@@ -91,5 +103,6 @@
     #endregion
     [StorableConstructor]
-    protected Variable(bool deserializing) : base(deserializing) {
+    protected Variable(bool deserializing)
+      : base(deserializing) {
       variableNames = new List<string>();
     }
@@ -101,4 +114,5 @@
       weightManipulatorMu = original.weightManipulatorMu;
       weightManipulatorSigma = original.weightManipulatorSigma;
+      multiplicativeWeightManipulatorSigma = original.multiplicativeWeightManipulatorSigma;
     }
     public Variable() : this("Variable", "Represents a variable value.") { }
@@ -109,4 +123,5 @@
       weightManipulatorMu = 0.0;
       weightManipulatorSigma = 1.0;
+      multiplicativeWeightManipulatorSigma = 0.03;
       variableNames = new List<string>();
     }
Index: trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableTreeNode.cs
===================================================================
--- trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableTreeNode.cs	(revision 5324)
+++ trunk/sources/HeuristicLab.Problems.DataAnalysis/3.3/Symbolic/Symbols/VariableTreeNode.cs	(revision 5326)
@@ -68,6 +68,12 @@
     public override void ShakeLocalParameters(IRandom random, double shakingFactor) {
       base.ShakeLocalParameters(random, shakingFactor);
-      double x = NormalDistributedRandom.NextDouble(random, Symbol.WeightManipulatorMu, Symbol.WeightManipulatorSigma);
-      weight = weight + x * shakingFactor;
+      // 50% additive & 50% multiplicative
+      if (random.NextDouble() < 0) {
+        double x = NormalDistributedRandom.NextDouble(random, Symbol.WeightManipulatorMu, Symbol.WeightManipulatorSigma);
+        weight = weight + x * shakingFactor;
+      } else {        
+        double x = NormalDistributedRandom.NextDouble(random, 1.0, Symbol.MultiplicativeWeightManipulatorSigma);
+        weight = weight * x;
+      }
       variableName = Symbol.VariableNames.SelectRandom(random);
     }
