Index: /trunk/sources/HeuristicLab.Analysis/3.3/MultiAnalyzer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Analysis/3.3/MultiAnalyzer.cs	(revision 5079)
+++ /trunk/sources/HeuristicLab.Analysis/3.3/MultiAnalyzer.cs	(revision 5080)
@@ -35,5 +35,5 @@
   [Item("MultiAnalyzer", "An analyzer which applies arbitrary many other analyzers.")]
   [StorableClass]
-  public class MultiAnalyzer : CheckedMultiOperator<IAnalyzer>, IAnalyzer {
+  public class MultiAnalyzer : CheckedMultiOperator<IAnalyzer>, IMultiAnalyzer {
     public override bool CanChangeName {
       get { return false; }
Index: /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 5079)
+++ /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 5080)
@@ -143,4 +143,5 @@
     <Compile Include="Constraints\IConstraint.cs" />
     <Compile Include="Constraints\TypeCompatibilityConstraint.cs" />
+    <Compile Include="Interfaces\IMultiOperator.cs" />
     <Compile Include="OperatorExecutionException.cs" />
     <Compile Include="Interfaces\IScopeTreeLookupParameter.cs" />
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IMultiOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IMultiOperator.cs	(revision 5080)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IMultiOperator.cs	(revision 5080)
@@ -0,0 +1,27 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+
+namespace HeuristicLab.Core {
+  public interface IMultiOperator<T> : IOperator where T : class,IOperator {
+    IItemList<T> Operators { get; }
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators/3.3/MultiOperator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/MultiOperator.cs	(revision 5079)
+++ /trunk/sources/HeuristicLab.Operators/3.3/MultiOperator.cs	(revision 5080)
@@ -34,5 +34,5 @@
   [Item("MultiOperator", "A base class for operators which apply arbitrary many other operators of a specific type.")]
   [StorableClass]
-  public abstract class MultiOperator<T> : SingleSuccessorOperator where T : class, IOperator {
+  public abstract class MultiOperator<T> : SingleSuccessorOperator, IMultiOperator<T> where T : class, IOperator {
     private List<IValueParameter<T>> operatorParameters;
 
@@ -68,5 +68,5 @@
       Initialize();
     }
-    
+
     private void Initialize() {
       if (operators != null) RegisterOperatorsEvents();
Index: /trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj	(revision 5079)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/HeuristicLab.Optimization-3.3.csproj	(revision 5080)
@@ -112,4 +112,5 @@
     <Compile Include="Algorithm.cs" />
     <Compile Include="BatchRun.cs" />
+    <Compile Include="Interfaces\IMultiAnalyzer.cs" />
     <Compile Include="Interfaces\IIterationBasedOperator.cs" />
     <Compile Include="Interfaces\IRealVectorDecoder.cs" />
Index: /trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/IMultiAnalyzer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/IMultiAnalyzer.cs	(revision 5080)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/Interfaces/IMultiAnalyzer.cs	(revision 5080)
@@ -0,0 +1,29 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+
+using HeuristicLab.Core;
+namespace HeuristicLab.Optimization {
+  /// <summary>
+  /// An interface which represents an multi analysis operator.
+  /// </summary>
+  public interface IMultiAnalyzer : IMultiOperator<IAnalyzer>, IAnalyzer { }
+}
Index: /trunk/sources/HeuristicLab.Optimization/3.3/UserDefinedAlgorithm.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/UserDefinedAlgorithm.cs	(revision 5079)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/UserDefinedAlgorithm.cs	(revision 5080)
@@ -20,4 +20,5 @@
 #endregion
 
+using System.Linq;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
@@ -50,4 +51,15 @@
     }
 
+    private IValueParameter AnalyzerParameter {
+      get { return (IValueParameter)Parameters["Analyzer"]; }
+    }
+    private IMultiAnalyzer Analyzer {
+      get {
+        if (AnalyzerParameter != null)
+          return AnalyzerParameter.Value as IMultiAnalyzer;
+        return null;
+      }
+    }
+
     public UserDefinedAlgorithm() : base() { }
     public UserDefinedAlgorithm(string name) : base(name) { }
@@ -64,4 +76,35 @@
       return new UserDefinedAlgorithm(this, cloner);
     }
+
+    #region update of problem specific analyzers
+    protected override void OnProblemChanged() {
+      AddProblemAnalyzer();
+      base.OnProblemChanged();
+    }
+    protected override void Problem_OperatorsChanged(object sender, System.EventArgs e) {
+      RemoveProblemAnalyzers();
+      AddProblemAnalyzer();
+      base.Problem_OperatorsChanged(sender, e);
+    }
+
+    protected override void DeregisterProblemEvents() {
+      RemoveProblemAnalyzers();
+      base.DeregisterProblemEvents();
+    }
+
+    private void RemoveProblemAnalyzers() {
+      if (Analyzer != null) {
+        foreach (var analyzer in Problem.Operators.OfType<IAnalyzer>())
+          Analyzer.Operators.Remove(analyzer);
+      }
+    }
+    private void AddProblemAnalyzer() {
+      if (Analyzer != null && Problem != null) {
+        foreach (IAnalyzer analyzer in Problem.Operators.OfType<IAnalyzer>()) {
+          Analyzer.Operators.Add(analyzer);
+        }
+      }
+    }
+    #endregion
   }
 }
