Index: trunk/sources/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingMainLoop.cs
===================================================================
--- trunk/sources/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingMainLoop.cs	(revision 3093)
+++ trunk/sources/HeuristicLab.Algorithms.SimulatedAnnealing/3.3/SimulatedAnnealingMainLoop.cs	(revision 3094)
@@ -95,6 +95,6 @@
       Parameters.Add(new LookupParameter<DoubleValue>("Quality", "The value which represents the quality of a solution."));
       Parameters.Add(new LookupParameter<DoubleValue>("MoveQuality", "The value which represents the quality of a move."));
-      Parameters.Add(new LookupParameter<DoubleValue>("StartTemperature", "The initial temperature."));
-      Parameters.Add(new LookupParameter<DoubleValue>("EndTemperature", "The end temperature."));
+      Parameters.Add(new ValueLookupParameter<DoubleValue>("StartTemperature", "The initial temperature."));
+      Parameters.Add(new ValueLookupParameter<DoubleValue>("EndTemperature", "The end temperature."));
       Parameters.Add(new ValueLookupParameter<IntValue>("MaximumIterations", "The maximum number of iterations which should be processed."));
       Parameters.Add(new ValueLookupParameter<VariableCollection>("Results", "The variable collection where results should be stored."));
@@ -109,7 +109,96 @@
 
       #region Create operators
+      VariableCreator variableCreator = new VariableCreator();
+      BestQualityMemorizer initializeBestQuality = new BestQualityMemorizer();
+      SequentialSubScopesProcessor sssp = new SequentialSubScopesProcessor();
+      ResultsCollector resultsCollector = new ResultsCollector();
+      BestQualityMemorizer bestQualityMemorizer = new BestQualityMemorizer();
+      Placeholder annealingOperator = new Placeholder();
+      UniformSequentialSubScopesProcessor mainProcessor = new UniformSequentialSubScopesProcessor();
+      Placeholder moveGenerator = new Placeholder();
+      SequentialSubScopesProcessor moveEvaluationProcessor = new SequentialSubScopesProcessor();
+      Placeholder moveEvaluator = new Placeholder();
+      ProbabilisticQualityComparator qualityComparator = new ProbabilisticQualityComparator();
+      ConditionalBranch improvesQualityBranch = new ConditionalBranch();
+      Placeholder moveMaker = new Placeholder();
+      SubScopesRemover subScopesRemover = new SubScopesRemover();
+      DataTableValuesCollector valuesCollector = new DataTableValuesCollector();
+      IntCounter iterationsCounter = new IntCounter();
+      Comparator iterationsComparator = new Comparator();
+      ConditionalBranch iterationsTermination = new ConditionalBranch();
+      EmptyOperator finished = new EmptyOperator();
+
+      variableCreator.CollectedValues.Add(new ValueParameter<IntValue>("Iterations", new IntValue(0)));
+      variableCreator.CollectedValues.Add(new ValueParameter<DataTable>("Qualities", new DataTable("Qualities")));
+      variableCreator.CollectedValues.Add(new ValueParameter<DoubleValue>("Temperature", new DoubleValue(double.MaxValue)));
+
+      resultsCollector.CollectedValues.Add(new LookupParameter<IntValue>("Iterations"));
+      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Quality"));
+      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Best Quality") { ActualName = "BestQuality" });
+      resultsCollector.CollectedValues.Add(new LookupParameter<DataTable>("Qualities"));
+      resultsCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Temperature"));
+
+      annealingOperator.Name = "Annealing operator (placeholder)";
+      annealingOperator.OperatorParameter.ActualName = "AnnealingOperator";
+
+      moveGenerator.Name = "Move generator (placeholder)";
+      moveGenerator.OperatorParameter.ActualName = "MoveGenerator";
+
+      moveEvaluator.Name = "Move evaluator (placeholder)";
+      moveEvaluator.OperatorParameter.ActualName = "MoveEvaluator";
+
+      qualityComparator.LeftSideParameter.ActualName = "MoveQuality";
+      qualityComparator.RightSideParameter.ActualName = "Quality";
+      qualityComparator.ResultParameter.ActualName = "IsBetter";
+      qualityComparator.DampeningParameter.ActualName = "Temperature";
+
+      improvesQualityBranch.ConditionParameter.ActualName = "IsBetter";
+
+      moveMaker.Name = "Move maker (placeholder)";
+      moveMaker.OperatorParameter.ActualName = "MoveMaker";
+
+      subScopesRemover.RemoveAllSubScopes = true;
+
+      valuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("Quality"));
+      valuesCollector.CollectedValues.Add(new LookupParameter<DoubleValue>("BestQuality"));
+      valuesCollector.DataTableParameter.ActualName = "Qualities";
+
+      iterationsCounter.Name = "Increment Iterations";
+      iterationsCounter.Increment = new IntValue(1);
+      iterationsCounter.ValueParameter.ActualName = "Iterations";
+
+      iterationsComparator.Name = "Iterations >= MaximumIterations";
+      iterationsComparator.LeftSideParameter.ActualName = "Iterations";
+      iterationsComparator.RightSideParameter.ActualName = "MaximumIterations";
+      iterationsComparator.ResultParameter.ActualName = "IterationsCondition";
+      iterationsComparator.Comparison.Value = ComparisonType.GreaterOrEqual;
+
+      iterationsTermination.Name = "Iterations termination condition";
+      iterationsTermination.ConditionParameter.ActualName = "IterationsCondition";
+
+      finished.Name = "Finished";
       #endregion
 
       #region Create operator graph
+      OperatorGraph.InitialOperator = variableCreator;
+      variableCreator.Successor = initializeBestQuality;
+      initializeBestQuality.Successor = sssp;
+      sssp.Operators.Add(resultsCollector);
+      sssp.Successor = bestQualityMemorizer;
+      bestQualityMemorizer.Successor = annealingOperator;
+      annealingOperator.Successor = mainProcessor;
+      mainProcessor.Operator = moveGenerator;
+      mainProcessor.Successor = valuesCollector;
+      moveGenerator.Successor = moveEvaluationProcessor;
+      moveEvaluationProcessor.Operators.Add(moveEvaluator);
+      moveEvaluationProcessor.Successor = subScopesRemover;
+      moveEvaluator.Successor = qualityComparator;
+      qualityComparator.Successor = improvesQualityBranch;
+      improvesQualityBranch.TrueBranch = moveMaker;
+      valuesCollector.Successor = iterationsCounter;
+      iterationsCounter.Successor = iterationsComparator;
+      iterationsComparator.Successor = iterationsTermination;
+      iterationsTermination.TrueBranch = finished;
+      iterationsTermination.FalseBranch = bestQualityMemorizer;
       #endregion
     }
